ファイルのアップロードと参照

一度アップロードしたファイルを InOneAPI の file_id で参照できます。ゲートウェイは所有権を確認し、選択した上流のプロトコルに応じて非公開 COS の署名付き URL またはファイル内容に変換した後、マッピング DSL を適用します。プロバイダーの対応能力は事前判定せず、未対応の入力に対するエラーは上流が返します。

API とアクセス権

Authorization: Bearer $INONEAPI_API_KEY を指定します。ファイルはアップロードした API キーに限定されます。同じユーザーやプロジェクトの別キーからも取得・参照・削除できません。上流のファイル ID や Playground の添付 ID とは別物です。

API動作
POST /v1/filesmultipart で単一ファイルをアップロード
GET /v1/files新しい順。limit は 1–100、after は前ページの last_id
GET /v1/files/{file_id}メタデータを取得。内容や署名 URL は返しません
DELETE /v1/files/{file_id}オブジェクトとメタデータを削除

ファイル操作にモデル推論料金やウォレット残高は不要です。キーのレート・同時実行制限とプロジェクトの状態は適用されます。ファインチューニング、Batch、ベクトル検索、上流 Files API の透過転送は提供しません。

アップロード

必須フォーム項目はファイル本体の file と、固定値 user_data の purpose です。multipart boundary は HTTP クライアントに設定させてください。

curl https://api.inoneapi.com/v1/files \
  -H "Authorization: Bearer $INONEAPI_API_KEY" \
  -F purpose=user_data \
  -F file=@./sample.mp4
{
  "id": "file_ioa_0123456789abcdef0123456789abcdef",
  "object": "file",
  "filename": "sample.mp4",
  "mime_type": "video/mp4",
  "media_type": "video",
  "bytes": 1048576,
  "status": "ready",
  "created_at": 1789430400,
  "purpose": "user_data"
}

画像・音声・文書は各 10 MiB、動画は 32 MiB までです。キーごとの直近 24 時間に作成したファイル記録の合計は 1 GiB・1000 件で、未完了のアップロードも含みます。MIME とメディア種別は内容から検出します。対応形式は PNG/JPEG/WebP/GIF、MP4/WebM/MOV、MP3/WAV/OGG/AAC/FLAC/M4A、PDF、プレーンテキスト、CSV、JSON。コンテナやテキストの細分類は返却メタデータを確認してください。変換エンコード、OCR、文書解析、サムネイル生成は行いません。

モデルリクエストは最大 32 回のファイル参照、参照ごとの元サイズ合計 64 MiB までです。同じファイルの繰り返しも加算します。展開後の JSON はゲートウェイのリクエストサイズ制限にも従います。アップロード成功は上流の対応を保証しません。

Chat Completions

同じメッセージ内にテキストとファイルを並べます。

{
  "model": "YOUR_MODEL_ID",
  "messages": [{
    "role": "user",
    "content": [
      {"type": "text", "text": "この動画を説明してください"},
      {"type": "file", "file": {"file_id": "file_ioa_0123456789abcdef0123456789abcdef"}}
    ]
  }]
}
種別展開後の Chat コンテンツ
画像{"type":"image_url","image_url":{"url":"COS signed URL"}}
動画{"type":"video_url","video_url":{"url":"COS signed URL"}}
音声{"type":"input_audio","input_audio":{"data":"Base64","format":"mp3"}}
文書{"type":"file","file":{"filename":"sample.pdf","file_data":"data:application/pdf;base64,..."}}

すべての素材を type: file で参照する動作と video_url は InOneAPI の拡張であり、OpenAI 標準の動画プロトコルではありません。既存のテキストと URL、その順序は維持されます。

Responses と Messages

Responses の input[].content に {"type":"input_file","file_id":"..."} を指定します。文書は input_file.file_url、画像は input_image.image_url に展開します。明示的な {"type":"input_image","file_id":"..."} は画像専用です。

input_file による動画・音声参照は拡張です。動画は {"type":"input_video","video_url":"COS signed URL"}、音声は上表の input_audio になります。

Messages の messages[].content には {"type":"document","source":{"type":"file","file_id":"..."}} を指定します。ブロック種別は実ファイルの document、image、audio、video に一致する必要があります。PDF と画像は URL source、プレーンテキスト・CSV・JSON は type: text、media_type: text/plain、テキストの data を持つ source に変換します。音声・動画は URL source を使う InOneAPI 拡張です。/v1/messages/count_tokens も同じルールです。

Responses または Messages が Chat 上流にルーティングされる場合、ファイルは直接 Chat 形式に展開してから外側のリクエストを変換します。プラットフォームの ID を上流のファイル ID として転送しません。

動画・画像・音声生成

メディアの source.type は file の別名として file_id も受け付けます。どちらも InOneAPI のファイル ID 専用です。

POST /v1/videos、POST /v1/images/generations、POST /v1/audio/speech の素材参照例です。

{
  "input_references": [{
    "type": "image",
    "role": "first_frame",
    "source": {"type": "file", "file_id": "file_ioa_0123456789abcdef0123456789abcdef"}
  }]
}

元のリクエストに追加してください。model、prompt、音声の input と voice など既存の必須項目は引き続き必要です。参照種別は実ファイルの image/audio/video に一致させます。source のみ {"type":"url","url":"COS signed URL"} に置き換え、role を保持して DSL に渡します。Images と Speech の input_references は InOneAPI 拡張で、OpenAI の標準パラメータではありません。画像編集・音声文字起こし・音声翻訳 API は追加されません。

一覧・削除・保存期間

一覧は object: list、data、has_more、first_id、last_id を返します。次ページの after に last_id を指定します。カーソルは同じキーに属する必要があります。

curl https://api.inoneapi.com/v1/files \
  -H "Authorization: Bearer $INONEAPI_API_KEY"

curl -X DELETE https://api.inoneapi.com/v1/files/file_ioa_0123456789abcdef0123456789abcdef \
  -H "Authorization: Bearer $INONEAPI_API_KEY"

削除成功時は {"id":"file_ioa_...","object":"file","deleted":true} を返します。公開 API ファイルは COS ライフサイクルで 1 日保存します。アプリは独自の expires_at を設定・返却せず、定期削除処理も実行しません。COS の削除は非同期で、アップロードから正確に 24 時間後とは限りません。署名 URL は 5 分間有効で、上流への試行ごとに再発行します。URL の認可期限は保存期間とは別です。非同期プロバイダーは URL とオブジェクトが利用可能な間に取得してください。

内容は非公開 COS、DB はオブジェクト key とメタデータのみを保存します。ファイルアップロードは推論のゼロデータモード対象外です。COS の 1 日ライフサイクル規則は api-files/ のみに設定し、playground/ には適用しないでください。Playground 添付にはライフサイクル期限を設けません。キー削除後は ID が無効になり、残ったオブジェクトは COS が回収します。COS の削除は DB メタデータと連動しません。ready はアップロード完了を示し、現在のファイル存在を保証しません。削除後は再アップロードしてください。古いメタデータは直近 24 時間の制限に加算せず、DELETE で削除できます。

中断したアップロードは uploading のまま残る場合があります。一覧から ID を確認し、作成から 5 分経過後に削除できます。参照可能なのは ready のみです。削除しても、上流へ送信済みの内容は撤回できません。

エラー

HTTPcode意味
400INVALID_FILE_REQUEST不正なフォーム・参照、種別不一致、ID と内容/URL の併記
400UNSUPPORTED_FILE_TYPE検出不能または未対応のアップロード形式
404FILE_NOT_FOUNDメタデータが存在しない、または別キーのファイル
409FILE_NOT_READY未完了、または削除可能時刻前
413FILE_TOO_LARGEファイル・参照回数・合計サイズ・展開後リクエストの上限超過
429FILE_QUOTA_EXCEEDEDストレージ上限に到達
503FILE_STORAGE_UNAVAILABLECOS 未設定、またはストレージ/メタデータ処理失敗

既存の認証、キーレート制限、ルーティング、上流エラー規則も適用されます。

ファイル · ドキュメント · InOneAPI