ナビゲーションにスキップ

Kimi Chat Completions

1 つの BeatAPI キーで、同じ OpenAI Chat Completions エンドポイントから Kimi K3 を呼び出せます。

  • 1 つのエンドポイント POST /v1/chat/completions で Kimi K3 を呼び出せます。
  • ストリーミングと関数呼び出しに対応し、100 万トークンのコンテキストウィンドウを備えています。
  • OpenAI SDK で使えます。base URL を変え、BeatAPI のキーを使うだけです。
  • 同じモデルは OpenAI Responses と Anthropic Messages でも呼び出せます。

テキストリクエストの base URL には https://direct.beatapi.io を推奨します。Cloudflare の 100 秒制限を受けないため、長時間のノンストリーミングリクエストが途中で切れません。https://api.beatapi.io も使え、ネットワークから direct.beatapi.io に届かない場合の代替になります。キー、モデル、価格はどちらも同じです。画像・動画 API は https://api.beatapi.io のみを使います。

POST/v1/chat/completions試してみる

このエンドポイントをテスト画面で開きます。BeatAPI の API キーを入力して送信してください。実際に呼び出され、ご自身の残高から課金されます。

モデル

次の ID を model として送ります。

モデル IDコンテキスト(トークン)最大出力(トークン)位置づけ入力、USD / 100 万トークン出力、USD / 100 万トークン備考
kimi-k31,048,576128,000100 万トークンのコンテキストと、切り替え可能な最高強度の思考モードを備えたマルチモーダル Kimi。長時間のエージェントタスク向け$2.10$10.50Kimi のフラッグシップモデル。長時間のエージェントタスク向け。回答の前に推論します。
  • 価格は基本ティアで、割引適用後です。長文コンテキストのティア、キャッシュ入力価格、キャッシュ書き込み価格はこの表に含まれません。価格表を参照してください。
  • — はカタログが数値を公開していないことを示します。

クイックスタート

サーバーに openai パッケージをインストールし、キーは BEATAPI_API_KEY に置いてください。ブラウザのコードには書かないでください。以下はリクエスト例であり、実際のモデル出力の記録ではありません。

回答は choices[0].message.content から読み取り、続けて finish_reason と usage を確認します。HTTP 200 だけでは回答がタスクを満たす証拠になりません。内容はアプリケーション側で検証してください。テキストのリクエストは直接結果を返すので、/v1/tasks をポーリングする必要はありません。

curl --request POST \
--url https://direct.beatapi.io/v1/chat/completions \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "kimi-k3",
"max_tokens": 2000,
"messages": [
{
"role": "user",
"content": "Design a resilient webhook retry strategy for a payments API."
}
]
}'

エンドポイントと認証

POST https://direct.beatapi.io/v1/chat/completions

Authorization string 必須

Bearer <BEATAPI_API_KEY>。キーは sk- プレフィックスの有無どちらでも使えます。

リクエストパラメーター

OpenAI Chat Completions の標準フィールドを受け付けます。リクエスト形式が互換でも、すべてのモデルがあらゆるオプションに対応するわけではありません。依存するオプションは自分で試してください。

model string 必須

正確なモデル ID。

指定できる値:kimi-k3

  • 各 ID は独立したモデルで、他のモデルの別名ではありません。
  • キーで GET /v1/models を呼ぶと、そのキーで有効なモデルを確認できます。

messages object[] 必須

会話の内容。古いメッセージが先頭です。各メッセージには role(system、user、assistant、tool)と content があります。

max_tokens integer 任意

生成するトークン数の上限。推論の分も含みます。

  • ゲートウェイは、指定値を上の表の最大出力と照合しません。その数値以下に収めてください。
  • max_tokens は、リクエストに必要な残高の見積もりにも使われます。極端に大きい値だと、実際の出力が短くても 402 insufficient_credits で拒否されることがあります。必要な分だけ指定してください。

推論型モデルは先に推論を出力します。max_tokens が小さすぎると推論で使い切られ、content が空になって finish_reason が length になります。推論と本文の両方に余裕を持たせ、length が出たら値を増やしてください。

stream boolean 任意デフォルト: false

回答をサーバー送信イベント(SSE)として返します。下の「ストリーミング」を参照してください。

デフォルト:false

temperature number 任意

サンプリング温度。top_p とはどちらか一方だけ調整してください。

top_p number 任意

nucleus sampling のしきい値。

stop string | string[] 任意

生成を止める文字列を 1 つ以上指定します。

tools object[] 任意

モデルが呼び出せる関数の定義。モデルは tool_calls で応答します。各結果は、対応する tool_call_id を付けた次の tool メッセージで返してください。

tool_choice string | object 任意

モデルがツールを呼び出してよいか、必ず呼ぶか、呼ばないかを指定します。依存する値は使うモデルで試してください。

レスポンス

非ストリーミングの呼び出しは JSON オブジェクトを 1 つ返します。以下は省略した例です。

{
"id": "chatcmpl-example",
"object": "chat.completion",
"created": 1791993600,
"model": "kimi-k3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Retry with exponential backoff and jitter, and make every handler idempotent."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 19,
"completion_tokens": 16,
"total_tokens": 35
}
}

レスポンスのフィールド

フィールド型説明
idstring補完 ID。サポート対応や請求の照合のため、リクエスト ID と合わせて記録してください。
modelstring実際に回答したモデル。
choices[].message.contentstring回答テキスト。
choices[].message.reasoning_contentstring推論テキスト。推論型モデルのみ返します。出力として課金されます。
choices[].message.tool_callsobject[]モデルが実行を求める関数呼び出し。finish_reason が tool_calls のときに含まれます。
choices[].finish_reasonstringstop は回答が完結、tool_calls はツール呼び出しの要求、length は max_tokens に達したことを示します。
usageobjectトークン数。呼び出しは実際のトークン使用量で計量されます。
usage.completion_tokens_details.reasoning_tokensinteger推論トークン数。completion_tokens にすでに含まれており、出力として課金されます。

ストリーミング

"stream": true を指定します。回答は chat.completion.chunk イベントとして順に届き、最後に data: [DONE] で終わります。

  • レスポンスは text/event-stream です。ストリーミングしない場合は application/json です。
  • テキストは choices[0].delta.content に入ります。推論型モデルは、先に delta.reasoning_content で推論を送ります。
  • モデルを呼び出す前に失敗した場合は、ストリームイベントではなく、HTTP ステータス付きの通常の JSON エラーが返ります。
  • 明示的なタイムアウトを設定し、ストリーミングの再接続は安全に行ってください。
data: {"id":"chatcmpl-example","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":"Retry"},"finish_reason":null}]}
data: {"id":"chatcmpl-example","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" with backoff"},"finish_reason":null}]}
data: {"id":"chatcmpl-example","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]

エラー

エラーまたは症状原因対処
content が空で、finish_reason が length推論型モデルが max_tokens の枠をすべて推論に使いました。モデルの最大出力の範囲内で max_tokens を増やします。
402 insufficient_credits残高がリクエストの料金に足りません。max_tokens が非常に大きいことが多い原因です。チャージするか、max_tokens を小さくします。
403 forbiddenアカウントが無料クレジットのみでそのモデルが無料リストにない、またはモデルがキーのグループの範囲外です。チャージする、無料モデルを使う、またはそのモデルに届くグループのキーを使います。
404 not_foundモデル ID が存在しない、またはこのキーで有効になっていません。GET /v1/models で有効なモデルを一覧します。
429 rate_limit_exceededアカウントまたは無料モデルの上限に達しました。Retry-After の時間だけ待ってから再試行します。

HTTP エラー早見表

認証、ルーティング、レート制限、存在しないモデルの失敗はモデルを呼ぶ前に起き、BeatAPI のエンベロープ(error.code、error.message、retryable、request_id)で返ります。それ以外の失敗は OpenAI SDK の形式 {"error": {"message", "type", "code"}} のままで、コードは error.code、request id は message の末尾にあります。詳しくはエラーを参照してください。

HTTP ステータスエラーコード対応
400bad_request、content_policy_violationリクエストか入力を直してください。そのまま再送しないでください。
401missing_api_key、invalid_api_keyキーを確認してください。再試行しないでください。
402insufficient_creditsチャージするか、キーの上限を上げてください。max_tokens が非常に大きい場合も発生します。
403forbiddenモデルがキーのグループまたは IP 許可リストの範囲外、または無料クレジットでは呼べないモデルです。
404not_foundモデルが存在しません。GET /v1/models で有効なモデルを確認してください。
429rate_limit_exceededRetry-After または retry_after_seconds だけ待ち、バックオフして再試行してください。
500internal_error、temporary_errorバックオフして 1~2 回再試行してください。
503model_unavailable、upstream_timeout、temporary_errorバックオフして再試行するか、別のモデルを使ってください。

全エラーコード表と再試行ポリシーはエラーを参照してください。

注意事項

  • Kimi は OpenAI Responses と Anthropic Messages でも呼び出せます。
  • Kimi K3 は既定で思考してから回答します。推論トークンは出力トークンに数えられ、出力として課金されます。
  • API キーは信頼できるサーバーにだけ置き、レスポンスのリクエスト ID を記録し、再試行は 429、500、503 に限ってください。

認証

AuthorizationBearer

Send your API key as Authorization: Bearer <BEATAPI_API_KEY>.

リクエスト

This endpoint expects an object.
modelenum必須

正確なモデル ID。

各 ID は独立したモデルで、他のモデルの別名ではありません。

キーで GET /v1/models を呼ぶと、そのキーで有効なモデルを確認できます。

kimi-k3

許可された値:
messageslist of objects必須

会話の内容。古いメッセージが先頭です。各メッセージには role(system、user、assistant、tool)と content があります。

max_tokensintegerオプション

生成するトークン数の上限。推論の分も含みます。

ゲートウェイは、指定値を上の表の最大出力と照合しません。その数値以下に収めてください。

max_tokens は、リクエストに必要な残高の見積もりにも使われます。極端に大きい値だと、実際の出力が短くても 402 insufficient_credits で拒否されることがあります。必要な分だけ指定してください。

推論型モデルは先に推論を出力します。max_tokens が小さすぎると推論で使い切られ、content が空になって finish_reason が length になります。推論と本文の両方に余裕を持たせ、length が出たら値を増やしてください。

streambooleanオプションデフォルト値 false

回答をサーバー送信イベント(SSE)として返します。下の「ストリーミング」を参照してください。

temperaturedoubleオプション

サンプリング温度。top_p とはどちらか一方だけ調整してください。

top_pdoubleオプション

nucleus sampling のしきい値。

stopstring or list of stringsオプション

生成を止める文字列を 1 つ以上指定します。

toolslist of objectsオプション

モデルが呼び出せる関数の定義。モデルは tool_calls で応答します。各結果は、対応する tool_call_id を付けた次の tool メッセージで返してください。

tool_choicestring or map from strings to anyオプション

モデルがツールを呼び出してよいか、必ず呼ぶか、呼ばないかを指定します。依存する値は使うモデルで試してください。

レスポンス

非ストリーミングの呼び出しは JSON オブジェクトを 1 つ返します。以下は省略した例です。

idstringオプション

補完 ID。サポート対応や請求の照合のため、リクエスト ID と合わせて記録してください。

modelstringオプション

実際に回答したモデル。

choiceslist of objectsオプション
usageobjectオプション

トークン数。呼び出しは実際のトークン使用量で計量されます。

エラー

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
403
Forbidden Error
404
Not Found Error
429
Too Many Requests Error
500
Internal Server Error
503
Service Unavailable Error