ドキュメントのセクション
認証
計算ツールの呼び出しには、どのプランでも API キーが必要です。無料のキーは費用がかかりません。計算ツールのルート、ジョブのルート、使用状況のエンドポイントは、どちらのヘッダーでもキーを受け付けます。
キーは rfc_ で始まります。キーが表示されるのは作成時の一度だけで、二度と表示されません。保存されるのはハッシュだけです。
キーを送信する
キーは X-API-Key ヘッダー、または Authorization: Bearer rfc_… として送信します。キーのないリクエストは 401 で拒否され、keyUrl が返されます。発行されていないキーや失効したキーも 401 で拒否されます。401 が利用枠に関するものであることはありません。利用枠を使い切った場合は 402 です(エラーをご覧ください)。
利用枠はアカウントに属します
アカウントのすべてのキー(失効したキーを含む)の呼び出しは、1 つの月間の値に計上されます。この値は UTC で毎月の初めにリセットされ、各呼び出しは引き続き、それを行ったキーに記録されます。
| プラン | 月間の呼び出し回数とキー |
|---|---|
| Free | 月 5 回、API キー 1 個 |
| Pro | 月 100 回、API キー 3 個 |
| API | 月 10,000 回、API キー 5 個 |
キーを取得する
人はダッシュボードでキーを取得します。プログラムが利用者にキーを渡す方法は 2 つあり、どちらも通常の rfc_ キーになります。ほかのキーと同様に計上され、一覧に表示され、失効させることができます。
キーリンク
利用者のブラウザーで https://rftools.io/dashboard/?newKey=1&client=<clientId>[&label=<text>] を開きます。clientId はプログラムの名前で、^[a-z0-9][a-z0-9-]{1,39}$ に一致する必要があります(例:kicad-plugin)。一致しない値は拒否されず、無視されます。ログアウト中の利用者はログインまたは登録してから、同じリンクに戻ります。ダッシュボードではキー作成ダイアログがラベル入力済み(リンクで指定しない場合は <clientId> — <date>)で開き、利用者がプログラムに貼り付けられるようにキーを一度だけ表示します。
このダイアログは POST /api/py/v1/apikeys を呼び出します。ログイン中のセッションはこれを直接呼び出すこともでき、ボディは省略できます。キーの上限に達したアカウントは 400 で拒否され、先にキーを失効させるよう求められます。
デバイス認可(ブラウザーのないプログラム向け)
OAuth 2.0 デバイス認可グラント(RFC 8628)を使うと、利用者が何も貼り付けなくても、プログラム(プラグイン、CLI、ローカルの MCP サーバー)がキーを受け取れます。プログラムはコードを要求し、そのコードと https://rftools.io/device/ を利用者に示してから、ポーリングします。利用者はそこでログインし、プログラムが名乗った名前を確認して、承認または拒否します。承認されると、プログラムの次のポーリングでキーが一度だけ返されます。どちらのエンドポイントも JSON またはフォーム形式のボディを受け付けます。
- コードは
BCDFGHJKLMNPQRSTVWXZから選んだ 8 文字で、XXXX-XXXXの形で表示され、発行から 10 分で期限切れになります。 - ポーリングは
interval(最初は 5 秒)より速くしないでください。 - このキーはアカウントのキーの上限に数えられます。上限に達したアカウントは、先にキーを失効させるよう求められます。
- 利用者に見せるのはコードだけにしてください。
device_codeは交換されるまでプログラムの秘密情報です。 - Python ライブラリはこれらをすべて行います:
rftools loginまたはrftools.Client().login()。
待っている間、トークンのエンドポイントは RFC 8628 の error 付きで 400 を返します:
| error | 意味 |
|---|---|
| authorization_pending | 利用者がまだ判断していません。間隔を守ってポーリングを続けてください。 |
| slow_down | 間隔より速くポーリングしました。間隔が 5 秒延び、ボディに新しい間隔が入ります。 |
| access_denied | 利用者がコードを拒否したか、キーを受け取る前にアカウントがキーの上限に達しました。ポーリングを止めてください。 |
| expired_token | コードの有効期限が切れた(発行から 10 分)か、そのキーはすでに受け取られています。最初からやり直してください。 |
| invalid_grant | デバイスコードが別の client_id に対して発行されています。 |
| invalid_request / unsupported_grant_type | パラメーターが欠けているか、grant_type が正しくありません。 |
デバイス認可のエンドポイントは、何を送っても、認証情報なしのレート制限が適用されます。