機能別
ファイルのアップロード
クライアントにローカルの画像、動画、音声、PDF、スプレッドシートなどのファイルしかない場合は、プラットフォームのファイルアップロードフローを使ってください。API は一時的なアップロード先と安定した public_url を返し、ストレージの実装の詳細はクライアントから隠されます。
#URL、アップロード、Base64 から選ぶ
| 手元にある入力 | 推奨する方法 | 理由 |
|---|---|---|
| 既存の公開 HTTPS URL | URL をそのまま送信 | 重複アップロードがなく、リクエストボディも最小です。 |
| デバイス上のローカルファイル | アップロードしてから public_url を送信 | 大きなファイルでも確実で、再試行時にも再利用できます。 |
| 小さなインライン画像で、モデルが Base64 に明示的に対応している | Base64 も可 | 選択したモデルの仕様で許可されている場合のみ使用します。 |
#ローカルファイルのアップロードフロー
- 1
現在の上限を読み取る
ユーザーごとの上限が適用されるよう、同じ API キーを使います。
GET /v1/media/upload-policy - 2
アップロードポリシーを作成
kind、具体的な content_type、正確なバイト数を送信します。
POST /v1/media/upload-policy - 3
ファイルをアップロード
返された fields のエントリをすべて、ファイルと一緒に upload_url へ POST します。
multipart/form-data - 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 があるというだけではスプレッドシートを読み取れません。
まだ解決しませんか?
リクエスト ID かエラーメッセージを送っていただければ、こちらで調査します。