01
La semilla ayuda a comparar, pero no garantiza píxeles idénticos
Si el modelo acepta semilla, guárdala con el prompt, versión, tamaño y referencias. Algunos endpoints pueden dar otra imagen con la misma semilla.
Solución de API de imagen
Cada endpoint de imagen declara sus propios campos: unos aceptan indicación negativa, otros semilla, otros devuelven cuatro candidatas por llamada. Un formulario genérico esconde justo los controles que hacen reproducible un resultado.

El reto
«Indicación dentro, imagen fuera» aguanta unos diez segundos. Después necesitas el mismo personaje una segunda vez, 3:2 en vez de cuadrado, cuatro candidatas por llamada y una semilla que puedas anotar.
01
Si el modelo acepta semilla, guárdala con el prompt, versión, tamaño y referencias. Algunos endpoints pueden dar otra imagen con la misma semilla.
02
Unos endpoints aceptan resolution o aspect_ratio; otros, width y height en píxeles. Enviar el equivocado da 400, y donde se cobra por megapíxel el tamaño elegido es también el precio.
03
Donde existe num_outputs, el cargo sigue al número de imágenes y no al de peticiones. Un valor por defecto de 4 cuesta cuatro veces uno de 1, y esa diferencia solo se ve antes del envío en la estimación.
El enfoque
Crea las entradas según el esquema del endpoint. Guarda la petición exacta, el orden de referencias y la versión con el resultado para comparar variantes. Conserva el original: no se garantiza regenerarlo idéntico.
Las tareas de imagen usan el mismo contrato de crear y seguir que el vídeo. Toda la diferencia vive dentro de input.
POST /api/v1/jobs/createTask
POST /api/v1/jobs/createTask
Authorization: Bearer $SPICY_API_KEY
Idempotency-Key: 7b1f0c2e-9a4d-4f31-8c67-2b5e0d9a1c44
Content-Type: application/json
{
"model": "<publisher>/<model>/text-to-image",
"input": {
"prompt": "A ceramic teapot on linen, soft window light, muted palette",
"aspect_ratio": "3:2",
"num_outputs": 2,
"seed": 1337
}
}GET /api/v1/jobs/recordInfo?taskId=…
{
"code": 200,
"msg": "success",
"request_id": "req_example_record",
"data": {
"taskId": "job_01k3m8x9q2z4v7n5p6r8s0t1w3",
"state": "succeeded",
"output": {
"assets": [
{
"mime": "image/png",
"url": "https://…/result.png?X-Amz-Signature=…",
"expiresAt": "2026-09-12T12:20:08Z"
}
]
},
"cost": "0.040000",
"settled": true
}
}Contrato
| Campo o cabecera | Valor o límite |
|---|---|
| input | additionalProperties: false |
| seed · num_outputs · aspect_ratio | declared per endpoint |
| cost + settled: false | hold · final charge never exceeds it |
| errorCode | 9 stable values, content_rejected included |
Desliza horizontalmente para ver todas las columnas.
Integración
Encaje
Comprobaciones
El cuerpo que montas en la página del modelo es el que envía tu servidor: mismos campos, misma validación, misma estimación. No hay vista previa simplificada que luego diverja.
La entrada se valida contra el esquema del endpoint con additionalProperties cerrado. Un parámetro no declarado devuelve 400 con un errorCode estable en lugar de ignorarse.
Los resultados llegan en output.assets con key, tipo MIME, url firmada y expiresAt. Nada enlaza al lugar donde se ejecutó el modelo.
Antes del lanzamiento
Preguntas frecuentes
Modelos
Cada enlace abre la página de esa familia de modelos: entradas, límites, política de contenido y el precio actual por unidad.
Siguiente paso
Compara endpoints de imagen por entradas, controles de tamaño y semilla, número de salidas y precio por imagen, y reutiliza la petición probada.
Guías relacionadas