01
A seed helps compare runs, not guarantee identical pixels
Where seed exists, keep it with the prompt, model version, size and references. Some endpoints remain nondeterministic; the same seed can still produce a different image.
Solução de API de imagem
Cada endpoint de imagem declara os próprios campos: uns aceitam prompt negativo, outros semente, outros devolvem quatro candidatas por chamada. Um formulário genérico esconde exatamente os controles que tornam um resultado reproduzível.

O desafio
«Prompt entra, imagem sai» vale uns dez segundos. Depois você precisa do mesmo personagem uma segunda vez, 3:2 em vez de quadrado, quatro candidatas por chamada e uma semente que dê para anotar.
01
Where seed exists, keep it with the prompt, model version, size and references. Some endpoints remain nondeterministic; the same seed can still produce a different image.
02
Alguns endpoints aceitam resolution ou aspect_ratio; outros, width e height em pixels. Mandar o errado dá 400, e onde se cobra por megapixel o tamanho escolhido é também o preço.
03
Onde existe num_outputs, a cobrança segue o número de imagens e não o de requisições. Um padrão de 4 custa quatro vezes um de 1, e essa diferença só aparece antes do envio na estimativa.
A abordagem
Build inputs from the endpoint schema. Save the exact request, ordered references and model version with the result so you can compare later variations. Keep accepted originals; regenerating them is not guaranteed.
Tarefas de imagem usam o mesmo contrato de criar e acompanhar que vídeo. A diferença inteira mora 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 ou cabeçalho | Valor ou limite |
|---|---|
| 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 |
Deslize horizontalmente para ver todas as colunas.
Integração
Adequação
Evidências
O corpo montado na página do modelo é o que o seu servidor envia: mesmos campos, mesma validação, mesma estimativa. Não existe prévia simplificada que depois divirja.
A entrada é validada contra o esquema do endpoint com additionalProperties fechado. Um parâmetro não declarado devolve 400 com errorCode estável em vez de ser ignorado.
Os resultados chegam em output.assets com key, tipo MIME, url assinada e expiresAt. Nada aponta para onde o modelo rodou.
Antes de lançar
Perguntas frequentes
Modelos
Cada link abre a página daquela família de modelos: entradas, limites, política de conteúdo e o preço atual por unidade.
A seguir
Compare endpoints de imagem por entradas, controles de tamanho e semente, número de saídas e preço por imagem, e reutilize a requisição testada.