API リファレンス
認証と冪等性
SciFig API の各呼び出しで使う認証情報、スコープ、Idempotency-Key、リクエスト ID。
Bearer 認証#
GET /pricing、GET /openapi.json、GET /openapi.yaml 以外の各リクエストに Authorization: Bearer <credential> を送信します。クエリパラメーターやその他のヘッダーに入れた認証情報は無視されます。
認証情報は Bearer 認証を使用します。DPoP に紐付けた認証情報はサポートしていません。
- API キーは
sk_live_で始まります。設定 → 開発者で作成すると、キーは一度だけ表示されます。サーバーに保管し、ブラウザーやモバイルアプリに組み込まないでください。有効期限の 7 日前にメールでお知らせします。 - OAuth アクセストークンは
sf_at_で始まります。クライアントを承認すると MCP クライアントに発行されます。設定 → 開発者 → 接続済みアプリからクライアントの接続を解除できます。 - 認証情報が未指定、無効、期限切れ、または失効済みの場合は
401 UNAUTHORIZEDを返します。API を利用できないアカウント(削除処理中など)は401 ACCOUNT_UNAVAILABLEを返します。 - キーを失効させると、そのキーによる新しいリクエストは停止します。作成済みのジョブは引き続き実行され、同じアカウントの別の認証情報で読み取れます。
スコープ#
| スコープ | 付与される権限 | API キーの種類 |
|---|---|---|
| figures:read | GET /jobs, GET /jobs/{id}, GET /files/{file_id}, GET /credits | 読み取り専用キー。有効期限なしも設定可能 |
| figures:generate | figures:read のすべての権限と、すべての POST エンドポイント | 生成用キー。有効期間は 30 日、90 日、1 年。有効なサブスクリプション、または残高が 0 を超えるクレジットパックが必要 |
認証情報のスコープ外のリクエストは 403 SCOPE_DENIED を返します。アプリケーションや環境ごとにキーを分けると、他に影響を与えずに個別のキーを失効できます。
冪等性#
- すべての作成リクエスト(
POST /images/*、/charts/*、/flowcharts/*)には、表示可能な ASCII 文字 1~255 文字のIdempotency-Keyヘッダーが必要です。リクエストごとにランダムな UUID を使うのが簡単です。POST /filesへのアップロードにも指定できます(ファイルを参照)。 - 同じキーと同じ本文で送信すると、同じジョブを返し、クレジットを再度確保することはありません。グラフのアップロードでは、データファイルのバイト列も本文に含まれます。
- 同じキーで本文が異なると
409 IDEMPOTENCY_CONFLICTを返します。同じキーの同時リクエストが 2 件のジョブを作成することはありません。それぞれが同じジョブを返すか、最初のリクエストの受け付け処理中はRetry-After: 1付きの409 IDEMPOTENCY_IN_PROGRESSを返します。 - タイムアウト、ネットワークエラー、
429、503の後は同じキーで再試行してください。ジョブの重複作成を確実に防ぐには、この方法が必要です。 - ジョブの作成後は、再試行可能なエラー(
429、503、409 IDEMPOTENCY_IN_PROGRESS)や500 INTERNAL_ERRORにdetails.job_idが含まれます。同じキーで再試行するか、GET /jobs/{job_id}でポーリングしてください。新しいキーに切り替えると、別のジョブが作成され、再び課金されます。受け付け済みのジョブを読み戻せなかった場合は、ステータスqueuedの202を返します。 - 拒否されたリクエスト(
402 INSUFFICIENT_CREDITSなど)は、そのキーに同じ応答を保持します。チャージやアップグレードの後は、新しいキーで再送してください。
OAuth クライアント#
- MCP クライアントは PKCE を伴う OAuth 2.1 を使用します。アクセストークン(
sf_at_…)は 1 時間有効です。offline_accessスコープを要求するクライアントには、30 日間有効なリフレッシュトークン(sf_rt_…)も発行され、接続を解除するまで接続を維持できます。offline_accessがなければ、アクセストークンの有効期限が切れたときに再ログインが必要です。 - リフレッシュトークンは更新のたびに新しく発行されます。使用済みのリフレッシュトークンを提示すると再使用と見なされ、そのトークンから発行されたトークンは失効し、クライアントは再ログインが必要になります。
- 動的クライアント登録の本文は最大 16 KB です。各フィールドの長さとリダイレクト URI の数にも制限があります。トークンエンドポイントの認証方式は、PKCE を使う公開クライアント向けの
none、またはclient_secret_basicです。 - 登録後、一度も承認されていないクライアントは 24 時間後に削除されます。
prompt=loginまたはmax_ageを伴う認可リクエストは、新たなログインを要求します。すでにログインしている場合は、SciFig が確認を求めてから、一度ログアウトして再ログインする流れに進みます。- OAuth 認証情報のレート制限はクライアントとアカウントごとに集計されるため、同じアシスタントを使う他のユーザーがあなたの制限枠を消費することはありません。
リクエスト ID#
すべてのレスポンスに X-Request-Id が付き、エラー本文には error.request_id として再掲されます。ほかの情報を開示せずにログ内のリクエストを特定できるため、ログへの記録やサポートへの連絡に安全に利用できます。