
EvoLink で Grok Imagine Image 2.0 API を使う方法
POST /v1/images/generations を model: "grok-imagine-image-2.0" とともに送信し、返されたタスク id を保存し、タスクが completed または failed に達するまで GET /v1/tasks/{task_id} をクエリします。image_urls を省略します。編集または参照から作成するための 1 ~ 3 つの公開画像 URL を含めます。現在の価格と対話型テストについては、Grok Imagine Image 2.0 モデル ページ を使用してください。この記事では、完全なパラメーター リファレンスを複製するのではなく、アプリケーション フロー、障害処理、ストレージ、およびモデルのフォールバックに焦点を当てます。あなたが構築するもの
このガイドを終えると、アプリケーションで次のことができるようになります。
- テキストから画像へのタスクを作成します。
- モデル ID を変更せずに参照編集に切り替えます。
- マルチイメージ プロンプトでインデックス付き参照を使用します。
- ID によって非同期タスクを追跡します。
- 完了コールバックを安全に受け入れます。
- 24 時間の URL が期限切れになる前に結果を保持します。
- 最終的な使用量と失敗したタスクの払い戻しを調整します。
- ワークロードまたはタスクの結果で必要な場合は、フォールバック ルートにハンドオフします。
始める前に
| アイテム | 現在の EvoLink 契約 |
|---|---|
| ベースURL | https://api.evolink.ai |
| タスクの作成 | POST /v1/images/generations |
| クエリタスク | GET /v1/tasks/{task_id} |
| 認証 | Authorization: Bearer YOUR_API_KEY |
| モデル | grok-imagine-image-2.0 |
| テキストから画像へ | image_urlsを省略 |
| 画像編集 | 1 ~ 3 個のパブリック HTTP/HTTPS 画像 URL を指定します |
| 出力 | 1K/2K、低/中、n=1-10 |
| 処理 | 非同期タスク |
| 結果の有効期間 | 24時間 |
ステップ 1: API キーをサーバー側に保持する
シェル テストの場合は、環境変数にキーを設定します。
export EVOLINK_API_KEY="your_api_key"${EVOLINK_API_KEY} を使用します。コミットされるコード内の実際のキーに置き換えないでください。ステップ 2: テキストから画像へのタスクを作成する
image_urls を省略してプロンプトを送信します。curl --request POST "https://api.evolink.ai/v1/images/generations" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"model": "grok-imagine-image-2.0",
"prompt": "Editorial product photograph of a teal glass perfume bottle on pale limestone, warm coastal morning light, restrained luxury art direction, no text or logos",
"size": "1:1",
"resolution": "1K",
"quality": "medium",
"n": 1
}'id をすぐに保存します。{
"id": "task-unified-1757156493-imcg5zqt",
"model": "grok-imagine-image-2.0",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"type": "image",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 3.06,
"user_group": "default"
}
}上記の予約金額は文書化された例であり、価格の約束や最終的な料金ではありません。現在の価格設定には現在のモデル ページを使用し、最終的な使用にはターミナル タスクの応答を使用します。
ステップ 3: 非同期タスクをクエリする

※この画像はワークフロー図としてGPT Image 2で生成したものです。これは、Grok Imagine Image 2.0 の出力サンプルまたは品質結果ではありません。*
id をタスク エンドポイントに追加します。値の前後に中括弧を含めないでください。curl --request GET \
"https://api.evolink.ai/v1/tasks/task-unified-1757156493-imcg5zqt" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}"processing、completed、または failed を使用します。完了した応答には、results、構造化された result_data、および最終的な usage が含まれます。{
"id": "task-unified-1757156493-imcg5zqt",
"model": "grok-imagine-image-2.0",
"object": "image.generation.task",
"progress": 100,
"status": "completed",
"results": ["https://cdn.evolink.ai/images/generated-image.jpg"],
"result_data": [
{
"url": "https://cdn.evolink.ai/images/generated-image.jpg",
"mime_type": "image/jpeg"
}
],
"type": "image",
"usage": {
"credits_used": 3.06,
"cost": {
"credits": 3.06,
"cny": 0.31,
"usd": 0.05
}
}
}これらの数値は応答値の例です。独自の端末タスクによって返された値を記録します。この例を顧客への請求額の計算に使用しないでください。
ステップ 4: 制御されたポーリングを追加する
ポーリングは端末ステータスで停止し、リクエスト間でバックオフし、アプリケーションのタイムアウトを強制する必要があります。次のサーバー側 TypeScript の例では、タスク ワークフローが明示的に保たれています。
type GrokTaskStatus = "processing" | "completed" | "failed";
type GrokTask = {
id: string;
status: GrokTaskStatus;
progress: number;
results?: string[];
error?: {
code: string;
message: string;
type: "task_error";
};
};
const API_BASE_URL = "https://api.evolink.ai";
async function getTask(apiKey: string, taskId: string): Promise<GrokTask> {
const response = await fetch(`${API_BASE_URL}/v1/tasks/${taskId}`, {
headers: { Authorization: `Bearer ${apiKey}` },
cache: "no-store",
});
if (!response.ok) {
throw new Error(`Task query failed with HTTP ${response.status}`);
}
return response.json() as Promise<GrokTask>;
}
async function waitForTask(
apiKey: string,
taskId: string,
timeoutMs = 180_000,
): Promise<GrokTask> {
const startedAt = Date.now();
let intervalMs = 2_000;
while (Date.now() - startedAt < timeoutMs) {
const task = await getTask(apiKey, taskId);
if (task.status === "completed" || task.status === "failed") {
return task;
}
await new Promise((resolve) => setTimeout(resolve, intervalMs));
intervalMs = Math.min(Math.round(intervalMs * 1.5), 10_000);
}
throw new Error("Grok Imagine Image 2.0 task timed out in the application");
}アプリケーションのタイムアウトは、上流のタスクが失敗したことを証明するものではありません。生成を再試行する前に、元のタスクを再度クエリするか、独自のジョブ レイヤーで冪等性戦略を使用します。そうしないと、クライアントのタイムアウトによって重複した請求可能なタスクが作成される可能性があります。
ステップ 5: 単一参照編集に切り替える
image_urls を追加します。入力画像は、HTTP または HTTPS を通じてパブリックにアクセスできる必要があります。現在の契約では、base64 およびデータ URL はサポートされていません。サポートされている拡張子は、JPEG、JPG、PNG、WebP です。curl --request POST "https://api.evolink.ai/v1/images/generations" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"model": "grok-imagine-image-2.0",
"prompt": "Move the chair into a quiet rain-soaked garden room. Preserve the chair shape, teal upholstery, camera angle, and scale. Change only the environment and reflected light.",
"image_urls": [
"https://example.com/chair.webp"
],
"size": "4:3",
"resolution": "1K",
"quality": "medium",
"n": 1
}'アプリケーションは、有料タスクを作成する前に、カウント、プロトコル、ファイル タイプ、およびサーバーの到達可能性を検証する必要があります。サインインしたブラウザーで機能する URL でも、生成サービスにアクセスできない場合があります。
ステップ 6: 複数の参照を使用して作成する
image_urls 内の位置にマップされます。curl --request POST "https://api.evolink.ai/v1/images/generations" \
--header "Authorization: Bearer ${EVOLINK_API_KEY}" \
--header "Content-Type: application/json" \
--data '{
"model": "grok-imagine-image-2.0",
"prompt": "Place the person from <IMAGE_0> in the architectural setting from <IMAGE_1>, carrying the blue sculptural bag from <IMAGE_2>. Preserve the outfit silhouette and match the late-afternoon direction of light.",
"image_urls": [
"https://example.com/person.webp",
"https://example.com/location.webp",
"https://example.com/bag.webp"
],
"size": "3:4",
"resolution": "2K",
"quality": "medium",
"n": 1
}'プロンプトを使用して正確な配列順序を保存します。ユーザー インターフェイスでアップロードの順序を変更できる場合は、配列ラベルとインデックス ラベルを一緒に更新します。
ステップ 7: ワークフローの段階ごとにパラメータを選択する
auto、1K/2K 解像度、低/中品質、および n=1-10 をサポートします。| パラメータ | それを使って決める | プロダクションルール |
|---|---|---|
size | 出荷形状またはモデル選択 auto | 送信する前に文書化された比率列挙型と照合して検証してください |
resolution | 1K ドラフト/レビュー vs 2K 配信候補 | 4K は送信しないでください。ルートはそれをサポートしていません |
quality | より高速かつ低コストの探索を行う場合は低、詳細を求める場合は中 | 実際の受け入れ基準に照らして層を評価する |
n | 独立した出力の数 | 各出力は個別に請求されるため、製品のアクションと予算ごとに上限を設ける |
image_urls | テキストのみの生成と参照編集 | テキストから画像への変換の場合は完全に省略します。最大 3 つの URL を受け入れます |
任意のクライアント JSON を API に直接渡すのではなく、リクエスト許可リストを使用します。これにより、サポートされていないフィールド、過剰なバッチ、内部コールバック URL がルートに到達するのを防ぎます。
ステップ 8: 本番環境の完了にコールバックを使用する
callback_url を渡します。{
"model": "grok-imagine-image-2.0",
"prompt": "A clean ecommerce product scene with soft daylight",
"callback_url": "https://your-domain.com/webhooks/evolink/image-task"
}現在の契約では、タスクが完了、失敗、またはキャンセルされたときに、請求確認後にコールバックが送信されると規定されています。 EvoLink は最大 10 秒待機し、失敗したコールバックを 1、2、4 秒後に 3 回再試行する可能性があります。 2xx 応答は配信が成功したことを示します。
べき等になるように受信機を設計します。
- EvoLink アカウントと Webhook セットアップがサポートするメカニズムを使用してリクエストを認証します。
- タスク ID と予想されるモデルを検証します。
- 配信ごとに新しい結果を挿入するのではなく、タスク ID によって更新/挿入を行います。
- 永続的な永続性の後に 2xx を返します。
- 遅いダウンロードとレビュー作業をキューに移動します。
- Webhook の配信が確認できない場合は、回復パスとしてポーリングを継続します。
コールバック URL は HTTPS を使用する必要があり、ローカルホスト、プライベート IP 範囲、または内部サービス アドレスを指すことはできません。
ステップ 9: 有効期限が切れる前に結果を保存する
完成した画像の URL は 24 時間利用可能です。アプリケーションの永続的なストレージではなく、転送 URL として扱います。
完了後:
- タスクが現在のアカウントおよびジョブに属していることを確認します。
resultsまたはresult_dataのすべての項目をダウンロードします。- コンテンツ タイプとファイル サイズを検証します。
- ファイルを独自のオブジェクト ストレージに保存します。
- 永続的な URL とコンテンツ ハッシュを保存します。
- 生成パラメータを記録し、状態を確認します。
- 保持および削除ポリシーを参照入力と出力に適用します。
n が 1 より大きい場合は、生成順に独立した結果 URL が期待されます。製品が意図的に 1 つの結果を選択する場合を除き、最初の項目だけを永続化しないでください。ステップ 10: 失敗と請求を正しく処理する
failed タスクは、アップストリームの拒否、コンテンツ モデレーション ブロック、タイムアウトを含めて全額返金されます。| 結果 | アプリケーションアクション | 請求アクション |
|---|---|---|
completed | すべての結果を保持し、受け入れチェックを実行し、ジョブを完了としてマークします | 最終的な usage とコストの内訳を保存する |
failed 再試行可能なインフラストラクチャ エラーが発生しました | 上限付きバックオフを適用するか、検証済みのフォールバックにルーティングします | 最終料金がゼロ/返金されたことを確認する |
failed コンテンツ ポリシー エラーあり | 実行可能なプロンプト/入力メッセージを表示します。ブラインドリトライを行わないでください | 返金を確認し、エラーコードを保管してください |
| アプリケーションポーリングタイムアウト | 別のタスクを作成する前に同じタスクを再クエリする | タイムアウトが払い戻しまたは失敗を意味するとは考えないでください |
| タスク作成前のリクエストが無効です | 検証または権限を修正する | 調整する非同期タスクが存在しません |
failed ステータスとは異なります。ポーリング前にリクエストレベルの HTTP エラーを処理する
一部の障害は、非同期タスクが作成される前に発生します。現在の API リファレンスでは、次のリクエスト レベルの応答が文書化されています。
| HTTPステータス | 文書化された意味 | アプリケーションの応答 |
|---|---|---|
400 | 無効なリクエストパラメータまたはフォーマットです | 再試行する前に、リクエストのホワイトリスト、必須フィールド、列挙型、URL 数、および JSON 形式を検証してください。 |
401 | 認証エラー | サーバーが有効なベアラー キーを送信したことを確認します。クライアントログにキーを決して公開しないでください |
402 | 割り当てが不十分です | 自動再試行を停止し、アカウント所有者にリチャージまたは予算の調整を指示します。 |
403 | アクセスが拒否されました | プロンプトをやみくもに変更するのではなく、アカウントまたはルートの権限を確認します。 |
429 | リクエストレート制限を超えました | 制限付き指数バックオフを適用し、作業をキューに入れます。即時再試行をファンアウトしない |
500 | 内部サーバーエラー | 上限のあるインフラストラクチャ ポリシーに基づいてのみ再試行し、ジョブで許可されている場合は検証済みのフォールバックを使用します。 |
id を返した場合にのみポーリングを開始します。リクエストレベルのエラーには、レコードを照会したり、調整するためにレコードを払い戻したりするための非同期タスクはありません。ステップ 11: フォールバック ルーティングを追加する

統合では、製品ジョブをプロバイダー固有のモデル ID から分離する必要があります。
type ImageRoute = "grok-imagine-image-2.0" | "gpt-image-2";
type ImageJob = {
prompt: string;
imageUrls: string[];
requiresMask: boolean;
requires4K: boolean;
};
function chooseImageRoute(job: ImageJob): ImageRoute {
if (job.requiresMask || job.requires4K || job.imageUrls.length > 3) {
return "gpt-image-2";
}
return "grok-imagine-image-2.0";
}この例は契約レベルの開始ポリシーであり、1 つのモデルがより良い画像を生成するという主張ではありません。意味のあるトラフィックをルーティングする前に、独自の受け入れデータ、遅延、コスト、モデレーション、および可用性の観察を追加します。
本番引継ぎチェックリスト
- API キーはサーバー側のシークレット マネージャーに保存されます。
- リクエスト本文の許可リストが現在の EvoLink ドキュメントと一致します。
- モデル ID はルート設定で一元化されます。
- 参照画像は公開されており、検証済みであり、3 つに制限されています。
- 複数参照インデックスは、永続化された入力順序と一致します。
- ポーリングは完了/失敗すると停止し、バックオフを使用します。
- アプリケーションがタイムアウトしても、重複したタスクは自動的に作成されません。
- コールバック処理は冪等で高速です。
- 結果ファイルは 24 時間の有効期限が切れる前にコピーされます。
- 最終的な使用量は、予約されたクレジットとは別に保存されます。
- 失敗したタスクの払い戻しは調整されます。
- 再試行可能なエラーと再試行不可能なエラーが分離されます。
- 必要な機能または停止に対して、テスト済みのフォールバック ルートが存在します。
- ログには API キーと機密参照 URL が除外されます。
よくある質問
Grok Imagine Image 2.0 タスクを作成するエンドポイントはどれですか?
model および prompt フィールドで POST https://api.evolink.ai/v1/images/generations を使用します。どのモデル ID を送信すればよいですか?
grok-imagine-image-2.0 を送信します。生成から編集に切り替えるにはどうすればよいですか?
image_urls を省略するか、編集用に 1 ~ 3 つの URL を渡します。Base64 の画像データを送信できますか?
いいえ。現在の契約では、公的にアクセス可能な HTTP または HTTPS URL を受け入れますが、base64 またはデータ URL はサポートしていません。
結果をクエリするにはどうすればよいですか?
id を保存し、同じベアラー認証パターンで GET https://api.evolink.ai/v1/tasks/{task_id} を送信します。ポーリングするべきですか、それともコールバックを使用すべきですか?
通常の運用完了とポーリングには、回復パスとしてコールバックを使用します。単純なサーバー側プロトタイプは、バックオフ ポーリングから開始できます。
完成した画像リンクはどのくらいの期間有効ですか?
現在のドキュメントには 24 時間と記載されています。完了したファイルは直ちに永久ストレージにコピーしてください。
失敗したタスクは課金されますか?
failed 状態に達したタスクは、現在の EvoLink タスクのドキュメントに従って全額返金されます。完成した画像が独自の品質レビューで拒否された場合は、API の失敗と同じではありません。4K または高品質をリクエストできますか?
いいえ。このルートは現在、1K/2K と低/中をサポートしています。 4K または高が必須の場合は、別の検証済みルートを使用してください。
Grok と別のイメージ ルートをどこで比較できますか?
情報源
- EvoLink Grok Imagine Image 2.0 API ドキュメント
- EvoLink タスクステータス API ドキュメント
- Grok Imagine Image 2.0 リリースおよびワークフロー ガイド
このガイドは、2026 年 8 月 12 日に検証された EvoLink 契約を反映しています。出荷前に API ドキュメント、特にモデル フィールド、出力制限、コールバック動作、およびタスク応答スキーマを再確認してください。


