SciFig
無料で始める

API リファレンス

ファイル

入力をアップロードし、出力をダウンロードします。

Markdown で表示

アップロード#

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 のいずれか
用途対応形式使用先
image最大 20 MB の PNG、JPEG、WebP(ファイル名ではなく内容を検証)編集、文字検出、高解像度化、変換、参照画像
mask最大 8 MB の PNG。白い部分が再描画する領域POST /images/edits
flowchart_attachmentFlowChart ワークスペース対応形式、最大 32 MBPOST /flowcharts/generations

アップロードしたファイルは 24 時間利用できます。その後は file_id が見つからなくなります(400 INVALID_REQUEST、FILE_NOT_FOUND)。入力専用のため、ジョブのレスポンスには表示されず、他の人に共有されることもありません。

アップロードにはウェブサイトと同じ制限が適用されます。超過すると、Retry-After と details.reason を伴う 429 RATE_LIMITED を返します。理由は、分ごとの制限では UPLOAD_RATE_LIMITED、日ごとのフローチャート添付制限では UPLOAD_DAILY_LIMIT_REACHED です。

アップロードには任意で Idempotency-Key ヘッダーを指定できます(表示可能な ASCII 文字 1~255 文字)。同じアカウント、キー、purpose は常に 1 つの file_id に対応します。再送すると、再アップロードや制限枠の消費なしに最初のファイルを 201 で返します。同じキーと purpose でバイト列が異なると 409 IDEMPOTENCY_CONFLICT を返します。ヘッダーを省略すると、毎回新しいファイルを作成します。元のアップロードの期限が切れている場合、再送は details.reason = FILE_EXPIRED 付きの 400 INVALID_REQUEST を返します。新しいキーで再アップロードしてください。

ダウンロード#

各ジョブの出力には、認証情報なしで 1 時間利用できる download_url が付いています。新しいリンクを取得するにはジョブを再度読み取ってください。認証情報付きの GET /files/{file_id} で自分のファイルをダウンロードできます。ファイルは常に添付ファイルとして配信されます。

署名付き download_url は、期限切れや改変があると 404 NOT_FOUND を返します。利用停止中または削除処理中のアカウントのリンクも、すべて同じように利用できなくなります。

出力入力として渡せる先
PNG または JPEGすべての画像エンドポイント(編集、文字検出、高解像度化、変換、参照画像)
WebP編集、文字検出、高解像度化、SVG ベクター化、参照画像。PNG・PDF・TIFF・PPTX 変換には使用不可
フローチャートの SVGPNG・PDF・TIFF・PPTX への POST /images/conversions
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())