SciFig
無料で始める

API リファレンス

ジョブと待機時間の上限

ジョブのステータス、クレジット、出力を読み取り、ポーリングせずに完了を待てます。

Markdown で表示

ジョブの取得#

GET /jobs/{id}(スコープ figures:read)は作成リクエストと同じジョブオブジェクトを返します。他のアカウントのジョブや未知の ID は、どちらも 404 NOT_FOUND を返します。GET /jobs?limit=10&cursor=… は自分のジョブを新しい順に表示します(1 ページ 1~20 件。next_cursor で次へ進みます)。

{
  "id": "5f4a9a5e-fc45-4eae-9f9c-56b5f686cba5",
  "kind": "chart",
  "status": "succeeded",
  "created_at": "2026-10-14T11:20:05.000Z",
  "credits": { "reserved": 50, "charged": 50, "refunded": 0 },
  "outputs": [
    {
      "file_id": "0b7c…",
      "format": "png",
      "width": 2126,
      "height": 1417,
      "download_url": "https://scifig.ai/api/v1/files/0b7c…?exp=…&sig=…",
      "expires_at": "2026-10-14T12:21:40.000Z",
      "editor_url": "https://scifig.ai/app/datachart?conversation=…"
    }
  ],
  "error": null
}

kind は image_generation、image_edit、image_upscale、image_conversion、chart、flowchart のいずれかです。レスポンスにはプロンプト、入力、内部識別子は含まれません。

出力フィールドあり意味
file_idalways別のエンドポイント、または GET /files/{file_id} に渡す
formatalwayspng、svg、pdf など、出力の拡張子
width, heightPNG 出力ピクセルサイズ
download_url, expires_atalways署名付きリンク。有効期間 1 時間
editor_urlグラフとフローチャートのジョブウェブサイトのワークスペースで結果を開く。科学図表と変換にはなし

ステータスの遷移#

status意味
queued受け付け済み。実行枠を待機中
processing実行中
succeeded完了。outputs が利用可能で、クレジットは課金済み
failed結果なし。error.code が理由を示し、確保したクレジットは返還
canceled完了前に停止。返金済み
失敗したジョブの `error.code`意味対処方法
TASK_TIMED_OUTタスクがタイムアウトし、返金されました。科学図表の生成・編集には late_delivery_until が含まれる場合があり、その時刻までは無料で結果が届く可能性があります。late_delivery_until までジョブを読み続ける。それ以外は新しいキーで新しいリクエストを送信
CONTENT_REJECTEDタスクの実行中にコンテンツポリシーが結果を拒否しました。返金済みです。作成時にリクエスト自体が拒否された場合も、同じコードを 422 で返します。プロンプトまたは入力を変更し、新しいキーを使用
ADMISSION_INCOMPLETE再試行可能なエラーにより、ジョブは開始されませんでした。クレジットは使用していません。同じリクエストを同じ Idempotency-Key で送信
TASK_NOT_FOUNDジョブは受け付けられましたが、対応するタスクが見つからなくなりました。新しいキーで新しいリクエストを送信
TASK_FAILEDタスクが失敗し、返金されました。固有の公開コードがないエンジン障害はすべて TASK_FAILED になり、エンジンのコードは details.reason に含まれます。新しいキーで新しいリクエストを送信
INTERNAL_ERROR理由が報告されずにタスクが失敗しました。返金済みです。新しいキーで新しいリクエストを送信

succeeded、failed、canceled は最終状態ですが、例外があります。TASK_TIMED_OUT で失敗した科学図表の生成・編集には late_delivery_until が含まれます。その時刻までは結果が無料で届く可能性があり、ジョブは succeeded に変わります。新しいジョブを作成せず、引き続き読み取ってください。

一覧内のいずれかのジョブを読み取れない場合、GET /jobs は Retry-After: 3 付きの 503 SERVICE_UNAVAILABLE を返します。一覧の取得を再試行してください。そのジョブを失敗結果に置き換えることはありません。

待機時間の上限#

  • 作成リクエストに Prefer: wait=N(1~30)を指定すると、ジョブが最終状態になるか N 秒経過するまでレスポンスの送信を保留します。最終状態は 200、実行中は Location: /api/v1/jobs/{id} と Retry-After 付きの 202 を返します。
  • 待機してもジョブは変わりません。202 はエラーではなく、レスポンス後もジョブは実行を続けます。
  • GET /jobs/{id} のポーリング間隔は Retry-After(3 秒)以上にしてください。科学図表は通常 20~90 秒、グラフとフローチャートは 30~120 秒で完了します。
  • 失敗したジョブには、拒否されたリクエストも含まれます。402 INSUFFICIENT_CREDITS や 422 CONTENT_REJECTED などで拒否された作成リクエストは、そのコードとクレジット使用なしの failed ジョブとして GET /jobs に残ります。
  • サーバー連携では、待機前にジョブ ID を保存し、接続が切れても重複ジョブを作成しないようにしてください。

cURL#

curl https://scifig.ai/api/v1/jobs/<job_id> \
  -H "Authorization: Bearer $SCIFIG_API_KEY"

JavaScript#

const response = await fetch('https://scifig.ai/api/v1/jobs/<job_id>', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.SCIFIG_API_KEY}`,
  },
});
const result = await response.json();
console.log(response.status, result);

Python#

import os

import requests

headers = {
    "Authorization": f"Bearer {os.environ['SCIFIG_API_KEY']}",
}
response = requests.get(
    "https://scifig.ai/api/v1/jobs/<job_id>",
    headers=headers,
    timeout=60,
)
print(response.status_code, response.json())