3行でいうと

  • APIは https://api.x.ai/v1、キーはconsole.x.aiで作り、環境変数 XAI_API_KEY に入れる、が公式の例の形です。最初の呼び出しは、Responses API(/v1/responses)です。OpenAIのSDKの base_url を差し替えて呼べます。
  • ツールは2種類です。公式のサーバーで動く組み込み(Web Search、X Search、Code Execution、Image Generation、Collections Search)と、自分のコードが実行する関数呼び出し。リモートMCPは、tools に "type": "mcp" を入れて渡します。allowed_tools で使えるツールを絞れます。
  • 関数呼び出しは、モデルが関数の実行を頼み、自分のコードが実行して結果を返す方式です。画像と動画は、生成のAPIで、動画は結果が出るまで状態を確かめる流れです。
  • Grok Build、docsのMCPサーバー、Claude Codeの設定の読み込みは、第9本(その3)に分けました。
  • Claude DesktopなどからGrokを呼ぶ手順は、読んだ公式のページには見つかりませんでした。

この記事は、公式の資料を2026年10月25日に読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。運営者はGrokを入れていますが、使い心地はこの記事には書いていません。コードと設定の例は、公式のページを要約の形で取得して読み取ったもので、記号や改行が崩れていないか、必ず公式ページの原文と照らしてください。例の指示文は「この記事の例」です。

先に結論

前提:用語をそろえる

組み合わせの地図(公式に記述があるものだけ)

組み合わせ 向き 公式の記述の場所 この記事の節
自分のコード → Grok API 呼ぶ Quickstart 連携A
OpenAIのSDK → Grok API SDKの接続先を差し替える Quickstart 連携A、連携B
Vercel AI SDK → Grok API 同上 Quickstart、Tools 連携A、連携C
Grok API → DeepWikiなどのリモートMCP Grokが外のMCPを使う Remote MCP Tools 連携D
Grok API → 自分のMCP(トンネル経由) 同上 Database over MCP(cookbook) 連携D
Grok API → 自分の関数 自分のコードが実行する Function Calling 連携E
Grok API → 画像・動画 生成する Imagine 連携F
Grok Build ← Claude Codeの設定 読み込む Skills, plugins; AGENTS.md; MCP Servers 第9本 連携H
Grok Build → 他社のモデル 設定ファイルで追加 Grok Build overview 第9本 連携H
Grok Build ← 他のアプリ(ACP) 他のアプリが操作 Headless & Scripting 第9本 連携H
docsのMCPサーバー → 各種ツール ツールがdocsを読む Docs MCP 第9本 連携I

連携A:APIキーを作って、最初のリクエストを送る

手順(docs.x.ai/developers/quickstart と /overview)

  1. console.x.ai で、アカウントを作ります。公式は、APIを使う前に、クレジットを追加する、と書いています。購入は、コンソールの請求のページです(docs overviewの「Purchase credits」のボタンが請求のページへ向いています。このページのURL console.x.ai/team/default/billing は、今回読んだQuickstartの本文では確認できていません)。
  2. コンソールの「API Keys」のページ(console.x.ai/team/default/api-keys)で、キーを作ります。ボタンの名前は、docs overviewは「Create API key」、security FAQは「Create API Key」と書いています(表記が少し違います。手元の画面を見てください)。キーはチーム単位で、チームを間違えないように、とsecurity FAQにあります。
  3. キーを環境変数に入れます。公式の例(Bash):
export XAI_API_KEY="your_api_key"

または、プロジェクトのフォルダの .env ファイルに、次のように書きます。

XAI_API_KEY=your_api_key

.env を使うなら、公開のリポジトリに入れないでください(security FAQの注意)。 4. SDKを入れます(公式の表)。

言語 コマンド
JavaScript(AI SDK) npm install ai @ai-sdk/xai zod
Python(OpenAI) pip install openai
JavaScript(OpenAI) npm install openai
Python(xAI SDK) pip install xai-sdk
  1. 最初のリクエストを送ります。公式の例は、grok-4.7 に、コードの修正を頼む1文を送ります。

curl(公式の例)

curl https://api.x.ai/v1/responses \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-4.7",
    "input": "Fix this function and explain the bug: function median(a){a.sort();return a[a.length/2]}"
  }'

Python:OpenAIのSDK(公式の例)

from openai import OpenAI

client = OpenAI(
    api_key="<YOUR_XAI_API_KEY_HERE>",
    base_url="https://api.x.ai/v1",
)

response = client.responses.create(
    model="grok-4.7",
    input="Fix this function and explain the bug: function median(a){a.sort();return a[a.length/2]}",
)

print(response.output_text)

このPythonの例の <YOUR_XAI_API_KEY_HERE> は、キーを直接書く形のプレースホルダーです。同じQuickstartの画像の例は、api_key=os.getenv("XAI_API_KEY") と環境変数から読んでいます。キーを直接書かずに環境変数から読む形に置きかえる案は、この記事の案です(動作は確かめていません)。

Python:xAI SDK(公式の例)

import os
from xai_sdk import Client
from xai_sdk.chat import user

client = Client(api_key=os.getenv("XAI_API_KEY"))

chat = client.chat.create(model="grok-4.7")
chat.append(user("Fix this function and explain the bug: function median(a){a.sort();return a[a.length/2]}"))

print(chat.sample().content)

JavaScript(OpenAI SDK、AI SDK)の例もQuickstartにあります。全文は公式ページで確認してください。

期待される結果

返事の本文が、標準出力に表示されます。返事の内容は毎回違います。

続きの会話(Responses API)

docs.x.ai の「Multi-Turn Conversations」が書く内容です。

呼び出しが失敗するとき(docs.x.ai/developers/debugging、rate-limits)

状況 公式の記載
401 認証ヘッダーがない、またはトークンが無効。Bearerのトークンを付ける。新しいキーをコンソールで作る
403 チームの管理者にアクセスを頼む
404 リクエストの本文とURLをAPIリファレンスと比べる
405 HTTPメソッドが合っていない
422 POSTの本文のどこかの形式が正しくない
429 リクエストの頻度の上限を超えた。頻度を下げるか、コンソールで上限を上げる。公式の例は、待ち時間を倍にして再試行(1秒、2秒、4秒…)し、5回で止める

キーが漏れたかもしれないとき(security FAQの手順)

  1. コンソールにログインし、正しいチームか確認します(キーはチームごと)。
  2. サイドバーの「API Keys」を開きます。
  3. キーの横の「⋯」のメニューから、「Disable key」(一時的)か「Delete key」(恒久)を選びます。
  4. 「Create API Key」で新しいキーを作り、アプリを更新します。

  5. 公式は、GitHubのSecret Scanningと提携していて、漏れたキーが見つかると無効にしてメールで知らせる、とも書いています。

  6. 公式は、キーを定期的に入れ替える、チームのメンバーでキーを共有しない、と書いています。

渡るデータ、保存

連携B:OpenAIのSDKで、接続先だけをGrokにする

公式のQuickstartの例が示す形です。既存のコードが、OpenAIのSDKでResponses APIを呼んでいるなら、変えるのは、base_url と api_key、そして model の名前です。

client = OpenAI(
    api_key="<YOUR_XAI_API_KEY_HERE>",
    base_url="https://api.x.ai/v1",
)

連携C:ツールを付ける(検索、Xの検索、コード実行)

何ができるか(docs.x.ai/developers/tools/overview)

ツール 有効にする書き方(OpenAI SDK、curl)
Web Search {"type": "web_search"}
X Search {"type": "x_search"}
Code Execution {"type": "code_interpreter"}(xAI SDKは code_execution()、AI SDKは codeExecution)
Image Generation、Collections Search このページには書き方が無い(別ページがある)

curl(公式の例の形。ストリームで受ける)

curl https://api.x.ai/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -d '{
  "model": "grok-4.7",
  "stream": true,
  "input": [
    {"role": "user", "content": "What are the latest updates from SpaceXSI?"}
  ],
  "tools": [
    { "type": "web_search" },
    { "type": "x_search" },
    { "type": "code_interpreter" }
  ]
}'

絞り込み(公式のパラメータ)

この記事の例(指示文):

Xで、アカウント「SpaceX」の2026年10月の投稿だけを対象に、話題を3つ挙げてください。投稿のリンクを付けてください。

この例に対応する設定は、allowed_x_handles: ["SpaceX"]、from_date: "2026-10-01"、to_date: "2026-11-01" です(公式のパラメータ名を使って、この記事で組んだ例。動作は確かめていません)。

連携D:リモートMCPをAPIで使う

設定の形(docs.x.ai/developers/tools/remote-mcp)

tools に、次のような項目を入れます。

パラメータ 必須 意味
type 公式の表には載っていない(例には "type": "mcp" が入っている) "mcp"
server_url はい MCPサーバーのURL。Streaming HTTPとSSEのみ対応
server_label はい サーバーの名前。ツール呼び出しの接頭辞になる
server_description いいえ サーバーの説明
allowed_tools いいえ 有効にするツールの名前の一覧。空か省略ですべて。xAI SDKでは allowed_tool_names
authorization いいえ MCPサーバーへのリクエストの Authorization ヘッダーに入れるトークン
headers いいえ 追加のヘッダー。xAI SDKでは extra_headers

公式の例(DeepWikiのMCPサーバー)

DeepWikiは、公式の例が使う第三者のMCPサーバーです(https://mcp.deepwiki.com/mcp)。

import os
from openai import OpenAI

client = OpenAI(api_key=os.getenv("XAI_API_KEY"), base_url="https://api.x.ai/v1")

response = client.responses.create(
    model="grok-4.7",
    input=[{"role": "user", "content": "What can you do with https://github.com/xai-org/xai-sdk-python?"}],
    tools=[{"type": "mcp", "server_url": "https://mcp.deepwiki.com/mcp", "server_label": "deepwiki"}],
)
print(response)

curl、requests、xAI SDK(mcp(server_url=..., server_label=...))の例も、同じページにあります。

渡るデータ、制限、権限

公式のcookbook:自分のデータベースをMCPで渡す(Database over MCP)

自分のパソコンのSQLiteを、MCPサーバー(Node)で公開し、Cloudflareの簡易トンネルで公開URLを与え、grok-4.7 に質問させる例が、docs.x.aiのcookbookにあります。要点だけ並べます(全文は公式ページ)。

  1. 用意:Node.js 22.13以上、cloudflared、環境変数 XAI_API_KEY。
  2. 実行:公式のリポジトリの例のフォルダで、npm install のあと npm run web。サンプルのデータベースを作り、MCPサーバー(3001番)、トンネル、画面(3000番)を起動します。
  3. Grokへの渡し方:mcp() に、server_url、server_label、server_description、allowed_tools、authorization(その回だけの使い捨てのトークン)を渡します。
  4. ツール:list_tables、describe_table、run_query(SELECTのみ)。
  5. 公式が書く守り方(サーバー側):読み取り専用の接続、SELECTかWITHで始まる1文だけ許可、返す行数の上限(100行)、1つの問い合わせの時間の上限(5秒)、回答ごとの使い捨てトークン、トンネルを通すのはMCPのサーバーだけで、画面は通さない。モデルの判断に頼らず、サーバーが自分で制限する、という書き方です。
  6. 費用:公式は、リモートMCPの呼び出し自体は課金されず、トークンが課金される、と書いています。

公式のcookbook:外から来た文章への備え(Prompt Injection Defenses)

docs.x.aiのcookbookが、ウェブページなどの外部の文章に隠された指示への、防御の考え方を4つ挙げています(実装の全文は載っていません。セットアップと実行のコマンドと、検索を特定のドメインに絞る短い例があります)。

  1. 外の文章は「データ」として扱う(<untrusted> のような印で囲み、指示ではないとモデルに伝える)。
  2. 段階ごとに使える道具を絞る(読む段階には読むための道具だけ、送る段階には送るための道具だけ)。
  3. 道具を実行する前に、引数を確かめる(送信先を既知の連絡先に限る、リンクを自社のドメインに限る、など)。
  4. 副作用のある操作は、人が確認する。

公式は、それぞれに抜け穴があり、4つを重ねると、そのテストでは攻撃が通らなかった、と書いています。

連携E:関数呼び出し(自分のコードにつなぐ)

docs.x.ai の「Function Calling」の流れです。

  1. 名前、説明、パラメータのJSON Schemaで、関数を定義します。
  2. ツールとして、リクエストに付けます。
  3. モデルが外のデータが要ると判断すると、関数の呼び出しを返します。
  4. 自分のコードで、その関数を実行します。
  5. 結果を、function_call_output の項目として、call_id と previous_response_id を付けて返します。

公式の例(Python、OpenAI SDK)の核心部分は、tools に {"type": "function", "name": "get_temperature", ...} を渡し、返ってきた function_call を処理して、{"type": "function_call_output", "call_id": item.call_id, "output": ...} を送る、という形です。全文は公式ページで確認してください。

連携F:画像と動画をAPIでつくる

画像(公式のQuickstartの例)

curl -X POST https://api.x.ai/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -d '{
    "model": "grok-imagine-image-2.0",
    "prompt": "A futuristic city skyline at sunset"
  }'

動画(公式のページの流れ)

  1. POST https://api.x.ai/v1/videos/generations に、モデルと指示文を送ると、request_id が返ります。
  2. GET https://api.x.ai/v1/videos/{request_id} を、間をあけて繰り返し、状態が done か failed になるまで待ちます。
  3. done なら、返ってきたURLから動画を取ります。URLは一時的です。

  4. 長さは1〜15秒(既定8秒)、解像度は480p(既定)、720p、1080pです。音声は既定で付き、generate_audio を偽にすると無音になります。

  5. 公式の最小のPythonの例は、requests で grok-imagine-video-1.5、duration: 10、aspect_ratio: "16:9"、resolution: "720p" を送り、5秒おきに状態を見ます。全文は公式ページで確認してください。
  6. 失敗の理由は、invalid_argument(入力の誤り、長さが未対応、モデレーション)、permission_denied、failed_precondition、service_unavailable、internal_error などが書かれています。

連携G:ファイルを読ませる(API)

docs.x.ai の「Chat with Files」の内容です。

うまくいかないときの確認点(全体)

症状 確認点
401が返る キーを Authorization: Bearer で送っているか。環境変数 XAI_API_KEY が空でないか。キーを作ったチームが合っているか
429が返る 頻度を下げる。待ち時間を倍にして再試行。Modelsのページで上限を見る
リモートMCPが使えない URLがHTTPSで、公開で届くか。Streaming HTTPかSSEか。allowed_tools の名前が合っているか
require_approval が効かない Responses APIでは未対応と書かれている
MCPのツールが多すぎて遅い allowed_tools で絞る(公式の記述)
保存したレスポンスを消したい DELETE /v1/responses/{response_id}。ZDRでは保存されない

気をつけること

出典