Gemini ネイティブ
1 つの BeatAPI キーで、Gemini generateContent リクエストから Gemini 4 Argon、Gemini 3.8 Flash、Gemini 3.1 Pro を呼び出せます。
POST /v1beta/models/{model}:generateContentで、現行の Gemini モデルすべてを呼び出せます。ストリーミングは:streamGenerateContent?alt=sseを使います。- テキストと画像の入力、テキスト出力、ストリーミング、関数呼び出し、思考に対応しています。
- キーは
x-goog-api-keyヘッダー、または Bearer トークンで送ります。 - モデル ID は URL に入れ、リクエストボディには入れません。
テキストリクエストの base URL には https://direct.beatapi.io を推奨します。Cloudflare の 100 秒制限を受けないため、長時間のノンストリーミングリクエストが途中で切れません。https://api.beatapi.io も使え、ネットワークから direct.beatapi.io に届かない場合の代替になります。キー、モデル、価格はどちらも同じです。画像・動画 API は https://api.beatapi.io のみを使います。
このエンドポイントをテスト画面で開きます。BeatAPI の API キーを入力して送信してください。実際に呼び出され、ご自身の残高から課金されます。
モデル
次の ID のいずれかを、URL の {model} の位置に入れます。
- 価格は基本ティアで、割引適用後です。長文コンテキストのティア、キャッシュ入力価格、キャッシュ書き込み価格はこの表に含まれません。価格表を参照してください。
—はカタログが数値を公開していないことを示します。
このファミリーの旧 ID は引き続き使え、旧モデルにまとめています。
クイックスタート
キーは BEATAPI_API_KEY に置き、ブラウザーのコードには入れないでください。モデル ID は URL に入るため、ボディに model フィールドはありません。以下はリクエスト例であり、実際のモデル出力の記録ではありません。
回答は candidates[0].content.parts[0].text から読み取り、続けて candidates[0].finishReason と usageMetadata を確認します。HTTP 200 だけでは回答がタスクを満たす証拠にならないため、内容はアプリケーション側で検証してください。テキストリクエストは直接結果を返すので、/v1/tasks をポーリングする必要はありません。
エンドポイントと認証
POST https://direct.beatapi.io/v1beta/models/{model}:generateContent
x-goog-api-key
string
必須
BeatAPI のキーを x-goog-api-key ヘッダーで送ります。Authorization: Bearer <BEATAPI_API_KEY> も使えます。
ストリーミングは POST /v1beta/models/{model}:streamGenerateContent?alt=sse を呼びます。キーは x-goog-api-key ヘッダー、または Authorization: Bearer <key> で送ります。どちらでも動きます。
:countTokens は使えず、404 が返ります。
リクエストパラメーター
以上が有効なフィールドです。それ以外の Gemini フィールドはリクエストに含めても受け付けられますが、効果はありません:generationConfig.thinkingConfig、generationConfig.responseMimeType、generationConfig.responseSchema、generationConfig.seed、safetySettings、toolConfig、cachedContent。これらに頼らないでください。
contents
object[]
必須
会話の内容で、古いターンから順に並べます。各項目は role(user または model)と parts を持ちます。part は text、inlineData(mimeType と base64 の data)、fileData(mimeType と fileUri)、functionCall、functionResponse のいずれかです。
- 現行の Gemini モデルはすべて画像入力に対応しています。
inlineDataか、画像 URL を持つfileDataを使ってください。それ以外のメディアは、ファイル形式を先にテストしてから使ってください。 contentsが空または欠けていると400 bad_requestになります。
例
systemInstruction
object
任意
システムプロンプト。{ "parts": [{ "text": "..." }] } の形で渡します。使われるのは text の part だけです。
例
generationConfig
object
任意
生成オプション。次のサブフィールドが有効です:maxOutputTokens、temperature、topP、topK、stopSequences、candidateCount。
例
generationConfig.maxOutputTokens
integer
任意
生成するトークン数の上限。思考も含みます。
- 受け付ける最大値は 1,073,741,823 で、これを超えると
400 bad_requestです。上の表にあるモデルの最大出力以下にしてください。 - Gemini モデルは既定で思考し、思考トークンは出力として課金され、この上限に含まれます。値が小さいと思考で使い切られ、回答が空のまま
finishReasonが"MAX_TOKENS"になります。短い回答でも、少なくとも 1,000 トークンは確保してください。 maxOutputTokensはリクエストに必要な残高の見積もりにも使われます。実際の出力が短くても、極端に大きな値は402 insufficient_creditsで拒否されることがあります。必要な分だけ指定してください。
generationConfig.temperature
number
任意
サンプリング温度。
generationConfig.topP
number
任意
ニュークリアスサンプリング。0 は無視されます。
generationConfig.topK
integer
任意
Top-K サンプリング。0 は無視されます。
generationConfig.stopSequences
string[]
任意
この文字列が出たら生成を止めます。使われるのは最大 4 個までです。
generationConfig.candidateCount
integer
任意
返す候補の数。複数の候補が必要な場合以外は設定しないでください。
tools
object[]
任意
モデルが呼び出せる関数宣言。[{ "functionDeclarations": [...] }] の形で渡します。各宣言は name、description、parameters(JSON Schema)を持ちます。呼び出しは functionCall part として返ります。関数を実行したら、次の user ターンで functionResponse part として結果を返してください。
- 使われるのは
functionDeclarationsだけです。googleSearchやcodeExecutionなどの組み込みツールは無視されます。
例
レスポンス
ストリーミングなしの呼び出しは JSON オブジェクトを 1 つ返します。以下は省略した例です。
レスポンスのフィールド
ストリーミング
:streamGenerateContent?alt=sse を呼びます。各イベントは data: {...} の 1 行で、中身は candidates オブジェクトです。形はストリーミングなしの回答と同じです。
- 最後のイベントに
finishReason(例:"STOP")が入ります。 - レスポンスは
text/event-streamです。モデルを呼ぶ前に起きた失敗は、ストリームイベントではなく、HTTP ステータス付きの通常の JSON エラーで返されます。 - 明示的なタイムアウトを設定し、ストリーミングレスポンスを安全に再接続してください。
エラー
HTTP エラー早見表
Gemini ネイティブのエンドポイントのエラーは {"error": {"message", "type": "beatapi_error", "code"}} の 1 形式だけで、コードは error.code、request id は message の末尾にあり、retryable はありません。詳しくはエラーを参照してください。
全エラーコード表と再試行ポリシーはエラーを参照してください。
注意事項
- Gemini モデルは Chat Completions、Responses、Anthropic Messages でも呼び出せます。Gemini のほかのページを参照してください。
- 思考トークンは出力トークンとして課金されます。回答だけでなく、思考と回答の両方に足りる出力枠を確保してください。
- キーは信頼できるサーバーだけに置き、レスポンスのリクエスト ID を記録し、再試行は
429、500、503に限ってください。
認証
Send your API key as Authorization: Bearer <BEATAPI_API_KEY>.
パスパラメータ
リクエスト
会話の内容で、古いターンから順に並べます。各項目は role(user または model)と parts を持ちます。part は text、inlineData(mimeType と base64 の data)、fileData(mimeType と fileUri)、functionCall、functionResponse のいずれかです。
現行の Gemini モデルはすべて画像入力に対応しています。inlineData か、画像 URL を持つ fileData を使ってください。それ以外のメディアは、ファイル形式を先にテストしてから使ってください。
contents が空または欠けていると 400 bad_request になります。
システムプロンプト。{ "parts": [{ "text": "..." }] } の形で渡します。使われるのは text の part だけです。
生成オプション。次のサブフィールドが有効です:maxOutputTokens、temperature、topP、topK、stopSequences、candidateCount。
モデルが呼び出せる関数宣言。[{ "functionDeclarations": [...] }] の形で渡します。各宣言は name、description、parameters(JSON Schema)を持ちます。呼び出しは functionCall part として返ります。関数を実行したら、次の user ターンで functionResponse part として結果を返してください。
使われるのは functionDeclarations だけです。googleSearch や codeExecution などの組み込みツールは無視されます。
レスポンス
ストリーミングなしの呼び出しは JSON オブジェクトを 1 つ返します。以下は省略した例です。

