Pular para o conteúdo principal

GPT Image 2.6 Sunburst cria uma nova imagem a partir da cena que você descreve, com qualidade e resolução escolhidas separadamente.

A partir de $0.022/imagem

Playground

Enviar uma requisição

Início rápido

Os exemplos usam as definições públicas de parâmetros do endpoint selecionado. Troque a chave de API e as mídias de exemplo e envie a requisição a partir do seu servidor.

SDKs e integrações
POSThttps://api.spicyapi.ai/api/v1/jobs/createTask

Autenticação da API

Guarde a chave de API na variável de ambiente do servidor SPICY_API_KEY. Use autenticação Bearer e Content-Type: application/json nas requisições JSON.

Authorization: Bearer $SPICY_API_KEY
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $SPICY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
  -d '{
  "model": "openai/gpt-image-2.6-sunburst/text-to-image",
  "input": {
    "prompt": "A ceramic teapot on a linen cloth, soft window light, muted palette",
    "quality": "medium",
    "background": "auto",
    "resolution": "1k",
    "num_outputs": 1,
    "aspect_ratio": "1:1"
  }
}'

# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $SPICY_API_KEY"

Gerado a partir do schema de entrada deste modelo — o mesmo que a API usa para validar cada requisição.

Parâmetros de entrada

Coloque estes campos no objeto input do corpo da requisição. Nomes e tipos são os mesmos da API. Quando nenhum valor padrão estiver indicado, não presuma que exista um.

promptstringObrigatório

Descrição de cena obrigatória do Sunburst de até 5.000 caracteres, sem texto padrão; os tokens do prompt são cobrados, então prompts mais longos do Sunburst custam um pouco mais.

Valor padrão
Não especificado
Restrições
minLength:1
maxLength:5000
output_qualityintegerOpcional

Escolha a compressão JPEG ou WebP do Sunburst de 0 a 100: valores mais altos preservam mais detalhes num arquivo maior, PNG e GIF ignoram o ajuste, e o preço do Sunburst não muda.

Valor padrão
Não especificado
Restrições
minimum:0
maximum:100
frame_duration_msintegerOpcional

Sunburst: frame_duration_ms permite de 20 a 2000 ms por quadro, com 200 ms por padrão.

Valor padrão
Não especificado
Restrições
minimum:20
maximum:2000
frame_countintegerOpcionalAfeta o preço

Sunburst: frame_count aceita de 2 a 16 quadros, com 9 por padrão; o limite depende do tamanho de quadro selecionado.

Valor padrão
Não especificado
Restrições
minimum:2
maximum:16
output_formatstringOpcional

Sunburst retorna png por padrão e também aceita jpeg, webp e gif; GIF animado só está disponível em texto para imagem e não aceita fundo transparente.

Valor padrão
"png"
Valores permitidos
"png""jpeg""webp""gif"
backgroundstringOpcional

Sunburst aceita auto, opaque e transparent; a transparência exige PNG ou WebP e não pode ser combinada com GIF.

Valor padrão
"auto"
Valores permitidos
"auto""transparent""opaque"
num_outputsintegerOpcionalAfeta o preço

Peça de 1 a 10 imagens por solicitação ao Sunburst; nenhuma quantidade padrão é especificada aqui, e cada imagem de saída é cobrada.

Valor padrão
1
Restrições
minimum:1
maximum:10
reasoning_effortstringOpcional

Sunburst: reasoning_effort aceita low, medium e high (padrão quando omitido); define o planejamento antes de desenhar, e níveis maiores ajudam com texto denso e composições complexas, levam mais tempo e não alteram o custo.

Valor padrão
Não especificado
Valores permitidos
"low""medium""high"
qualitystringOpcionalAfeta o preço

Defina o detalhe do Sunburst como low, medium (padrão), high, xhigh ou max; níveis superiores aumentam o detalhe, o tempo de renderização e o preço.

Valor padrão
"medium"
Valores permitidos
"low""medium""high""xhigh""max"
resolutionstringOpcionalAfeta o preço

Sunburst: use 1k, 2k ou 4k para imagens estáticas; em GIFs, resolution é o tamanho de um quadro: 512 (cerca de 0,26 MP) aceita até 16 quadros, e 768 (cerca de 0,59 MP), até 12.

Valor padrão
"1k"
Valores permitidos
"1k""2k""4k""512""768"
aspect_ratiostringOpcional

Sunburst usa 1:1 por padrão nas imagens estáticas, com 15 proporções de 1:3 a 3:1; para GIFs, você precisa informar aspect_ratio. Em cada tamanho do Sunburst, o formato quadrado usa mais tokens de imagem, por isso outras proporções costumam custar menos.

Valor padrão
"1:1"
Valores permitidos
"1:1""16:9""9:16""4:3""3:4""3:2""2:3""21:9""9:21""2:1""1:2""3:1""1:3""5:4""4:5"

Acompanhar tarefa

HTTP 202 quer dizer que a tarefa foi aceita, não que terminou. Guarde o taskId devolvido e consulte essa tarefa. Não crie outra enquanto espera o resultado.

Requisição aceita
HTTP/1.1 202 Accepted
Location: /api/v1/jobs/recordInfo?taskId=job_01k3m8x9q2z4v7n5p6r8s0t1w3

{
  "code": 200,
  "msg": "success",
  "request_id": "req_example_create",
  "data": {
    "taskId": "job_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "state": "queued",
    "estimatedCost": "0.750000"
  }
}

A resposta de aceitação já traz a estimativa, para que o seu aplicativo mostre o mesmo valor no histórico de tarefas e na cobrança.

Consultar a tarefa
curl --get "https://api.spicyapi.ai/api/v1/jobs/recordInfo" \
  --data-urlencode "taskId=$TASK_ID" \
  -H "Authorization: Bearer $SPICY_API_KEY"

Comece consultando a cada 2 segundos, mais ou menos, e vá espaçando. Pare em um estado final. Se a conexão cair, consulte o taskId original. Só recrie a tarefa com a chave de idempotência e o corpo originais.

Ou receba o resultado por callback
import { verifyWebhook } from "@spicyapi/sdk";

// express.raw keeps the bytes we signed; express.json never matches.
app.post("/hooks/spicy", express.raw({ type: "application/json" }), (req, res) => {
  const { payload } = verifyWebhook({
    rawBody: req.body,
    timestamp: req.header("X-Webhook-Timestamp"),
    signature: req.header("X-Webhook-Signature"),
    payloadVersion: Number(req.header("X-Webhook-Payload-Version")),
    secret: process.env.SPICY_WEBHOOK_SECRET,
  });
  res.status(200).end();
  void handleFinishedTask(payload);
});

Passe callBackUrl ao criar a tarefa e o registro concluído chega até você via POST — sem nenhum laço de polling. Toda entrega traz X-Webhook-Timestamp, X-Webhook-Signature e X-Webhook-Payload-Version. A assinatura é um HMAC-SHA256 em base64 sobre taskId.timestamp.sha256(body), então confira contra os bytes brutos: se você analisar o JSON e serializar de novo, os bytes mudam e a verificação falha. Entregas com erro são repetidas, ou seja, o mesmo taskId pode chegar duas vezes — deixe seu handler idempotente. Responda 2xx primeiro e faça o trabalho depois; um handler lento conta como entrega falha.

Ler resultado

Só consuma output quando state for succeeded. Em caso de falha, use errorCode, errorMessage e request_id para investigar. Os custos e estados de exemplo não representam uma cobrança real.

Exemplo de resposta concluída
{
  "code": 200,
  "msg": "success",
  "request_id": "req_example_record",
  "data": {
    "taskId": "job_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "model": "openai/gpt-image-2.6-sunburst/text-to-image",
    "state": "succeeded",
    "output": {
      "assets": [
        {
          "key": "tasks/2026/08/28/job_01k3m8x9q2z4v7n5p6r8s0t1w3/3f7a1c9e5b2d48f0a6c1e3d5b7f9a1c3.png",
          "mime": "image/png",
          "url": "https://example.r2.cloudflarestorage.com/results/job_01k3m8x9q2z4v7n5p6r8s0t1w3/result.png?X-Amz-Signature=SIGNATURE_FROM_RESPONSE",
          "expiresAt": "2026-08-28T12:20:08.000Z"
        }
      ]
    },
    "cost": "0.750000",
    "settled": true,
    "createdAt": "2026-08-28T12:00:00Z",
    "completedAt": "2026-08-28T12:00:30Z"
  }
}

Para cada arquivo disponível, abra ou baixe assets[].url direto, sem o cabeçalho Authorization da API. O link assinado expira em expiresAt: consulte a tarefa de novo para renovar enquanto o arquivo estiver dentro do prazo de retenção. Arquivo pendente ou indisponível não tem URL. Trate os links assinados como dado privado.

SDKs e integrações

Use a SpicyAPI no seu app, terminal, assistente de IA ou fluxo visual. Escolha um guia de configuração.

Use no ComfyUI

Instale os nós da SpicyAPI pelo ComfyUI Manager ou com o comando abaixo e procure por GPT Image 2.6 Sunburst · Text to Image no canvas. O nó tem as mesmas opções desta página e mostra o preço antes da execução.

cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi