画像と動画
OpenAI 互換の画像生成/編集エンドポイントと、Grok Imagine 非同期動画の送信とポーリング。
画像と動画は OpenAI / xAI 公式と同じ形のエンドポイントを使い、認証は Authorization: Bearer です。Gemini のネイティブ画像出力はここには含まれません。専用エンドポイントはなく、引き続き generateContent を使います。Gemini APIを参照してください。
画像生成
/v1/images/generationsリクエストボディは OpenAI Images API と同じです:model、prompt、任意で n、size、quality など。画像モデル(gpt-image-2、grok-imagine-image-2.0 など)はモデル一覧を参照してください。
curl https://soleapi.com/v1/images/generations \
-H "Authorization: Bearer $SOLEAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A watercolor lighthouse at dawn",
"size": "1024x1024"
}'{
"created": 1757030400,
"data": [
{ "b64_json": "iVBORw0KGgo..." }
],
"usage": { "input_tokens": 12, "output_tokens": 0, "total_tokens": 12 }
}画像編集
/v1/images/editsmultipart/form-data で送ります。image フィールドに参考画像(複数可)、prompt に指示を入れ、その他のフィールドは生成エンドポイントと同じです。
curl https://soleapi.com/v1/images/edits \
-H "Authorization: Bearer $SOLEAPI_API_KEY" \
-F model=gpt-image-2 \
-F image=@lighthouse.png \
-F prompt="Turn the sky into a starry night"画像はエンドポイントを問わず枚数単位で課金されます。単価はモデルページを参照してください。n 枚なら n 倍です。生成エンドポイントは "stream": true で SSE による途中プレビューと最終画像の増分返却に対応します(対象モデルによります)。画像エンドポイントはインラインメディアを許可するため、リクエストボディの上限は会話エンドポイントの大きい方が適用されます。
動画生成(非同期)
動画はゲートウェイで唯一の非同期エンドポイントです。送信するとジョブ id だけが返り、上流がバックグラウンドでレンダリングし、クライアントは完成までポーリングします。
/v1/videos/generationsリクエストボディは xAI Grok Imagine 公式のフィールドに従います:model(例:grok-imagine-video-1.5)、prompt、任意で duration(秒)、aspect_ratio、resolution など。
curl https://soleapi.com/v1/videos/generations \
-H "Authorization: Bearer $SOLEAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-video-1.5",
"prompt": "A lighthouse in a storm, cinematic",
"duration": 6,
"aspect_ratio": "16:9"
}'
# => { "request_id": "8f0c…" }/v1/videos/edits動画編集も同様で、リクエストボディに参考動画を追加します。レスポンスは同じく request_id です。
/v1/videos/{request_id}送信時に返った request_id でポーリングします。status が pending の間は待ち、done になったら video.url が完成動画のアドレス、video.duration が秒数です。failed / expired は上流のレンダリング失敗、または結果の期限切れを意味します。
curl https://soleapi.com/v1/videos/8f0c… \
-H "Authorization: Bearer $SOLEAPI_API_KEY"
# => { "status": "done", "video": { "url": "https://…/video.mp4", "duration": 6 } }課金ルール:送信時には課金されず、見積額を確保するだけです。ポーリングで status = done を確認した時点で精算され、秒数は**送信時に指定した duration**で数えます(未指定のときだけ完成動画の長さを使用)。上流のレンダリング失敗は無料です。送信後は必ず終端状態までポーリングしてください。結果が不要になっても、ゲートウェイがバックグラウンドで上流に問い合わせて精算するため、「ポーリングしなければ課金されない」ということはありません。ポーリング間隔は 5〜10 秒を推奨し、ポーリングも RPM に計上されます。
関連エラー
| メッセージ id | HTTP | 意味 |
|---|---|---|
video_job_missing | 400 | ポーリングのパスに request_id がありません。 |
video_job_not_found | 404 | ジョブが存在しないか、別のアカウントのものです。 |
video_job_route_gone | 502 | ジョブが使った上流の供給元が削除済みで、結果を取得できません。 |
video_job_unavailable | 500 | ジョブサービスが一時的に利用できません。後で再試行してください。 |
その他のエラーは会話エンドポイントと同じです。エラーコードを参照してください。