機能別

ファイルのアップロード

クライアントにローカルの画像、動画、音声、PDF、スプレッドシートなどのファイルしかない場合は、プラットフォームのファイルアップロードフローを使ってください。API は一時的なアップロード先と安定した public_url を返し、ストレージの実装の詳細はクライアントから隠されます。

#URL、アップロード、Base64 から選ぶ

手元にある入力推奨する方法理由
既存の公開 HTTPS URLURL をそのまま送信重複アップロードがなく、リクエストボディも最小です。
デバイス上のローカルファイルアップロードしてから public_url を送信大きなファイルでも確実で、再試行時にも再利用できます。
小さなインライン画像で、モデルが Base64 に明示的に対応しているBase64 も可選択したモデルの仕様で許可されている場合のみ使用します。

#ローカルファイルのアップロードフロー

  1. 1

    現在の上限を読み取る

    ユーザーごとの上限が適用されるよう、同じ API キーを使います。

    GET /v1/media/upload-policy
  2. 2

    アップロードポリシーを作成

    kind、具体的な content_type、正確なバイト数を送信します。

    POST /v1/media/upload-policy
  3. 3

    ファイルをアップロード

    返された fields のエントリをすべて、ファイルと一緒に upload_url へ POST します。

    multipart/form-data
  4. 4

    返された URL を使う

    モデルが対応するメディアフィールドに public_url を指定します。

    public_url
create-policy.sh
curl https://www.aisplice.store/v1/media/upload-policy \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "file",
    "content_type": "application/pdf",
    "size": 1048576
  }'

#アップロードフィールドはそのまま扱う

fields で返されたキーと値はすべて、名前の変更、絞り込み、キャッシュをせずに送信してください。アップロードポリシーは短期間で失効し、生成された 1 つのファイルパスにひも付けられています。

browser.ts
const form = new FormData();
for (const [key, value] of Object.entries(policy.fields)) {
  form.append(key, String(value));
}
form.append("file", file); // keep the file field last

const uploaded = await fetch(policy.upload_url, {
  method: "POST",
  body: form,
});
if (!uploaded.ok) throw new Error(await uploaded.text());

const modelInputUrl = policy.public_url;

#ファイルの種類とモデルの対応

アップロードの成功はモデルの受け入れを意味しない

アップロードエンドポイントは PDF、Excel、テキストなどの一般ファイルを保存できますが、モデルがそれを利用できるのは、リクエスト仕様に対応するファイルまたは URL のフィールドが記載されている場合だけです。画像専用モデルは、公開 URL があるというだけではスプレッドシートを読み取れません。
選択したモデルの仕様を確認

すべてのフィールド:API リファレンスの /v1/media/upload-policy →

まだ解決しませんか?

リクエスト ID かエラーメッセージを送っていただければ、こちらで調査します。