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 ほか 課金とサインインの情報

前提:用語をそろえる

つなぐ前に:準備するもの

連携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から、画像を作る

  1. pip install openai を実行する(05のクイックスタートの一覧にあります)。
  2. 次の形で書く。公式の「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)
  1. YOUR_API_KEY の所は、自分のキーに置き換える。ファイルにキーをそのまま書き込む形は、共有やバージョン管理の事故のもとです。環境変数 XAI_API_KEY から読む形にするかは、自分で決めます(公式のクイックスタートは、環境変数か .env を使う形を示しています)。
  2. 実行し、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から使う

  1. npm install ai @ai-sdk/xai zod を実行する(クイックスタートの一覧)。
  2. 画像は generateImage(xai.image("grok-imagine-image-2.0") のように、モデルを渡す)、動画は generateVideo を使う、と、Imagine Overviewと各ページが書いています。動画は、ポーリングをSDKが自動で処理し、pollTimeoutMs でタイムアウトを指定できる、とVideo Editingのページにあります。
  3. 呼び出しの細かい形は、各ページの例が、取得結果で崩れていたものがあったため、この記事には書きません。公式の各ページで原文を見て写してください。

注意: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. 1の storage_options={"filename": ...} を付けると、生成物がFilesに保存されます。コメントは「公開URLを必要としない非公開の保存」と書いています。
  2. 保存後の番号は、file_output.file_id で取ります。
  3. 2と3は、その番号を image_file_id= に渡します。
  4. 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))
  1. 結果は、出力項目 image_generation_call に入ります。result が、data URLの接頭辞のないbase64の文字列で、そのままデコードできます。
  2. prompt の欄には、モデルが画像モデルに渡した指示文が入るので、確認に使えます。IDは、生成が ig_、編集が ie_ で始まります。
  3. 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)
  1. 呼ばせたいMCPサーバーのURLを server_url に、名前を server_label に書く。
  2. 認証が要るサーバーなら、authorization にトークンを入れる。トークンは、そのMCPサーバーに送られます。
  3. 使わせたいツールが決まっているなら、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)にあります。

気をつけること

出典