SciFig

API 參考文件

檔案

上傳輸入檔案並下載輸出結果。

上傳#

POST /files 接受 multipart/form-data,需要 figures:generate 權限範圍。成功回傳 201,包含 file_id、purpose、content_type、size_bytes、expires_at 和 created_at。

欄位類型必填預設值規則
filefile是—參閱下方用途限制
purposestring否imageimage、mask 或 flowchart_attachment
用途支援的輸入使用場景
imagePNG、JPEG 或 WebP,最大 20 MB(按內容校驗,而非檔名)編輯、文字識別、放大、轉換、參考圖片
mask最大 8 MB 的 PNG;白色標記需要重繪的區域POST /images/edits
flowchart_attachmentFlowChart 工作臺支援的格式,最大 32 MBPOST /flowcharts/generations

上傳檔案可使用 24 小時;之後 file_id 不再有效(400 INVALID_REQUEST、FILE_NOT_FOUND)。它們僅作為輸入,不會出現在任務響應中,也不會與任何人共享。

上傳與網站共享上傳限制。超出限制時,回傳 429 RATE_LIMITED,包含 Retry-After 和 details.reason:每分鐘限制為 UPLOAD_RATE_LIMITED,每日限制為 UPLOAD_DAILY_LIMIT_REACHED(流程圖附件)。

上傳可選帶 Idempotency-Key 請求標頭(1–255 個可見 ASCII 字元)。相同帳戶、金鑰和 purpose 始終對應同一個 file_id:重複請求以 201 回傳首個檔案,不會再次上傳或佔用上傳額度。相同金鑰和 purpose 搭配不同位元組會回傳 409 IDEMPOTENCY_CONFLICT。未傳送此請求標頭時,每次上傳均建立新檔案。若檔案已到期,重放請求回傳 400 INVALID_REQUEST 和 details.reason = FILE_EXPIRED;請換新金鑰重新上傳。

下載#

每個任務輸出都有一個無需憑證、有效期一小時的 download_url;重新讀取任務即可獲得新連結。攜帶憑證呼叫 GET /files/{file_id} 可下載你的任意檔案。所有檔案均以附件形式提供。

簽名 download_url 到期或被篡改時回傳 404 NOT_FOUND;帳戶被封禁或正在刪除時,其所有下載連結也會以相同方式失效。

輸出可傳給
PNG 或 JPEG所有圖片端點(編輯、文字識別、放大、轉換、參考圖片)
WebP編輯、文字識別、放大、SVG 向量化和參考圖片;不適用於 PNG、PDF、TIFF 或 PPTX 轉換
流程圖 SVG透過 POST /images/conversions 轉換為 PNG、PDF、TIFF 或 PPTX
PDF、TIFF、EPS、PPTX、其他 SVG均不可:只能下載

轉換原始檔大於 20 MB 時(例如放大至 8K 的圖片),回傳 400 INVALID_REQUEST(FILE_TOO_LARGE)。

cURL#

curl -X POST https://scifig.ai/api/v1/files \
  -H "Authorization: Bearer $SCIFIG_API_KEY" \
  -F "file=@figure.png" \
  -F "purpose=image"

JavaScript#

import { readFile } from 'node:fs/promises';

const form = new FormData();
form.set('file', new Blob([await readFile('figure.png')]), 'figure.png');
form.set('purpose', 'image');

const response = await fetch('https://scifig.ai/api/v1/files', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SCIFIG_API_KEY}`,
  },
  body: form,
});
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.post(
    "https://scifig.ai/api/v1/files",
    headers=headers,
    files={"file": open("figure.png", "rb")},
    data={"purpose": "image"},
    timeout=60,
)
print(response.status_code, response.json())