3行でいうと
- Imagineを呼ぶAPIは、xAIのSDK、OpenAIのSDK(base_urlを変える)、JavaScriptのAI SDK、curlから使えると、Imagine Overviewが書いています。ただし画像編集では、OpenAIのSDKの
images.edit()は使えません。 - 「Grokが画像を作る」連携は、Responses APIの
toolsにimage_generationを足す形です。「Grokが外のサービスを呼ぶ」連携は、toolsにtype: mcpを足す形です。 - Files APIを使うと、「画像を作る → 保存 → 保存した画像を編集 → 動画にする」を、画像を再アップロードせずに、番号で渡してつなげられます。
- 外し方は、書かれているものと、書かれていないものがあります。APIキーの取り消しや、Files APIのファイルの削除の手順は、今回読んだページには書かれていませんでした。
この記事は、公式の資料を2026年10月25日に読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。運営者はGrok Imagineを入れていますが、使い心地はこの記事には書いていません。設定例は、「公式の例にもとづく形」か「この記事で組んだ案」のどちらかを、そのつど書きます。公式ページは要約の形で取得したため、コードは実行前に公式ページの原文と見比べてください。APIキー、サーバーのURL、認証を、システムに登録する操作は、原文を見て写すようにしてください。
先に結論
- 連携は、「呼ぶ側」と「呼ばれる側」の向きで分けると、迷いません。 表にまとめます。
| つなぎ方 | 向き | 設定する場所 | 主に渡るもの |
|---|---|---|---|
| OpenAI互換・AI SDK・xAI SDK | あなたのプログラム → Imagine | プログラムの中(base_urlとAPIキー) | 指示文、画像、動画の指定 |
| Files API | あなたのプログラム ⇄ xAIの保存場所 | リクエストの file_id、storage_options |
画像・動画のファイル |
| image_generationツール | Grokのチャット → Imagine | Responses APIの tools |
チャットの指示文と、作られた画像 |
| リモートMCPツール | Grokのチャット → あなたのMCPサーバー | Responses APIの tools(type: mcp) |
質問に必要な内容、サーバーが返す結果、認証トークン |
| grok.comのコネクタ | Grokの画面 → Googleなど/自前のMCP | grok.com/connectors | 質問に必要なファイルやメールの内容など |
| X Subscription | GrokとCursorで枠を共有 | accounts.x.ai/unify ほか | 課金とサインインの情報 |
- コネクタ(画面)とX Subscriptionの2つは、その2(08)に書きます。 grok.comのコネクタのページには、Imagineでコネクタが使えるかは書かれていませんでした。
- MCPを使うAPIの連携には、権限を絞る
allowed_tools(使えるツールの名前の一覧)があります。 連携4で扱います。
前提:用語をそろえる
- MCP:AIが外の道具を呼び出すための共通の規格です。サーバーの側が「使えるツール」を公開し、AIの側が呼びます。
- MCPサーバー:ツールを公開する側のプログラムです。公式のコネクタのページ(08で扱います)は、カスタムのMCPサーバーは「公開インターネットから届く」必要があると書いています。リモートMCPツールのページには、この記載は見つかりませんでした。
- OpenAI互換:OpenAIが決めた呼び方(SDKの書き方)を、xAIのAPIに向けて使えることです。OpenAIのサービスを使うという意味ではありません。
- Responses API:チャットのモデルに、ツールを持たせて呼ぶAPIの書き方です。公式のドキュメントは、OpenAIのResponses APIと互換の形で説明しています。
- ツール(tools):チャットのモデルが、必要なときに呼ぶ部品です。
image_generation、web_search、mcpなどがあると、各ページが書いています。 - OAuth:パスワードを渡さずに、サービス同士をつなぐ許可の仕組みです。画面のコネクタは、OAuthでサインインします。
- トンネル:手元のサーバーを、公開のURLで外から届くようにする仕組みです。
- file_id:Files APIに保存したファイルの番号です。
つなぐ前に:準備するもの
- APIを使う連携は、05のステップ7(アカウント、クレジット、APIキー、
XAI_API_KEY)が済んでいる前提です。 - チャットのモデル名として、公式の例は
grok-4.7を使っています。モデル名は変わります。公式で最新を確かめてください。
連携1:OpenAI互換・AI SDK・xAI SDKで、Imagineを呼ぶ
何ができるか(Imagine Overview):xAI SDK(Python、xai_sdk)、OpenAI SDK(Python、base_url を https://api.x.ai/v1 にする)、AI SDK(JavaScript、@ai-sdk/xai)、REST(curl)から、画像生成や動画生成を呼べます。
設定する場所:プログラムの中です。
手順:OpenAIのSDKから、画像を作る
pip install openaiを実行する(05のクイックスタートの一覧にあります)。- 次の形で書く。公式の「Image Generation」の例にもとづく形です。
from openai import OpenAI
client = OpenAI(
base_url="https://api.x.ai/v1",
api_key="YOUR_API_KEY",
)
response = client.images.generate(
model="grok-imagine-image-2.0",
prompt="A collage of London landmarks in a stenciled street-art style",
)
print(response.data[0].url)
YOUR_API_KEYの所は、自分のキーに置き換える。ファイルにキーをそのまま書き込む形は、共有やバージョン管理の事故のもとです。環境変数XAI_API_KEYから読む形にするかは、自分で決めます(公式のクイックスタートは、環境変数か.envを使う形を示しています)。- 実行し、
response.data[0].urlのURLを開く。
渡るデータ:指示文と、APIキー(Authorization ヘッダ)。結果は一時的なURLか、base64で返ります。
使えない書き方(公式の記載):画像編集では、OpenAIのSDKの images.edit() は multipart/form-data を使うため、xAIのAPIでは使えません(application/json を求める)。編集は、xAI SDK、Vercel AI SDK、または直接のHTTPリクエストで行う、と書かれています。
手順:JavaScriptのAI SDKから使う
npm install ai @ai-sdk/xai zodを実行する(クイックスタートの一覧)。- 画像は
generateImage(xai.image("grok-imagine-image-2.0")のように、モデルを渡す)、動画はgenerateVideoを使う、と、Imagine Overviewと各ページが書いています。動画は、ポーリングをSDKが自動で処理し、pollTimeoutMsでタイムアウトを指定できる、とVideo Editingのページにあります。 - 呼び出しの細かい形は、各ページの例が、取得結果で崩れていたものがあったため、この記事には書きません。公式の各ページで原文を見て写してください。
注意:image_generationツール(連携3)は、Vercel AI SDKに未対応、と公式のページが書いています。
外し方:プログラムからそのコードを消し、キーを使わなくする、ということになります。APIキーを無効にする手順は、今回読んだクイックスタートには、書かれていませんでした。キーの取り消しは、console.x.aiのAPI Keysのページに、あるかもしれませんが、確認できていません。
連携2:Files APIで、作ったものを次の依頼につなげる
何ができるか(Imagine → Files API Integration):Imagineのエンドポイントが公開URLやbase64の画像・動画を受け取る所では、保存済みファイルの file_id で代わりにできます。生成物をFilesの保存場所に入れることも、必要に応じて永続的で共有できる公開URLを作ることもできる、と書かれています。既定では、生成直後に imgen.x.ai か vidgen.x.ai の一時的なURLが返ります。
設定する場所:リクエストの file_id(入力側)と、xAI SDKの storage_options(保存側)です。
手順:画像を作る → 保存 → 保存した画像を編集 → 動画にする
公式のページの例にもとづく形です(Python、xAI SDK)。
import os
import xai_sdk
client = xai_sdk.Client(api_key=os.getenv("XAI_API_KEY"))
# 1. 画像を作って、保存する
gen = client.image.sample(
prompt="A futuristic city skyline at night",
model="grok-imagine-image-2.0",
storage_options={"filename": "city.jpg"},
)
city = gen.file_output.file_id
# 2. 保存した画像を、再アップロードせずに編集する
edit = client.image.sample(
prompt="Add neon signs to the buildings",
model="grok-imagine-image-2.0",
image_file_id=city,
storage_options={"filename": "city-neon.jpg"},
)
# 3. 編集した画像を動画にする
vid = client.video.generate(
prompt="A camera pulls back through the city",
model="grok-imagine-video-1.5",
duration=5,
image_file_id=edit.file_output.file_id,
)
print(vid.url)
- 1の
storage_options={"filename": ...}を付けると、生成物がFilesに保存されます。コメントは「公開URLを必要としない非公開の保存」と書いています。 - 保存後の番号は、
file_output.file_idで取ります。 - 2と3は、その番号を
image_file_id=に渡します。 - 3の動画は、
storage_optionsを付けていません。ページの概要には「images and videos」をFilesに保存できる、と読める記載がありますが、この例は動画の保存を示していません。保存の書き方は、公式の「Persisting Generated Output」のページで確かめてください(今回は読んでいません)。
REST(curl)で渡すとき:画像編集は image(url の代わりに file_id を使う形)、複数枚編集は images の各要素、動画は image・video・reference_images の中に、file_id を入れられます。各ページの記載は、「URL、data URI、file_id が使える」までで、JSONの file_id の書き方の例は、今回読んだページには載っていませんでした。「Imagine → Files API Integration」の原文で確かめてください。
渡るデータ:画像・動画のファイルが、xAIの保存場所(Files)に入ります。公開URLを作るオプションを使うと、そのURLを知る人が見られる形になる、と読めます(公開の範囲の説明は、今回読んだページにはありませんでした)。
外し方:ファイルの削除は、画面では grok.com/files で行える、とFAQが書いています(画面側の保存場所とAPIのFilesが同じ一覧なのかは、書かれていませんでした)。APIでの削除方法は、「Managing Files」のページを案内する書き方で、今回は読んでいません。公開URLの取り消しも、「Files → Public URLs」の案内のみで、読んでいません。
連携3:image_generationツールで、Grokのチャットから画像を作らせる
何ができるか(Image Generation Tool):Responses APIの tools に {"type": "image_generation"} を足すと、Grokが会話の中で、画像を作ったり編集したりします。いつ画像ツールを呼ぶか、画像用の指示文、縦横比は、モデルが決めます。ツールはサーバー側で動くので、1回の依頼の中で「作ってから直す」もできます、と書かれています。
設定する場所:Responses APIの tools です。サイズや形式のパラメータはなく、縦横比は指示文に書きます(「9:16の縦長」など)。任意の action は、省略すると auto(生成と編集の両方)、generate は生成のみ、edit は編集のみです。
手順:Python(OpenAI互換)で、画像を1枚作って保存する
公式の例にもとづく形です。
import base64, 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="Generate an image of a corgi surfing a big wave",
tools=[{"type": "image_generation"}],
)
for item in response.output:
if item.type == "image_generation_call":
with open("out.jpg", "wb") as f:
f.write(base64.b64decode(item.result))
- 結果は、出力項目
image_generation_callに入ります。resultが、data URLの接頭辞のないbase64の文字列で、そのままデコードできます。 promptの欄には、モデルが画像モデルに渡した指示文が入るので、確認に使えます。IDは、生成がig_、編集がie_で始まります。- xAI SDKでは、
tools=[image_generation()]を付けたチャットでchat.sample()し、response.image_outputsからバイト列を取って、ファイルに書き出します。
複数回のやり取り:xAI SDKでは前のレスポンスを append、Responses APIでは previous_response_id を渡すと、前の回の画像を見て直せます。自分で状態を持つなら、image_generation_call を含む出力項目を、次の依頼の input にそのまま戻します。
ほかのツールとの併用:ページは、web search、X search、code execution、クライアント側の関数と同じ依頼で使える、と書いています(mcp は、この一覧には出てきません)。この記事の案として、連携4(MCP)とも同じ tools に並べられるのでは、と考えますが、ページにその例は無く、動作は確認できていません。
渡るデータ:チャットの指示と、会話に添えた画像。結果はbase64です。ストリーミングでは、途中のプレビュー画像は送られません。
外し方:tools から image_generation を外します。制限:Vercel AI SDKは未対応。ツールの料金は、Pricingのページを案内する書き方で、今回は読んでいません。細かい指示を出したいときは、画像生成・編集のエンドポイントを直接使う、と案内されています。
連携4:リモートMCPツールで、Grokに外のサービスを呼ばせる
何ができるか(Remote MCP Tools):Grokが、外のMCPサーバーに接続して、第三者や自前のツールを使います。接続とやり取りはxAI側が管理します。使えるのは、xAIのSDK、OpenAI互換のResponses API、Speech to Speech APIと、ページが書いています。
設定する場所:Responses APIの tools です。
| 項目 | 必須 | 内容(ページの記載) |
|---|---|---|
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) |
手順:公開のMCPサーバーを、1つ呼ばせる
公式の例にもとづく形です(Python、OpenAI互換)。
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)
- 呼ばせたいMCPサーバーのURLを
server_urlに、名前をserver_labelに書く。 - 認証が要るサーバーなら、
authorizationにトークンを入れる。トークンは、そのMCPサーバーに送られます。 - 使わせたいツールが決まっているなら、
allowed_tools(xAIのSDKではallowed_tool_names)で絞る。ページは、省略するとサーバーが公開する全ツールの定義がモデルに入る、絞るとモデルへの負荷を減らせて、読み取り専用のツールだけを許可するなどリスクも抑えられる、と書いています。
渡るデータ:質問に必要な内容と、ツールの呼び出し、authorization と headers の値が、MCPサーバーに渡ります。サーバーが返した結果は、モデルの文脈に入ります。MCPサーバーが何を保存するかは、そのサーバーの運営者次第で、公式のページには書かれていません。
制限(ページの記載):OpenAIのResponses APIの require_approval と connector_id は、現時点で非対応です。複数のサーバーを同時に有効にできます。ページの本文に、料金の記載は見つかりませんでした(サイドバーに「Pricing」のリンクがあります)。
公式のセキュリティの注意:HTTPSのURLを使う、MCPサーバー側で認証を実装する、ツールが多いサーバーでは allowed_tools で絞る。
外し方:tools から該当の要素を消します。サーバー側で発行したトークンの無効化は、そのサービスの手順になります。
うまくいかないとき
| 症状 | 確認すること |
|---|---|
画像編集で images.edit() が動かない |
OpenAIのSDKの images.edit() は使えない(JSONで送る) |
image_generation で画像が来ない |
response.output の中の image_generation_call を探しているか。result はbase64(接頭辞なし)。モデルが画像ツールを呼ばないこともあるので、指示文で画像を作る旨を書く(この記事の案) |
Vercel AI SDKで image_generation が動かない |
未対応と書かれている |
| MCPサーバーに届かない | localhostやプライベートのアドレスは拒否される(Custom MCP Tunnelingのページの記載。08で扱います)。公開のURLにする。リモートMCPツールでも、サーバーがxAI側から届く必要がある、というのが、この記事の読み(ページは server_url と書くだけ) |
file_id の使い方が分からない |
JSONの書き方は、今回読んだページには例がなかった。原文で確認 |
動画のAPIが pending のまま |
数分かかることがある(Video Generationのページ) |
権限と渡るデータの一覧(その1の範囲)
| 連携 | 渡す権限・鍵 | 先に渡るデータ | 絞る方法(書かれているもの) |
|---|---|---|---|
| SDK・OpenAI互換 | APIキー | 指示文、画像 | 読んだページには、キーの権限を絞る記載はなかった |
| Files | 同じAPIキー | 保存したファイル | 「非公開の保存」と、公開URLを作るオプションの区別 |
| image_generation | 同じAPIキー | 指示文、添えた画像 | action で生成のみ・編集のみにできる |
| リモートMCP | 任意のトークン | 質問の内容、ツールの入出力 | allowed_tools、HTTPS |
APIの生成物については、Imagine Overviewが、コンテンツポリシーの審査の対象で、学習には使われない、と書いています。画面側の学習の扱いは、04を参照してください。コネクタとX Subscriptionの分は、その2(08)の一覧にあります。
次に読むもの
grok.comのコネクタ(Google Drive、自前のMCPサーバーとトンネル)、X Subscription(Cursorとの共有枠)、組み合わせの案は、08_grok-imagine_connect_steps_2.md(その2)にあります。
気をつけること
- この記事は、実際に使って確かめた記録ではありません。運営者はGrok Imagineを入れていますが、使い心地はこの記事には書いていません。公式の資料を読んだ範囲です。
- コードは、公式のページの例にもとづく形で、取得は要約を経由しています。APIキー、サーバーのURL、トークンを、システムやコードに登録する前に、公式ページの原文を見て確かめてください。
- 連携3と4を同じ依頼に並べる例は、公式のページになく、確認できていません。
- リモートMCPツールでは、
authorizationとheadersの値が、MCPサーバーに渡ります。そのサーバーが何を保存するかは、運営者の規約次第で、この記事では読んでいません。 - 第三者のサービス(MCPサーバーの運営者など)には、それぞれの規約があります。
- 画面の表記、モデル名、対応は変わります。公式で最新を確かめてください。この記事は法律の助言ではありません。
出典
- Imagine Overview(docs.x.ai、2026-10-08更新、確認日 2026-10-25)
- Image Generation(docs.x.ai、確認日 2026-10-25)
- Image Editing(docs.x.ai、確認日 2026-10-25)
- Multi-Image Editing(docs.x.ai、確認日 2026-10-25)
- Video Generation(docs.x.ai、確認日 2026-10-25)
- Video Editing(docs.x.ai、確認日 2026-10-25)
- Imagine Files API Integration(docs.x.ai、確認日 2026-10-25)
- Image Generation Tool(docs.x.ai、確認日 2026-10-25)
- Remote MCP Tools(docs.x.ai、確認日 2026-10-25)
- API Quickstart(docs.x.ai、確認日 2026-10-25)