Saltar al contenido principal
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": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
    "n": 1,
    "size": "16:9",
    "resolution": "2k"
  }'
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA"
    }
  ]
}

Documentation Index

Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt

Use this file to discover all available pages before exploring further.

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": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
    "n": 1,
    "size": "16:9",
    "resolution": "2k"
  }'
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA"
    }
  ]
}

Autorizaciones

Authorization
string
requerido
Todos los endpoints requieren autenticación con Bearer TokenObtenga su API Key:Visite la página de gestión de API Keys para obtener su API KeyInclúyala en el encabezado de la solicitud:
Authorization: Bearer YOUR_API_KEY

Body

model
string
predeterminado:"gpt-image-2"
requerido
Nombre del modelo de generación de imágenesFijo en gpt-image-2
prompt
string
requerido
Descripción textual para la generación de la imagen
  • Admite inglés y chino, se recomiendan descripciones detalladas
  • Moderación de contenido / revisión de seguridad antes del envío — las violaciones se rechazan inmediatamente
n
integer
predeterminado:"1"
Número de imágenes a generarRango: 1
Debe ser un número puro (p. ej., 1), no lo envuelva en comillas
size
string
predeterminado:"1:1"
Proporción de la imagenProporciones admitidas, más auto para dejar que el servidor elija una proporción adecuada automáticamente:
sizeTipo
autoAutomático
1:1Cuadrada
3:2Horizontal
2:3Vertical
4:3Horizontal
3:4Vertical
5:4Horizontal
4:5Vertical
16:9Horizontal
9:16Vertical
2:1Horizontal
1:2Vertical
3:1Horizontal
1:3Vertical
21:9Horizontal
9:21Vertical
También pueden pasarse dimensiones en píxeles directamente, como 1881x836 / 887x1774.
Cuando size se establece en auto, la proporción predeterminada es 1:1.
resolution
string
predeterminado:"1k"
Nivel de resolución de salidaOpciones: 1k / 2k / 4kMapeo size × resolution → píxeles reales:
size1k2k4k
1:11024×1024 / 1254×12542048×20482880×2880
3:21536×10242048×13603520×2336
2:31024×15361360×20482336×3520
4:31024×7682048×15363312×2480
3:4768×10241536×20482480×3312
5:41280×1024 / 1448×10862560×20483216×2576
4:51024×1280 / 1122×14022048×25602576×3216
16:91536×864 / 1672×9412048×11523840×2160
9:16864×1536 / 941×16721152×20482160×3840
2:12048×1024 / 1774×8872688×13443840×1920
1:21024×2048 / 887×17741344×26881920×3840
3:11881×836 / 1536×5123072×10243840×1280
1:3887×1774 / 512×15361024×30721280×3840
21:92016×864 / 1915×8212688×11523840×1648
9:21864×2016 / 821×19151152×26881648×3840
El 4K admite las 15 proporciones listadas arriba; también puede pasar las dimensiones en píxeles de la tabla directamente mediante size.
image_urls
array
Array de imágenes de referencia (campo estándar de OpenAI). Cambia al modo imagen a imagen cuando se proporciona.
Otros campos estándar de OpenAI (response_format, quality, style) no son compatibles y serán ignorados. Los resultados de las tareas solo devuelven url — descargue y convierta a base64 usted mismo si lo necesita.
official_fallback
boolean
predeterminado:"false"
Si recurrir al canal oficial como fallback
  • false: No usar (predeterminado)
  • true: Usar el canal oficial

Ejemplos de uso

Texto a imagen (solicitud mínima)
{
  "model": "gpt-image-2",
  "prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style"
}
Texto a imagen (con proporción + 2K)
{
  "model": "gpt-image-2",
  "prompt": "a corgi astronaut on the moon, cinematic, 8k",
  "size": "16:9",
  "resolution": "2k"
}
Texto a imagen (salida en 4K)
{
  "model": "gpt-image-2",
  "prompt": "An ancient castle under a starry sky",
  "size": "16:9",
  "resolution": "4k"
}
Imagen a imagen (referencia = URL)
{
  "model": "gpt-image-2",
  "prompt": "Turn this photo into a watercolor painting",
  "image_urls": [
    "https://example.com/photo.jpg"
  ]
}
Imagen a imagen (referencia = base64)
{
  "model": "gpt-image-2",
  "prompt": "Turn this photo into a watercolor painting",
  "image_urls": [
    "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
  ]
}
Imagen a imagen (fusión multireferencia, URL + base64 combinados)
{
  "model": "gpt-image-2",
  "prompt": "Fuse these two photos into a single poster",
  "size": "4:3",
  "resolution": "2k",
  "image_urls": [
    "https://example.com/photo-a.jpg",
    "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
  ]
}

Response

code
integer
Código de estado de la respuesta
data
array
Array de datos de la respuesta

Consulta de resultados de la tarea

Tras un envío correcto, se devuelve un task_id. Consulte el estado de la tarea mediante GET /v1/tasks/{task_id}, consulte la API de consulta de tareas para más detalles.

Ejemplo de respuesta exitosa

{
  "code": 200,
  "data": {
    "id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA",
    "status": "completed",
    "progress": 100,
    "created": 1776748674,
    "completed": 1776748726,
    "actual_time": 52,
    "cost": 0.05279,
    "estimated_time": 100,
    "result": {
      "images": [
        {
          "url": [
            "https://upload.apimart.ai/f/image/xxxxxxxx-gpt_image_2_task_xxx_0.png"
          ],
          "expires_at": 1776835126
        }
      ]
    }
  }
}
Acceso a la imagen: data.result.images[0].url[0]

Estado de la tarea

EstadoSignificado
submittedEnviada
processingProcesándose en el upstream
completedÉxito, result.images disponible
failedFalló, compruebe error.message

Recomendaciones de polling

  • Retraso de la consulta inicial: Espere de 10 a 20 segundos tras el envío antes de la primera consulta
  • Intervalo de consulta: Se recomiendan de 3 a 5 segundos, evite polling a nivel de milisegundos
  • Referencia de timeout: Una sola imagen suele completarse en 3060 segundos (actual_time observado de 4453s)
  • Consulta por lotes: Para consultar varias tareas a la vez, use POST /v1/tasks/batch con el cuerpo {"task_ids": ["task_xxx", "task_yyy"]}

Notas

  1. Procesamiento asíncrono: El envío devuelve un task_id, haga polling en /v1/tasks/{task_id} para obtener la URL final de la imagen
  2. Moderación de contenido: El prompt se revisa primero — las violaciones se rechazan sin cargo
  3. URL del resultado: La plataforma replica los enlaces firmados temporales del upstream en su propio almacenamiento de objetos R2, devolviendo un enlace estable al que los clientes pueden acceder directamente
  4. Validez de la URL: expires_at = completed + 24h en la respuesta es un campo orientativo; descargue o replique en su propio CDN cuanto antes
  5. Conflicto de proporción: Use el campo size para la proporción — evite repetirla en el prompt para evitar ambigüedad en el upstream
  6. Facturación: Facturado por nivel de resolución (1K / 2K / 4K), sin cargo en caso de fallo o rechazo por moderación
  7. Proporciones admitidas en 4K: Las 15 proporciones anteriores admiten 4K; también puede pasar las dimensiones en píxeles correspondientes directamente mediante size
  8. Retención de tareas: El task_id se conserva en la base de datos por defecto durante varios días (configurado por TASK_RETENTION_DAYS) — las consultas expiradas devuelven “la tarea no existe o ha expirado”