メインコンテンツへスキップ
POST
/
v1
/
images
/
generations
curl --request POST \
  --url https://api.apimart.ai/v1/images/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "gpt-image-2",
    "prompt": "窓辺に座って夕日を見つめる茶トラ猫、水彩画風",
    "n": 1,
    "size": "16:9"
  }'
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA"
    }
  ]
}
curl --request POST \
  --url https://api.apimart.ai/v1/images/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "gpt-image-2",
    "prompt": "窓辺に座って夕日を見つめる茶トラ猫、水彩画風",
    "n": 1,
    "size": "16:9"
  }'
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA"
    }
  ]
}

Authorizations

Authorization
string
必須
すべてのエンドポイントは Bearer Token による認証が必要ですAPI キーの取得:API キー管理ページ にアクセスして API キーを取得してください使用時はリクエストヘッダーに以下を追加:
Authorization: Bearer YOUR_API_KEY

Body

model
string
デフォルト:"gpt-image-2"
必須
画像生成モデル名gpt-image-2 に固定
prompt
string
必須
画像生成のテキスト記述
  • 日本語・英語・中国語をサポート、詳細な記述を推奨
  • 送信前にプラットフォームのセンシティブワード / セーフティレビューを通過します。違反内容は即座にエラーを返します
n
integer
デフォルト:"1"
生成する画像の枚数範囲:1
必ず数値(例:1)を入力してください。引用符で囲まないでください
size
string
デフォルト:"1:1"
画像生成の比率13 種類の比率をサポート:
  • 1:1 - 正方形(デフォルト)
  • 16:9 / 9:16 - ワイド横 / 縦
  • 4:3 / 3:4 - 標準横 / 縦
  • 3:2 / 2:3 - クラシック横 / 縦
  • 5:4 / 4:5 - ほぼ正方形の横 / 縦
  • 2:1 / 1:2 - ワイド横 / 縦長
  • 21:9 / 9:21 - 超ワイド横 / 超縦長
比率記法のみサポート。1024x1024 のようなピクセルサイズを渡すと build_request_failed: invalid size エラーになります
image_urls
array
参照画像配列(OpenAI 標準フィールド)。渡すと画像から画像モードに切り替わります
その他の OpenAI 標準フィールド(response_formatqualitystyle など)は現在サポートされておらず、無視されます。タスク結果は url のみを返します。base64 が必要な場合はご自身でダウンロードして変換してください。

使用シナリオ例

テキストから画像(最小リクエスト)
{
  "model": "gpt-image-2",
  "prompt": "窓辺に座って夕日を見つめる茶トラ猫、水彩画風"
}
テキストから画像(比率指定)
{
  "model": "gpt-image-2",
  "prompt": "a corgi astronaut on the moon, cinematic, 8k",
  "size": "16:9",
  "n": 1
}
画像から画像(参照 = URL)
{
  "model": "gpt-image-2",
  "prompt": "この写真を水彩画風に変換",
  "size": "1:1",
  "image_urls": [
    "https://example.com/photo.jpg"
  ]
}
画像から画像(参照 = base64)
{
  "model": "gpt-image-2",
  "prompt": "この写真を水彩画風に変換",
  "image_urls": [
    "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
  ]
}
画像から画像(複数参照融合、URL + base64 混在)
{
  "model": "gpt-image-2",
  "prompt": "この 2 枚の写真を 1 枚のポスターに融合",
  "size": "4:3",
  "image_urls": [
    "https://example.com/photo-a.jpg",
    "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
  ]
}

Response

code
integer
レスポンスステータスコード
data
array
レスポンスデータ配列

タスク結果のクエリ

提出成功後に task_id が返されます。GET /v1/tasks/{task_id} でタスク状態をポーリングしてください。詳細は タスククエリ API を参照。

成功レスポンス例

{
  "code": 200,
  "data": {
    "id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA",
    "status": "completed",
    "progress": 100,
    "created": 1776748674,
    "completed": 1776748726,
    "actual_time": 52,
    "estimated_time": 100,
    "result": {
      "images": [
        {
          "url": [
            "https://upload.apimart.ai/f/image/xxxxxxxx-gpt_image_2_task_xxx_0.png"
          ],
          "expires_at": 1776835126
        }
      ]
    }
  }
}
画像の取得:data.result.images[0].url[0]

タスクステータス

ステータス意味
pending提出済み / キュー中
processing上流で処理中
completed成功、result.images 利用可能
failed失敗、error.message を確認

ポーリングの推奨事項

  • 初回クエリの遅延:提出後 10~20 秒待ってから最初のクエリを実行
  • クエリ間隔:3~5 秒推奨。ミリ秒単位のポーリングは避けてください
  • タイムアウトの目安:1 枚通常 3060 秒で完了(実測 actual_time 4452s)
  • バッチクエリ:複数タスクを同時にクエリする場合は POST /v1/tasks/batch を使用、ボディ {"task_ids": ["task_xxx", "task_yyy"]}

注意事項

  1. 非同期処理:提出後に task_id が返ります。/v1/tasks/{task_id} をポーリングして最終画像 URL を取得
  2. コンテンツレビューprompt は先にレビューされ、違反は即拒否 & 課金なし
  3. 結果 URL:プラットフォームが上流の一時署名リンクを自社 R2 オブジェクトストレージにミラーリング、返されるのは安定リンクでクライアントから直接アクセス可能
  4. URL 有効期限:レスポンスの expires_at = completed + 24h はビジネス層のヒントフィールド。早めにダウンロードまたは自社 CDN に転送してください
  5. 比率の競合:比率は size フィールドでのみ指定することを推奨。prompt での重複記述は上流の解釈の競合を招くため避けてください
  6. 課金規則:成功した画像ごとに課金、失敗・レビュー拒否は課金なし
  7. タスクの保持task_id はデータベースにデフォルトで数日間保持されます(TASK_RETENTION_DAYS で設定)。期限切れのクエリは「タスクが存在しないか期限切れ」を返します