Moonshot AIのKimi K2.6の発表は、これをコーディング、長期的実行、エージェントスウォームにおける新しいオープンソースの最先端技術として位置付けています。これを動かすAPIはOpenAI互換で、https://api.moonshot.ai/v1でホストされており、プラットフォームでドキュメントが提供されています。OpenAI SDKがインストールされていれば、約5分で実際の要求を送信できます。
このガイドでは、認証、初回のリクエスト、ストリーミング、ツール呼び出し、ビジョンおよびビデオ入力、思考モード、そして300個のサブエージェントでエージェントスウォームを駆動する方法について順を追って説明し、統合コードを記述する前にApidogを使ってすべてのエンドポイントをテストする方法を示します。
TL;DR: 60秒でわかるKimi K2.6 API
- ベースURL:
https://api.moonshot.ai/v1 - エンドポイント:
POST /chat/completions - モデルID:
kimi-k2.6,kimi-k2.6-thinking - 認証:
Authorization: Bearer $KIMI_API_KEY - 形式: OpenAIチャット補完スキーマ(messages, tools, streamなど)
- コンテキスト: 入力トークン262,144、推論用出力トークン最大98,304
- デフォルト設定: temperature 1.0, top-p 1.0(Moonshotの公式ガイダンスによる)
最小限のcurl:
curl https://api.moonshot.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $KIMI_API_KEY" \
-d '{
"model": "kimi-k2.6",
"messages": [{"role": "user", "content": "Write a Python function that reverses a string."}]
}'
以上です。このガイドの残りの部分では、エージェントスウォームや、Moonshotが設定する4,000ステップの実行上限を含む詳細について説明します。

このAPIで実際にできること
Kimi K2.6の発表によると、このAPIはプロダクション環境で以下のすべてを可能にします。
- 1つのタスクで12時間以上実行されるコーディングエージェント(Qwen3.5-0.8B Mac推論デモを参照:4,000以上のツール呼び出し、スループットは15トークン/秒から193トークン/秒に向上)。
- 自動インシデント対応を備えた複数日セッションにわたる自律的なインフラ管理。
- Rust、Go、Python、Zig全体での長期的な信頼性。
- 4,000以上の協調ステップを実行する最大300のサブエージェントからなるエージェントスウォーム。
- 単一のプロンプトから認証、データベース、トランザクションを備えたフルスタックアプリを生成するデザイン駆動開発。
- ビジョン+Pythonツール使用パイプライン(PythonによるMathVision:93.2%)。
Claude Codeのコンピューター使用、独自のClaude Codeの構築、またはCursor Composer 2と同じカテゴリのツールを構築している場合、K2.6 APIはモデル層で直接置き換え可能です。
ステップ1: APIキーの取得
- platform.moonshot.ai(またはplatform.kimi.ai)にアクセスし、サインアップします。メールまたはGoogle OAuthで利用可能です。
- アカウントを確認します。海外ユーザーはSMS認証が必要な場合があります。
- 請求情報を追加します。Moonshotは通常、新規アカウントに少額の無料残高を付与します。
- ダッシュボードでAPI Keysを開き、Create Keyをクリックします。
- キーをすぐにコピーします(一度だけ表示されます)。
- エクスポートします:
export KIMI_API_KEY="sk-..."
本番環境向けに.zshrc、.bashrc、またはシークレットマネージャーに追加してください。決してコミットしないでください。
開発中に料金を支払いたくないですか?Kimi K2.6を無料で利用する方法では、Cloudflare Workers AI、セルフホストされた重み、無料クレジットプログラムについて説明しています。
ステップ2: SDKの選択
このAPIはOpenAI互換であるため、ベースURLを変更すれば公式のOpenAI SDKが機能します。
| オプション | インストール | 最適用途 |
|---|---|---|
| curl | 組み込み | クイックテスト、CI |
| OpenAI Python | pip install openai |
Pythonサービス |
| OpenAI Node | npm install openai |
JS/TSアプリ |
Python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("KIMI_API_KEY"),
base_url="https://api.moonshot.ai/v1",
)
response = client.chat.completions.create(
model="kimi-k2.6",
messages=[{"role": "user", "content": "What is the capital of France?"}],
)
print(response.choices[0].message.content)
Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.KIMI_API_KEY,
baseURL: "https://api.moonshot.ai/v1",
});
const response = await client.chat.completions.create({
model: "kimi-k2.6",
messages: [{ role: "user", content: "What is the capital of France?" }],
});
console.log(response.choices[0].message.content);
curl
curl https://api.moonshot.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $KIMI_API_KEY" \
-d '{
"model": "kimi-k2.6",
"messages": [{"role": "user", "content": "What is the capital of France?"}]
}'
これら3つはすべて同じレスポンス形式を返します。
ステップ3: リクエストボディを理解する
OpenAIチャット補完と同じフィールド:
{
"model": "kimi-k2.6",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "Your prompt here." }
],
"temperature": 1.0,
"top_p": 1.0,
"max_tokens": 8192,
"stream": false,
"tools": [],
"tool_choice": "auto",
"thinking": { "type": "disabled" }
}
Moonshot固有の注意点が2つあります:
- デフォルト値が高い。公式ブログでは、調整済みデフォルトとしてtemperature 1.0とtop-p 1.0を推奨しています。OpenAIのコーディングワークフローからtemperature 0.2の習慣を引き継がないでください。
thinkingはkimi-k2.6-thinkingでの推論トレースを切り替えます。{"type": "disabled"}は迅速な回答のためにこれを抑制します。
ステップ4: ストリーミング
ストリーミングは、あらゆるUIや長時間の生成において適切なデフォルトです。推論タスクの最大出力は98,304トークンに達する可能性があり、それを一度にすべて待つのは避けたいでしょう。
Python
stream = client.chat.completions.create(
model="kimi-k2.6",
messages=[{"role": "user", "content": "Write a 500-word essay on MoE models."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Node.js
const stream = await client.chat.completions.create({
model: "kimi-k2.6",
messages: [{ role: "user", content: "Write a 500-word essay on MoE models." }],
stream: true,
});
for await (const chunk of stream) {
const delta = chunk.choices[0]?.delta?.content;
if (delta) process.stdout.write(delta);
}
ストリーミングはツール呼び出しでも機能します。引数は連結するJSONデルタとして到着します。
ステップ5: ツール呼び出し
Moonshotは、パートナーテストでToolathlonスコア50.0%およびツール呼び出し成功率96.60%を報告しています。形式は標準的なOpenAIの関数呼び出しスキーマであるため、既存のQAエンジニア向けのAPIテストワークフローが適用されます。
ツールの定義
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather in a location.",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["location"]
}
}
}
]
初回呼び出し(モデルが決定)
import json
messages = [{"role": "user", "content": "What's the weather in Tokyo?"}]
resp = client.chat.completions.create(
model="kimi-k2.6",
messages=messages,
tools=tools,
tool_choice="auto",
)
msg = resp.choices[0].message
messages.append(msg)
if msg.tool_calls:
for call in msg.tool_calls:
args = json.loads(call.function.arguments)
result = fetch_weather(args["location"], args.get("unit", "celsius"))
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps(result),
})
2回目の呼び出し(最終回答)
final = client.chat.completions.create(
model="kimi-k2.6",
messages=messages,
tools=tools,
)
print(final.choices[0].message.content)
K2.6は多段階ツールチェーンに強く、それがKimi Codeのような長時間実行されるコーディングエージェントを実現可能にしています。フレームワークの比較として、Claude Codeワークフローは異なるバックエンドで同じループをカバーしています。
ステップ6: ビジョン入力
K2.6はMMMU-Proで79.4%、V*(Python使用)で96.9%のスコアを記録しています。画像はOpenAIのimage_urlコンテンツ形式を使用してユーザーメッセージに入力されます:
response = client.chat.completions.create(
model="kimi-k2.6",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image in one sentence."},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
]
}
],
)
ローカルファイルの場合、base64エンコードします:
import base64
with open("photo.jpg", "rb") as f:
b64 = base64.b64encode(f.read()).decode("utf-8")
image_url = f"data:image/jpeg;base64,{b64}"
OCRまたは図の読み取りには、明確なテキスト指示を画像と組み合わせます。数学の問題には、Pythonインタープリターツールを含めます。MathVisionの93.2%のスコアは、Pythonアクセスが有効な状態で測定されました。
ステップ7: ビデオ入力
ビデオURLまたはフレームシーケンスを渡します:
response = client.chat.completions.create(
model="kimi-k2.6",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Summarize what happens in this video."},
{"type": "video_url", "video_url": {"url": "https://example.com/clip.mp4"}}
]
}
],
)
短いクリップ(30秒未満)は1回の呼び出しで機能します。より長いビデオは、フレームごとの推論によって大量のトークンが生成されるため、ストリーミングの恩恵を受けます。
ステップ8: 思考モード
kimi-k2.6-thinkingは目に見える推論トレースを生成します(OpenAIのo1スタイルのモデルに似ています)。Moonshotは、思考モードが有効な場合、AIME 2026で96.4%、GPQA-Diamondで90.5%を報告しています。
思考モードオン(思考モデルのデフォルト):
response = client.chat.completions.create(
model="kimi-k2.6-thinking",
messages=[{"role": "user", "content": "Prove sqrt(2) is irrational."}],
)
思考モードオフ:
response = client.chat.completions.create(
model="kimi-k2.6-thinking",
messages=[{"role": "user", "content": "Quick: what's 17 * 23?"}],
extra_body={"thinking": {"type": "disabled"}},
)
推論トレースはレスポンスのreasoningフィールドで返されます。これをエンドユーザーから隠して最終的な回答のみを表示することも、デバッグログにパイプすることもできます。
ステップ9: エージェントスウォーム
エージェントスウォームは、最も学習する価値のある機能です。Kimi K2.6ブログによると、最大300のサブエージェント、4,000以上の協調ステップ、K2.5の3倍の容量を誇ります。
プラットフォームのエージェントパラメータを介して呼び出します:
response = client.chat.completions.create(
model="kimi-k2.6",
messages=[{
"role": "user",
"content": "Build a 5-page marketing site for a coffee brand with responsive design and a newsletter signup."
}],
extra_body={
"agent": {
"type": "swarm",
"max_agents": 30,
"max_steps": 4000
}
},
)
スウォーム呼び出しは数分から数時間実行されます。3つの実用的なヒント:
- ストリーミングを使用する。進行状況を確認し、不適切な実行は早期に停止したいでしょう。
max_agentsを制限する。300が上限ですが、ほとんどのタスクでは10~30の方が予測可能です。- 予算を設定する。長時間のスウォームタスクはトークンを急速に消費する可能性があります。すべてのレスポンスで
usageをログに記録し、メトリクスにパイプしてください。
Kimiブログでは、13時間かけて4,000行以上のコードを変更したデモ実行について説明しています。そのアーキテクチャがこれを可能にし、APIフラグはそれを有効にするだけです。
ステップ10: Apidogで全てをテストする
上記の各セクションでは、異なるボディ形式、ヘッダー要件、またはレスポンス形式を紹介しています。Apidogはデバッグループをビジュアルなワークフローに変えます。

ApidogでのKimi K2.6セットアップ
- Apidogをダウンロードし、プロジェクトを作成します。
BASE_URL = https://api.moonshot.ai/v1とKIMI_API_KEY = sk-...の2つの変数を持つkimi-prod環境を作成します。- 新しいAPIリクエスト:
POST {{BASE_URL}}/chat/completions。 - ヘッダー:
Authorization: Bearer {{KIMI_API_KEY}},Content-Type: application/json。 - ボディ(ストリーミング例):
{
"model": "kimi-k2.6",
"messages": [{ "role": "user", "content": "Hello, Kimi K2.6!" }],
"stream": true
}
- Sendをクリックします。トークンはリアルタイムでレスポンスパネルにストリーミングされます。
Apidogが提供する追加機能
- OpenAIチャット補完仕様に対するスキーマ検証により、不足しているフィールドが即座に表示されます。
- リクエスト履歴により、奇妙なレスポンスを生成した正確な呼び出しを再生できます。
- 開発、ステージング、本番キー間の環境切り替えがワンクリックで可能です。
- プロジェクトエクスポートによるチーム共有。50人以上のエンジニアチーム向けのAPIテストを参照してください。
- Moonshotでインシデントが発生した場合やオフラインの場合のモックサーバー。
- Kimiのストリーミング形式をきれいに処理するSSEストリームサポート(多くのAPIツールでは不可能です)。
エディター内テストの場合、ApidogはVS Code拡張機能としても提供されています。現在Postmanに縛られている場合は、PostmanなしでAPIテストを行う方法で移行手順が説明されています。
手間のかからないエラーハンドリング
Moonshotは標準のHTTPステータスコードを使用します:
- 400: 不正なリクエスト。通常、不正な形式のボディまたは間違ったモデル名。
- 401: 認証失敗。キーが見つからない、間違っている、または期限切れ。
- 429: レート制限またはクォータ超過。
- 500: サーバーエラー。指数関数的バックオフで再試行。
- 529: 過負荷。数秒後に再試行。
リトライラッパー:
import time
from openai import OpenAI, RateLimitError, APIError
def call_kimi(messages, max_retries=5):
for attempt in range(max_retries):
try:
return client.chat.completions.create(
model="kimi-k2.6",
messages=messages,
)
except RateLimitError:
time.sleep(2 ** attempt)
except APIError as e:
if e.status_code >= 500 and attempt < max_retries - 1:
time.sleep(2 ** attempt)
else:
raise
raise RuntimeError("Kimi K2.6 failed after retries")
ストリーム途中での切断の場合、受信したトークンを追跡し、接続が切れた場合は「ここから続行」の指示で再開します。98,304トークンの推論出力上限は、長いストリームが正常であり、エラーではないことを意味します。
コスト管理
Moonshotはkimi.com/membership/pricingで価格を公開しています。請求額を予測可能に保つための3つのプロダクション級のヒント:
max_tokensを上限設定する。ユースケースの最小値に設定します。チャットの返信には2,048で十分です。- システムプロンプトをキャッシュする。Moonshotのプロンプトキャッシングは、繰り返されるシステムメッセージで機能します。静的な指示を最初に配置します。
usageをログに記録する。すべてのレスポンスにはprompt_tokens、completion_tokens、total_tokensが含まれます。これらをPrometheusまたは使用するメトリクススタックにパイプし、アラートを設定します。
本番パターン: GitHubイシューフィクサー
以下は、Kimi K2.6のツール呼び出しループに基づいて構築された、GitHubイシューを読み取り、関連コードを特定し、修正案を提案し、テストを実行するエージェントです:
from openai import OpenAI
import os, json
client = OpenAI(
api_key=os.getenv("KIMI_API_KEY"),
base_url="https://api.moonshot.ai/v1",
)
tools = [
{"type": "function", "function": {
"name": "read_file",
"description": "Read a file in the repo.",
"parameters": {
"type": "object",
"properties": {"path": {"type": "string"}},
"required": ["path"]
}
}},
{"type": "function", "function": {
"name": "search_code",
"description": "Ripgrep the codebase for a pattern.",
"parameters": {
"type": "object",
"properties": {"query": {"type": "string"}},
"required": ["query"]
}
}},
{"type": "function", "function": {
"name": "run_tests",
"description": "Run the project test suite.",
"parameters": {"type": "object", "properties": {}}
}},
]
def tool_dispatch(name, args):
if name == "read_file":
with open(args["path"]) as f:
return f.read()
if name == "search_code":
return run_ripgrep(args["query"])
if name == "run_tests":
return run_pytest()
raise ValueError(f"Unknown tool: {name}")
messages = [
{"role": "system", "content": "You are a senior engineer. Fix the described bug."},
{"role": "user", "content": "Issue: login form submits twice on slow networks."}
]
while True:
resp = client.chat.completions.create(
model="kimi-k2.6",
messages=messages,
tools=tools,
)
msg = resp.choices[0].message
messages.append(msg)
if not msg.tool_calls:
print(msg.content)
break
for call in msg.tool_calls:
result = tool_dispatch(call.function.name, json.loads(call.function.arguments))
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": result,
})
これは、extra_bodyスウォーム設定を追加することでエージェントスウォームにスケールアップします。また、人間が介入するチェックポイントが必要な場合は、Hermesマルチエージェントスタックともうまく連携します。
よくある質問
Moonshot固有のSDKは必要ですか?いいえ。base_urlを変更すれば、OpenAI PythonおよびNode SDKが機能します。
APIにはレート制限がありますか?はい。制限は、お客様のティアと使用履歴に応じて変わります。ダッシュボードを確認してください。
Kimi K2.6はLangChain、LlamaIndex、Vercel AI SDKと連携しますか?はい。OpenAI互換のベースURLを受け入れるあらゆるフレームワークで動作します。
Kimi K2.6はJSONモードをサポートしていますか?はい。有効なJSON出力にはresponse_format: {"type": "json_object"}を渡し、厳密なスキーマには{"type": "json_schema", "json_schema": {...}}を渡します。
コンテキストウィンドウのサイズは正確にはどれくらいですか?公式ブログによると、入力トークンは262,144、推論タスクの最大出力は98,304トークンです。
API経由でKimi K2.6をファインチューニングできますか?まだできません。現状では、ファインチューニングはオープンウェイトを自身のハードウェアで実行することを意味します。
kimi-k2.6とkimi-k2.6-thinkingの違いは何ですか?kimi-k2.6は高速エージェントモデルです。kimi-k2.6-thinkingは推論ステップを公開し、数学、論理、および困難な計画(AIME 2026: 96.4%、GPQA-Diamond: 90.5%)向けに調整されています。
無料枠はありますか?Cloudflare Workers AI、kimi.comチャット、およびセルフホストオプションについては、Kimi K2.6無料アクセスガイドを参照してください。
まとめ
Kimi K2.6 APIは、ベースURLとAPIキーの2つの変更で、あらゆるOpenAI互換ツールチェーンに組み込むことができます。そこから、262Kのコンテキストウィンドウ、300のサブエージェントを持つエージェントスウォーム、96.60%の呼び出し成功率に調整されたツール呼び出し、そしてホスト型APIから移行したい場合のフォールバックとしてオープンソースの重みを利用できます。
新しい統合を構築する場合は、まずApidogを使用して各エンドポイントを構築および検証してください。これにより、スキーマの誤り、ストリーミングのバグ、認証の問題がコードベースに影響を与える前に発見できます。その後、動作するリクエストを自信を持ってPythonまたはNodeサービスに移植してください。
参考文献およびさらに読む
- 公式発表: Kimi K2.6 — Moonshot AIブログ
- APIクイックスタート: platform.kimi.ai
- APIプラットフォーム: platform.moonshot.ai
- Kimi Codeターミナルエージェント: kimi.com/code
- 価格設定: kimi.com/membership/pricing
- オープンウェイト: huggingface.co/moonshotai/Kimi-K2.6
- 関連するApidogガイド: Kimi K2.6とは、Kimi K2.6を無料で使う方法、OpenRouterでQwen 3.6を無料で使う、Qwen3.5-Omni API、VS CodeでApidogを使う方法、PostmanなしでAPIテストを行う方法、50人以上のエンジニアチーム向けAPIテスト、Claude Codeワークフロー、Cursor Composer 2。
