3行でいうと
- 3社とも、料金は通常のAPIの50%です。待てる処理(要約、分類、評価など)向けの仕組みです。
- 完了の目安は、OpenAIが24時間以内、Anthropicはほとんど1時間以内で24時間が期限、Googleは目標24時間です。
- 1回に送れる量は、OpenAIが5万件・200MB、Anthropicが10万件・256MB、Googleがファイル2GBまでです。
この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書や料金ページを読んでまとめたものです。価格・上限は2026年10月22日に読み直しました。変わることがあります。
先に結論
- バッチAPIは、「今すぐ答えが要らない大量の処理」を、半額で頼む仕組みです。通常のAPIと同じ内容のリクエストを、ファイルなどにまとめて送り、あとで結果を取りに行きます。
- 3社の割引は同じ50%ですが、細部が違います。失敗したときに課金されるかどうか、期限が切れたときの扱い、結果をいつまで取れるか、は会社ごとに違うので、そこを確認してから設計するのが安全です。
- 使いどころは、結果をその場で人に見せない処理です。チャットのように、返事を待っている人がいる処理には向きません。
前提:何の話か
APIは、アプリの中からAIを呼び出す開発者向けの窓口です。通常は1件ずつ送って、数秒〜数十秒で答えが返ってきます(同期処理)。バッチAPIは、たくさんのリクエストをまとめて送り、AI側が空いているときに処理して、あとで結果を返す方式です(非同期処理)。時間の余裕を渡すかわりに、値段を下げてもらうわけです。
用語を2つ。JSONL(JSON Lines)は、1行に1つのデータ(JSON)を書いていく形式のテキストファイルで、ここでは1行が1件のリクエストです。custom_idは、自分で付ける各リクエストの目印で、返ってきた結果と元のリクエストを対応させるために使います。
3社の比較
| OpenAI | Anthropic(Claude) | Google(Gemini) | |
|---|---|---|---|
| 割引 | 同期APIより50%安い | 標準価格の50% | 標準価格の50% |
| 完了の目安 | 24時間以内(多くはもっと早い)。指定できるのは24hのみ |
ほとんどのバッチが1時間以内。24時間で期限切れ | 目標24時間。大きさと混み具合で早く終わることも |
| 1回の上限 | 5万件、入力ファイル200MB | 10万件または256MB(先に達したほう) | ファイルは2GBまで。インライン送信は合計20MB未満が目安 |
| 入力の形 | JSONLファイル。1ファイル1モデル | requestsパラメータに配列で渡す |
JSONLファイル(File APIで送る)またはインライン |
| 結果を取れる期間 | 完了から30日で出力ファイルが自動削除 | 作成から29日 | 既定で6週間 |
| 期限切れ | 実行中のものは取り消し。完了分は残り課金される | 24時間で期限切れ。未処理は課金されない | 48時間を超えるとEXPIRED。結果は取れない |
| 結果の順序 | 入力順とは限らない | 任意の順序で返る | 順序を保証する記載は、読んだ範囲で見つからず。出力の各行に自分で付けたキーが入る |
| 通常の制限との関係 | 別枠(通常のモデルごとの上限を消費しない) | 通常のAPIとは別のバッチ用の上限 | 別枠の上限(下記) |
各社の中身
OpenAI
公式のバッチの文書によると、次の通りです。
- 対応する窓口(エンドポイント):
/v1/responses、/v1/chat/completions、/v1/embeddings、/v1/completions、/v1/moderations、/v1/images/generations、/v1/images/edits。 - 入力:
.jsonlファイルで、各行に一意のcustom_id、method、url、bodyを書きます。bodyの中身は、元の窓口と同じパラメータです。1つの入力ファイルでは、モデルは1つだけです。 - 上限:1バッチ5万件、入力ファイル200MB。埋め込み(文章を数字の列に変えるAPI)のバッチは、全体で5万個の入力まで。バッチの作成は1時間に2,000個まで。出力トークンの上限は、今のところなし、と書かれています。モデルごとに「待ち行列に入れられる入力トークン数」の上限があり、具体的な数字は文書ではなく、プラットフォームの設定画面に出ると書かれています。
- 状態:
validating、failed、in_progress、finalizing、completed、expired、cancelling、cancelled。 - 結果:完了後、バッチの
output_file_idを使ってFiles APIからダウンロードします。失敗したリクエストはerror_file_idのエラーファイルに入ります。出力の順序は入力順と同じとは限らないので、custom_idで対応させます。 - 期限切れ:
expiredになった場合、未完了のリクエストは取り消されます。完了した応答は出力ファイルに残り、そのトークンには課金されます。期限切れの分は、エラーファイルにbatch_expiredとして入ります。 - 取り消し:
cancellingのあと、処理中のリクエストが終わるまで最長10分ほどかかり、cancelledになります。
Anthropic
公式のバッチ処理の文書(Message Batches API)によると、次の通りです。
- 割引:標準価格の50%。入力も出力もです。Claude Sonnet 5.5は、入力1ドル・出力5ドル(100万トークンあたり)です。料金ページでも同じでした(料金ページは、Opus 5.5が2ドルと10ドル、Haiku 5.5が10万トークン以下の入力で0.05ドルと0.25ドル、を載せています)。
- 上限:1バッチ10万件または256MB、先に達したほうです。256MBを超えると413エラー(
request_too_large)が返ります。バッチはワークスペース(組織内の区切り)の単位です。 - 時間:「ほとんどのバッチは1時間以内」と書かれています。結果は、全部のメッセージが終わったとき、または24時間後のどちらか早いほうで取れます。24時間で終わらなければ、バッチは期限切れになります。
- 結果の保持:作成から29日間。それ以降もバッチ自体は見えますが、結果はダウンロードできません。
- 対応:「すべての現行モデル」が対応。画像入力、道具の呼び出し(サーバー側の道具を含む)、システム指示、複数ターンの会話、拡張思考(考えてから答える機能)、ほとんどのベータ機能も使えます。使えないのは、
stream: true、speed(高速モード)、fallbacks(サーバー側のフォールバック)、max_tokens: 0で、いずれもバッチでは検証エラーになります。 - 状態:
processing_statusはin_progress、canceling、ended。結果の種類はsucceeded、errored、canceled、expiredの4つで、errored、canceled、expiredは課金されません。 custom_idは1〜64文字の英数字・ハイフン・アンダースコアです。- 1つのリクエストが失敗しても、ほかのリクエストの処理には影響しない、と書かれています。
- 支出上限:バッチはワークスペースの設定した支出上限を、少し超えることがある、と書かれています。
公式文書の結果待ちの例です(この記事では実行していません)。
while True:
message_batch = client.messages.batches.retrieve(MESSAGE_BATCH_ID)
if message_batch.processing_status == "ended":
break
time.sleep(60)
Google(Gemini)
Gemini APIのバッチAPIの文書によると、次の通りです。
- 割引:標準の対話型APIの50%。
- 入力の2通り:インライン(リクエストをバッチ作成の中に直接入れる。合計20MB未満が向く)と、ファイル(JSONLをFile APIで上げる。入力ファイルは2GBまで)。
- 状態:
JOB_STATE_PENDING、RUNNING、SUCCEEDED、FAILED、CANCELLED、EXPIRED。 - 期限切れ:実行中か待機中のまま48時間を超えると
EXPIREDになり、取れる結果はありません。 - 結果の保持:既定で6週間。その後は完全に削除されます。
- 取り消しと削除:取り消すと新しいリクエストの処理を止めます。削除すると処理を止め、一覧からも消えます。
Googleの上限のページ(rate-limits)では、バッチの上限は次のとおりでした。同時に持てるバッチのリクエストは100、入力ファイルは2GB、ファイルの保存は20GBです。モデルごとに「待ち行列に入れられるトークン数」の上限があり、たとえばGemini 3.8 Flashは、Tier 1が300万、Tier 2が4億、Tier 3が10億です。Gemini 3.1 Pro Previewは、Tier 1が500万、Tier 2が5億、Tier 3が10億です。Gemini 4 Argonも、3.1 Pro Previewと同じ数字でした。
数字:料金表
100万トークンあたり、米ドルです。2026年10月22日確認です。
| モデル | 通常の入力/出力 | バッチの入力/出力 |
|---|---|---|
| Claude Opus 5.5 | 4/20 | 2/10 |
| Claude Sonnet 5.5 | 2/10 | 1/5 |
| Claude Haiku 5.5(10万トークン以下) | 0.10/0.50 | 0.05/0.25 |
| OpenAI GPT-6 Astra | 10/50 | 5/25 |
| OpenAI GPT-6.1 Sol | 2/10 | 1/5 |
| OpenAI GPT-6 Luna | 0.10/0.50 | 0.05/0.25 |
| Gemini 3.8 Flash(2026年内) | 0.75/3.75 | 0.375/1.875 |
| Gemini 3.1 Pro Preview(20万トークン以下) | 2/12 | 1/6 |
| Gemini 4 Argon(2026年11月30日まで) | 2/10 | 1/5 |
| Gemini 3.5 Flash-Lite | 0.30/2.50 | 0.15/1.25 |
補足です。
- OpenAIのバッチの数字は、料金ページで標準の表に続く表(タブの並びからバッチ欄と読み取ったもの)の値です。表の見出しの文字は、読んだ結果からは確認できていません。GPT-6.1 Solのモデルのページには「BatchとFlexは標準より50%安い」と書かれており、入力1ドル・出力5ドルと合います。
- OpenAIの入力が27.2万トークンを超える場合は、入力が2倍、出力が1.5倍の別の単価になります。
- Geminiの3.8 Flashは、2027年1月1日から通常の入力1.50ドル・出力7.50ドル、バッチの入力0.75ドル・出力3.75ドルになります。
- Gemini 4 Argonは、2026年12月1日から通常の入力4ドル・出力20ドル、バッチの入力2ドル・出力10ドルになります。料金ページと上限のページには載っていますが、Googleのバッチの文書は、Gemini 4 Argonがバッチに対応するかを、読んだ範囲では書いていませんでした。
- Geminiの無料枠では、3.8 Flashはバッチを使えません。3.1 Pro PreviewとGemini 4 Argonは、無料枠そのものがありません(無料枠でのバッチも使えません)。3.5 Flash-Liteの項には、バッチの無料枠が「あり」と表示されています。
同じ作業の計算例(僕らの計算です)
僕らの計算です。前提は、1万件のリクエストで、1件あたり入力2,000トークン、出力500トークンです。合計は入力2,000万トークン、出力500万トークンです。
| モデル | 通常(米ドル) | バッチ(米ドル) |
|---|---|---|
| Claude Sonnet 5.5 | 40+50=90 | 20+25=45 |
| OpenAI GPT-6.1 Sol | 40+50=90 | 20+25=45 |
| Gemini 3.1 Pro Preview | 40+60=100 | 20+30=50 |
| Gemini 3.8 Flash(2026年内) | 15+18.75=33.75 | 7.5+9.375=16.875 |
計算は「入力の百万トークン数×入力単価+出力の百万トークン数×出力単価」です。思考トークン(考えるために使う見えない分)や、キャッシュ、長い入力の割増は入れていません。
Anthropicの文書には、バッチの割引とプロンプトキャッシュの割引は重ねられる、と書かれています。キャッシュのヒット率はベストエフォート(保証なし)で、一般に30%〜98%とあります。バッチの処理には5分以上かかることがあるので、共通の前置きがあるなら、1時間保持のキャッシュを検討する、とも書かれています。
選び方・判断の基準
見立てです。次の基準で選ぶのが無難だと思います。
- 人が待っていない、夜間や定期の処理(大量の分類、要約、評価データの採点、文書の変換):バッチが向いています。
- 結果が今日中に要る程度:3社とも24時間が目安なので、余裕がある日の前日に出す運用が合います。Anthropicは「ほとんど1時間以内」と書いていますが、これは目安で、保証ではありません。
- 失敗した分の扱い:Anthropicは、エラー、取り消し、期限切れの分は課金されないと書いています。OpenAIは、期限切れでも完了済みの分は課金されると書いています。再実行の計画を立てるときの違いになります。
- 同じ内容を繰り返し読ませる場合:キャッシュと組み合わせるかどうかを、会社ごとの文書で確認します(Anthropicは重なると明記)。
よくある失敗・つまずき
- 結果の順序が入力と同じだと思い込む。OpenAIもAnthropicも、順序は保証されないと書いています。
custom_idで対応させます。 - 結果の保持期限を忘れる。OpenAIは30日、Anthropicは29日、Googleは6週間です。受け取りを後回しにしすぎると取れなくなります。
- 待ち行列の上限に当たる。OpenAIはモデルごとに入力トークンの上限、Anthropicは処理待ちのリクエスト数(Start 20万、Build 30万、Scale 50万件)、Googleはモデルごとの待ち行列トークン数の上限があります。大きな投入は分けます。
- 1つのファイルに複数のモデルを混ぜる。OpenAIは1ファイル1モデルです。
- ストリーミング(少しずつ返す方式)や、高速モードを付けたリクエストを入れる。Anthropicのバッチでは検証エラーになります。OpenAIの文書には、
/v1/moderationsのバッチでstream=trueが拒否される、と書かれています(ほかの窓口の扱いは読めていません)。
気をつけること
- この記事は、実際に使って確かめた記録ではありません。数字と挙動は公式文書の記載です。
- 「完了の目安」は目安です。OpenAIは24時間以内、Anthropicはほとんど1時間以内、Googleは目標24時間と書いていて、どの会社も具体的な時間を約束する書き方ではありません。
- OpenAIのバッチ価格は、料金ページの表の見出しを直接確認できていません(上の補足を参照)。請求額は、自分のアカウントの料金ページで確認してください。
- Anthropicの上限(Start/Build/Scale)は、ティア(利用実績に応じた区分)で決まります。Googleのティアとは別の区分です。
- OpenAIの文書では、モデルごとの待ち行列トークンの具体的な数字は読めませんでした(設定画面で確認と書かれています)。
- Googleのバッチ結果の順序は、保証する記載が読んだ範囲で見つかりませんでした。課金の細かな条件は、確認できていません。
- 価格、上限、保持期間は変わることがあります。Gemini 3.8 Flashは2027年1月1日に価格が変わります。
- DeepSeekなど、この記事で読んでいない会社のバッチは扱っていません。
出典
- Batch API(OpenAI API、OpenAI、2026年10月22日確認)
- Pricing(OpenAI API、OpenAI、2026年10月22日確認)
- GPT-6.1 Sol(OpenAI API、OpenAI、2026年10月22日確認)
- Rate limits(OpenAI API、OpenAI、2026年10月22日確認)
- Batch processing(Claude Platform Docs、Anthropic、2026年10月22日確認)
- Pricing(Claude Platform Docs、Anthropic、2026年10月22日確認)
- Rate limits(Claude Platform Docs、Anthropic、2026年10月22日確認)
- Batch API(Gemini API、Google AI for Developers、Google、2026年10月22日確認)
- Gemini Developer API pricing(Google AI for Developers、Google、2026年10月22日確認)
- Rate limits(Gemini API、Google AI for Developers、Google、2026年10月22日確認)
更新履歴
- 2026年10月25日 書き方を直しました。
- 前:運営者が使っていないと読める書き方 → いま:「この記事は、実際に使って確かめた記録ではありません」。公式の資料を読んでまとめた記事で、使い心地は書いていない、という意味に直した
