Saltar para o conteúdo 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"
    }
  ]
}

Autorizações

Authorization
string
obrigatório
Todos os endpoints requerem autenticação por Bearer TokenObtenha sua chave de API:Acesse a página de gerenciamento de chaves de API para obter sua chave de APIInclua-a no cabeçalho da requisição:
Authorization: Bearer YOUR_API_KEY

Body

model
string
padrão:"gpt-image-2"
obrigatório
Nome do modelo de geração de imagensFixo em gpt-image-2
prompt
string
obrigatório
Descrição textual para a geração da imagem
  • Suporta inglês e chinês, descrições detalhadas são recomendadas
  • Moderação de conteúdo / revisão de segurança antes do envio — violações são rejeitadas imediatamente
n
integer
padrão:"1"
Número de imagens a serem geradasIntervalo: 1
Deve ser um número puro (ex.: 1), não envolva em aspas
size
string
padrão:"1:1"
Proporção da imagemProporções suportadas, além de auto para deixar o servidor escolher uma proporção adequada automaticamente:
sizeTipo
autoAutomático
1:1Quadrado
3:2Paisagem
2:3Retrato
4:3Paisagem
3:4Retrato
5:4Paisagem
4:5Retrato
16:9Paisagem
9:16Retrato
2:1Paisagem
1:2Retrato
3:1Paisagem
1:3Retrato
21:9Paisagem
9:21Retrato
Dimensões em pixels também podem ser passadas diretamente, como 1881x836 / 887x1774.
Quando size é definido como auto, a proporção padrão é 1:1.
resolution
string
padrão:"1k"
Nível de resolução de saídaOpções: 1k / 2k / 4kMapeamento size × resolution → pixels reais:
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
O 4K suporta as 15 proporções listadas acima; você também pode passar as dimensões em pixels da tabela diretamente via size.
image_urls
array
Array de imagens de referência (campo padrão OpenAI). Alterna para o modo imagem para imagem quando fornecido.
Outros campos padrão da OpenAI (response_format, quality, style) não são suportados e serão ignorados. Os resultados das tarefas retornam apenas url — faça você mesmo o download e converta para base64 se necessário.
official_fallback
boolean
padrão:"false"
Se deve recorrer ao canal oficial como fallback
  • false: Não usar (padrão)
  • true: Usar o canal oficial

Exemplos de uso

Texto para imagem (requisição mínima)
{
  "model": "gpt-image-2",
  "prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style"
}
Texto para imagem (com proporção + 2K)
{
  "model": "gpt-image-2",
  "prompt": "a corgi astronaut on the moon, cinematic, 8k",
  "size": "16:9",
  "resolution": "2k"
}
Texto para imagem (saída em 4K)
{
  "model": "gpt-image-2",
  "prompt": "An ancient castle under a starry sky",
  "size": "16:9",
  "resolution": "4k"
}
Imagem para imagem (referência = URL)
{
  "model": "gpt-image-2",
  "prompt": "Turn this photo into a watercolor painting",
  "image_urls": [
    "https://example.com/photo.jpg"
  ]
}
Imagem para imagem (referência = base64)
{
  "model": "gpt-image-2",
  "prompt": "Turn this photo into a watercolor painting",
  "image_urls": [
    "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
  ]
}
Imagem para imagem (fusão multi-referência, 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 status da resposta
data
array
Array de dados da resposta

Consulta de resultados da tarefa

Após o envio bem-sucedido, um task_id é retornado. Consulte o status da tarefa via GET /v1/tasks/{task_id}, veja API de consulta de tarefas para mais detalhes.

Exemplo de resposta de sucesso

{
  "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
        }
      ]
    }
  }
}
Acesso à imagem: data.result.images[0].url[0]

Status da tarefa

StatusSignificado
submittedEnviada
processingSendo processada no upstream
completedSucesso, result.images disponível
failedFalhou, verifique error.message

Recomendações de polling

  • Atraso da consulta inicial: Aguarde 10~20 segundos após o envio antes da primeira consulta
  • Intervalo de consulta: 3~5 segundos recomendados, evite polling em nível de milissegundos
  • Referência de timeout: Uma única imagem normalmente é concluída em 3060 segundos (actual_time observado de 4453s)
  • Consulta em lote: Para consultar várias tarefas de uma só vez, use POST /v1/tasks/batch com o corpo {"task_ids": ["task_xxx", "task_yyy"]}

Observações

  1. Processamento assíncrono: O envio retorna task_id, faça polling em /v1/tasks/{task_id} para obter a URL final da imagem
  2. Moderação de conteúdo: O prompt é revisado primeiro — violações são rejeitadas sem cobrança
  3. URL do resultado: A plataforma espelha os links assinados temporários do upstream para seu próprio armazenamento de objetos R2, retornando um link estável que os clientes podem acessar diretamente
  4. Validade da URL: expires_at = completed + 24h na resposta é um campo indicativo, faça o download ou espelhe para sua própria CDN o quanto antes
  5. Conflito de proporção: Use o campo size para a proporção — evite repeti-la no prompt para evitar ambiguidade no upstream
  6. Cobrança: Cobrado por nível de resolução (1K / 2K / 4K), sem cobrança em caso de falha ou rejeição pela moderação
  7. Proporções suportadas em 4K: Todas as 15 proporções acima suportam 4K; você também pode passar as dimensões em pixels correspondentes diretamente via size
  8. Retenção de tarefas: O task_id é mantido no banco de dados por padrão durante vários dias (configurado por TASK_RETENTION_DAYS) — consultas expiradas retornam “a tarefa não existe ou expirou”