ChinaModelAPI

ガイド / DeepSeek Files API

ガイド · 2026-08-21にapi-docs.deepseek.comで検証済み

DeepSeek Files API (2026): 制限事項、アップロード、実践的なfile_idの活用

DeepSeekは2026年8月21日、ビジョンモデルとともに初のファイルエンドポイントを静かにリリースしました。これにより多くの古いガイドは時代遅れとなっています(未だにDeepSeekのAPIには「ファイルアップロード用のルートがない」と説明しているものもあります)。本ガイドでは、検証済みの制限事項、curlおよびPythonによるアップロードと参照の例、そしてbase64ではなくファイルを使用すべきタイミングを解説します。

要点まとめ

DeepSeek Files APIは画像を1度アップロードすると、チャット内で参照可能なfile_idを返します。 purpose="user_data" を指定してアップロードします。1ファイルあたり最大 64 MiB(アップロード制限時間10分)、ストレージは ユーザーあたり25 GiB / 10,000ファイル まで、保持期間は1時間〜30日間(expires_after を省略した場合は無期限)です。 deepseek-v4-flash-vision-exp のチャットからは {"type":"file","file_id":...} ブロック経由でファイルを参照します。file_id指定の画像は1リクエストあたり最大64 MiBまで対応しており、インラインの32 MiBより大容量を扱えます。Anthropic互換エンドポイントから利用する場合は、anthropic-beta: files-api-2025-04-14 ヘッダーを追加してください。

制限事項の概要

制限項目値(公式ドキュメント、2026-08-21)
対応フォーマットJPEG、PNG、GIF、WebP — 拡張子ではなくファイル内容から自動判別
1ファイルあたり最大 64 MiB(10分以内にアップロード完了が必要)
ユーザーあたり25 GiBストレージ、保存ファイル数10,000件
保持期間1時間〜30日間、または無期限(expires_afterを省略した場合)
用途(Purpose)user_data 必須(サポートされている唯一のpurposeであり、一覧のフィルタリングにも使用)
リクエスト内サイズfile_id画像は1リクエストあたり最大64 MiB、インラインのbase64/URL画像は最大32 MiB
API互換性OpenAI互換およびAnthropic互換。Anthropicの /messages には files-api beta ヘッダーが必要

出典:公式 Files API ガイド(2026-08-21確認)。

一度アップロードすれば何度でも参照可能(最大30日間)

スクリーンショットをアップロードしてfile_idを取得:

curl https://api.deepseek.com/files \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -F "purpose=user_data" \
  -F "file=@dashboard.png"

続いてvision-expのチャットで参照 — base64データは不要で、後続のターンで再アップロードする必要もありません:

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-v4-flash-vision-exp",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "Which metric regressed in this dashboard?"},
        {"type": "file", "file_id": "file-api-xxxx"}
      ]
    }]
  }'

OpenAI SDKを使用したPythonの例 — アップロードしてチャット:

from openai import OpenAI

client = OpenAI(api_key="YOUR_KEY", base_url="https://api.deepseek.com")

f = client.files.create(file=open("dashboard.png", "rb"), purpose="user_data")

resp = client.chat.completions.create(
    model="deepseek-v4-flash-vision-exp",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Which metric regressed?"},
            {"type": "file", "file_id": f.id},
        ],
    }],
)
print(resp.choices[0].message.content)
  • インラインでの代替手段:ファイルブロックには、file_id の代わりに file_data(base64)を渡すことも可能です(排他的フィールド)。なお、filename は file_data と一緒にのみ指定できます。
  • Anthropicスタイルのスタック:anthropic-beta: files-api-2025-04-14 ヘッダーを付けることで、/messages でも同一のファイルブロックが動作します。

ファイル / base64 / URL の使い分け

方式最大サイズ最適な用途
base64 インライン32 MiBプロセス内で動的生成される単発画像向け。コード実装が最も簡単
外部URL32 MiB、URL上限8,192文字、フェッチ60秒公開ホスティングされた画像向け。アップロード処理が一切不要
Files API64 MiBエージェントのスクリーンショットループ、繰り返し参照する画像、複数ターンで再利用されるあらゆる場面

FAQ

DeepSeekにはファイルエンドポイントがないと聞いたのですが、新機能ですか?

2026年8月21日まではその通りでした。「/v1/files ルートはなく、自分でテキストを抽出する必要がある」と説明していた古いガイドは当時の情報としては正確でしたが、現在は古くなっています。Files API はビジョン機能のリリースに合わせて提供が開始されました。

PDFやドキュメントをアップロードできますか?

いいえ — Files API が現在受け付けるのは画像フォーマット(JPEG/PNG/GIF/WebP)のみです。PDFの場合は、呼び出し元側で各ページを画像にレンダリングしてから、アップロードまたはインライン指定してください。

ファイルの保存期間はどのくらいですか?

expires_after を指定した場合は1時間〜30日間、省略した場合は無期限です(25 GiB / 10,000ファイルのクォータ内)。

ビジョン以外のモデルでもファイルを利用できますか?

ファイルブロックは deepseek-v4-flash-vision-exp で処理されます。通常の V4-Flash / V4-Pro はテキスト専用のままです。テキストモデルに対してファイル参照を渡さないでください。

関連情報