Skip to main content

Início rápido

O endpoint nativo de imagens é síncrono por padrão. Defina o booleano async como true para criar uma tarefa em segundo plano. O exemplo usa qwen-image-2.0.

Como descobrir modelos de mídia assíncronos e obter seus esquemas

O fluxo de descoberta tem duas etapas. Primeiro, obtenha no catálogo público os modelos de texto para imagem ou texto para vídeo compatíveis com as APIs assíncronas. Depois, use o model_id do modelo para obter o esquema de solicitação de seus endpoints.

Listar modelos compatíveis com as APIs assíncronas

O catálogo de modelos usa a mesma fonte de dados do Playground. Use type=image_generation para modelos de texto para imagem e type=video para modelos de texto para vídeo. Com schema_checked=true, a lista fica limitada a modelos cujo esquema de solicitação foi publicado e revisado.
As duas solicitações usam o mesmo endpoint. O filtro type aceita atualmente um único valor, então solicite cada tipo de modelo separadamente. A resposta tem o formato {success, message, data}. Os campos de data relevantes para integrações de mídia assíncrona são os seguintes.

Obter o esquema de solicitação de um modelo

Os campos, enumerações e intervalos numéricos aceitos podem variar conforme o modelo. Antes de enviar uma solicitação de imagem ou vídeo, use o endpoint público abaixo para obter os endpoints disponíveis e os esquemas JSON de solicitação do modelo selecionado.
O valor de modality na resposta é image ou video. Cada item do array endpoints descreve um protocolo de chamada disponível. Um modelo pode retornar endpoints /ai/v1 e endpoints /v1 compatíveis com OpenAI. Os endpoints compatíveis com OpenAI podem ainda não oferecer suporte aos modelos mais recentes, portanto dê preferência aos endpoints /ai/v1. Para as APIs de tarefas assíncronas, selecione o item cujo path seja /ai/v1/images/generations ou /ai/v1/videos e use seu request.schema. Não dependa da posição do item no array endpoints. Os comandos abaixo extraem diretamente o esquema de solicitação de cada endpoint de tarefa assíncrona.
O endpoint retorna 404 model_not_found quando o modelo não existe ou não possui endpoints detectáveis. Ele retorna 500 endpoints_unavailable quando os dados dos endpoints estão temporariamente indisponíveis.

Como criar uma tarefa de imagem

Imagem síncrona

Quando async é omitido ou definido como false, a API aguarda a conclusão da geração e retorna o objeto de tarefa:
As tarefas síncronas de imagem também são registradas. Se a conexão do cliente for interrompida ou a resposta de criação for perdida, use GET /ai/v1/images para localizar a tarefa.

Imagem assíncrona

Quando async é definido como o booleano true, a API retorna imediatamente o objeto de tarefa e a geração continua em segundo plano:
Consulte a tarefa assíncrona de imagem com GET /ai/v1/images/{id}. Após a conclusão, solicite diretamente o content_url de cada item de output. Essa URL já contém o result_id da imagem correspondente.
O campo async de uma requisição de imagem deve ser booleano. webhook_url e webhook_events_filter só podem ser usados com async: true.

Campos padrão de imagem


Objeto de tarefa de mídia

As APIs específicas de imagem e vídeo retornam a seguinte estrutura:
Item de output de mídia:

Descrição dos status

O cliente pode consultar a tarefa a cada 15 segundos até que o status seja completed, failed ou cancelled. Esse intervalo de 15 segundos é uma recomendação de polling do cliente, não uma limitação do protocolo do servidor.

Como consultar tarefas de mídia

Consultar detalhes da mídia

As APIs de detalhes de mídia podem retornar um status atualizado. Por isso, use a API de detalhes da imagem ou do vídeo correspondente para fazer polling.

Consultar a lista de mídia

Se a resposta de criação for perdida, localize o ID da tarefa na lista da mídia correspondente:
A lista de mídia retorna um instantâneo da tarefa no momento da consulta e não atualiza ativamente o status.

Como usar a API de tarefas unificadas

A API de tarefas unificadas aceita os seguintes filtros:
Detalhes da tarefa unificada:
Item de output unificado de uma tarefa de mídia:
Para um único resultado, solicite diretamente /ai/v1/tasks/{id}/content. Para tarefas com vários resultados, solicite /ai/v1/tasks/{id}/content/{result_id}. Sem o ID do resultado, a API retorna 400 result_id_required.
As APIs de lista, detalhes e conteúdo das tarefas unificadas são isoladas pelo Bearer Token usado para criar a tarefa. Outra API Key da mesma conta não pode ler essa tarefa.

Como baixar resultados de mídia

Baixar imagens

Quando a imagem estiver concluída, solicite cada output[].content_url do objeto de tarefa de mídia:
O caminho de download de mídia da imagem é /ai/v1/images/{id}/content/{result_id}. O objeto de tarefa de mídia não expõe result_id separadamente. O cliente pode usar content_url diretamente. Quando b64_json não estiver vazio, decodifique esse campo diretamente em Base64.

Como usar Webhook

Imagens assíncronas e vídeos aceitam Webhooks no nível da tarefa:
webhook_url aceita no máximo 512 caracteres e não pode apontar para a máquina local, uma rede privada ou outro endereço restrito. Quando webhook_events_filter é omitido, a plataforma envia completed, failed e cancelled. Quando informado explicitamente, o array não pode estar vazio nem conter duplicatas e deve ser usado com webhook_url. Quando webhook_url não é enviado na requisição, imagens assíncronas e vídeos tentam usar o endereço de callback padrão configurado na conta. Um endereço padrão inválido é ignorado e não impede a criação da tarefa.

Requisição de callback

results só aparece quando o resultado foi arquivado. O download ainda exige um Bearer Token.

Novas tentativas e desduplicação

A plataforma usa entrega pelo menos uma vez. O mesmo evento pode ser enviado mais de uma vez:
  • HTTP 2xx indica recebimento bem-sucedido.
  • HTTP 5xx, erros de rede ou timeout acionam uma nova tentativa.
  • HTTP 3xx e 4xx não acionam novas tentativas.
  • São feitas no máximo 6 entregas, com intervalos de 1, 4, 16, 64 e 256 segundos.
O destinatário deve salvar event_id e retornar imediatamente 2xx ao receber novamente o mesmo evento.
O Webhook no nível da tarefa não possui uma chave de assinatura independente. Se precisar verificar a assinatura, configure uma assinatura de Webhook no nível da conta e mantenha a consulta dos detalhes da tarefa como forma de confirmar o resultado.

Respostas e códigos de erro

Esta seção se aplica a /ai/v1/images/* e às tarefas de imagem. Para erros de vídeo, consulte a API de vídeo. A coluna message apresenta o texto em inglês retornado pela API, e a coluna de explicação descreve seu significado e como proceder. Os erros de validação mostram mensagens gerais; a resposta real pode especificar campos e restrições. Identifique o tipo de erro por code, sem depender de uma correspondência exata com o texto completo de message.

Relatar um erro HTTP 5xx

Se a solicitação retornar HTTP 5xx, envie um relato e inclua error.tid.

Falhas de solicitações HTTP

Os status HTTP abaixo se aplicam à falha da solicitação atual. Consulte a tabela de falhas na execução de tarefas para erros de tarefas já criadas.

Parâmetros da solicitação e mídia de entrada

Limites de tamanho
  • Tamanho da mídia: tarefas de imagem acima do limite retornam image_too_large. Consulte o limite na mensagem ou em error.details.max_bytes.
  • Tamanho total da solicitação: request_too_large indica que o corpo HTTP excede 32 MiB, incluindo texto, parâmetros e mídia codificada incorporada. Ao enviar apenas uma URL, o link conta no corpo; o arquivo de destino ainda precisa respeitar os limites de mídia do modelo.
  • Tamanho real: error.details.actual_bytes só é fornecido quando o tamanho completo é conhecido. O campo pode ser omitido se a leitura por URL for interrompida ao atingir o limite de leitura.
Formatos aceitos Dependem do modelo selecionado. Consulte primeiro error.details.allowed_mime_types ou a lista de formatos da mensagem. Se não houver lista, consulte o Schema do modelo. Marcadores nas mensagens
  • {media_kind}: tipo real de mídia. Quando confirmado, as mensagens de invalid_media_data e media_url_unreachable também usam image ou video.
  • {max_bytes}: limite em bytes. Se o limite da imagem for desconhecido, a mensagem será The image is too large. Reduce the image size and try again.
  • {allowed_formats}: lista de formatos permitidos. Erros de formato podem acrescentar Use one of: {allowed_formats}.

Solicitações de geração e resultados retornados

Conta e permissões

Disponibilidade do serviço e limites de requisições

provider_unavailable indica uma falha confirmada do provedor de modelos. Um status genérico 429 ou 4xx, isoladamente, não confirma problemas de cota, moderação de conteúdo ou parâmetros.

Consulta de tarefas e download de resultados

Falhas na execução de tarefas

Após a criação de uma tarefa, falhas de geração são indicadas por status=failed e pelo campo error da tarefa. Uma consulta bem-sucedida continua retornando HTTP 200.
Erros de mídia de entrada também podem aparecer em uma Task com falha e têm o mesmo significado da tabela acima. A consulta bem-sucedida continua retornando HTTP 200. O message dos erros de tamanho termina com submit a new task., orientando a reduzir a mídia e enviar uma nova tarefa. output_blocked indica um bloqueio confirmado sem imagem utilizável; esta geração não é cobrada. Para output_policy_violation, aplicam-se as regras de cobrança existentes para moderação. Consulte os registros de faturamento para cobranças anteriores.

Falhas na leitura de resultados individuais

Alguns itens das listas de tarefas de imagem e vídeo podem incluir output_error:
Esse campo indica que o resultado do item não pôde ser lido nesta consulta. A lista continua retornando HTTP 200 e o item contém output=[]. Seus campos id, status, error e a paginação são preservados; outras tarefas legíveis não são afetadas. Mesmo com status=completed, verifique output_error antes de considerar o resultado acessível. Contate o suporte com output_error.tid. Se o campo não incluir tid, forneça o ID da solicitação nos cabeçalhos da resposta atual. Esse erro não altera o estado da tarefa nem as cobranças e não aciona um Webhook. As listas de imagens e vídeos preservam o expires_at obtido. Itens com falha de leitura na lista unificada /ai/v1/tasks podem retornar expires_at=null; os resultados continuam sujeitos ao período de retenção original. Esse tratamento se aplica somente quando não é possível ler o resultado de um item e não há alternativa disponível. Falhas na consulta do lote inteiro pela API unificada de tarefas continuam retornando um erro HTTP; a mesma falha na consulta de detalhes continua retornando HTTP 500. Documentação relacionada: API de imagens · API de vídeo · Tarefas assíncronas

Exemplo completo

Estes exemplos criam uma tarefa assíncrona, consultam seu estado e salvam todas as imagens retornadas.