Início rápido
Crie uma Task assíncrona e gerencie polling, conclusão, falha e callbacks.
O RunAPI usa Tasks para geração assíncrona de imagens, vídeos, áudios e músicas. Uma requisição de criação retorna rapidamente; sua aplicação então faz polling na Task ou recebe os eventos de callback listados na Referência da API do endpoint.
Criar uma Task
Escolha um modelo e um endpoint no Catálogo e envie os dados de entrada necessários para o endpoint. Este exemplo inicia uma Task de texto para imagem com o Flux 2:
curl -X POST "https://runapi.ai/api/v1/flux_2/text_to_image" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Idempotency-Key: 8c8ba3c9-0ce0-4bbd-a9a7-bf59ab639286" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-2-pro-text-to-image",
"prompt": "A product photograph on a clean studio background"
}'
Uma requisição assíncrona aceita retorna 202 Accepted com um
identificador de Tarefa:
{
"id": "task_id",
"status": "processing"
}
Armazene id com o registro da sua aplicação. É o identificador estável
usado para polling, suporte e reconciliação de callbacks.
Enviar entradas de mídia
Media Input Fields são os campos da solicitação que contêm URLs de mídia: campos de nível superior cujos nomes terminam em _url ou _urls, como image_url ou image_urls, a url de cada item de video_list e element_input_urls, element_input_video_urls e element_input_audio_urls de cada item de kling_elements. callback_url é um endpoint de entrega, não um Media Input Field. Cada valor de Media Input Field pode ser uma URL HTTPS pública ou um data URI no formato data:<mime>;base64,<data>, com até 10 MB por data URI. A RunAPI armazena cada data URI como um File Upload temporário que expira após uma hora e usa esse upload na Task. Um data URI que não pode ser armazenado retorna 422 com o código de erro invalid_media_input.
Os endpoints de edição do GPT Image aceitam apenas URLs HTTPS em source_image_urls. Para enviar uma imagem local a esses endpoints, crie primeiro um File Upload e passe a URL retornada.
Para arquivos maiores que 10 MB, crie primeiro um File Upload com POST /api/v1/files e passe a URL retornada. Um File Upload multipart ou com origem em URL aceita arquivos de até 50 MB. As URLs de File Upload também expiram após uma hora, então crie um novo File Upload para cada Task que começar depois desse período.
# For this model, non-PNG/JPEG input may return 409 depending on the selected service.
# If rejected, convert WebP/BMP/TIFF/GIF to PNG/JPEG or select a compatible service.
# Actual MIME determines support, even for a .png URL. Rejection happens before task creation or charging.
# This is not a format limit for every service. Existing Task queries remain available.
curl -X POST "https://runapi.ai/api/v1/seedream/decompose_layers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"model":"seedream-5-pro-layer-decomposition","image_url":"https://cdn.runapi.ai/public/samples/image.png"}'
Evitar criação duplicada de Tarefas
Os endpoints de criação de tarefas aceitam um cabeçalho opcional Idempotency-Key com um valor opaco de até 512 caracteres. Gere um valor para cada tarefa lógica e mantenha-o junto à requisição até confirmar se ela foi aceita.
Se um timeout ou falha de conexão deixar o resultado desconhecido, repita exatamente a
mesma requisição de criação de Task com a mesma chave. O RunAPI retorna a
Task original em vez de criar e cobrar por uma segunda. Reutilizar
uma chave com uma requisição de criação de Task diferente retorna 409 Conflict.
Gere uma nova chave para uma Task intencionalmente nova, e não use
X-Client-Request-Id como essa chave.
Recuperar uma solicitação síncrona interrompida
Endpoints síncronos lentos normalmente mantêm a conexão aberta e retornam a mesma resposta terminal de antes. Nenhuma alteração de polling é necessária para integrações existentes.
Para um orçamento de conexão intencionalmente mais curto, envie Prefer: wait=N.
Se a Task ainda estiver em execução após esse orçamento explícito, o RunAPI retorna
202 Accepted com o mesmo id da Task, uma URL Location opaca para
recuperação e Retry-After com o atraso sugerido para a próxima consulta. Siga
Location exatamente em vez de construir uma URL de resultado. Um Resultado de Task concluído preserva o status HTTP terminal, os cabeçalhos permitidos, o tipo de conteúdo
e o corpo; decodifique response.body de acordo com
response.content_type, que nem sempre é JSON.
Consultar uma Tarefa
Acrescente o identificador da Tarefa ao mesmo caminho do endpoint:
curl "https://runapi.ai/api/v1/flux_2/text_to_image/task_id" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Continue enquanto status for processing. Use backoff limitado entre
requisições em vez de realizar polling continuamente. Uma Task se torna terminal quando
seu status é completed ou failed.
Tratar conclusão
Uma resposta completed inclui o id da Task, o status terminal, os campos de resultado específicos do endpoint e usage.cost como um valor float USD dessa Task. Persista o resultado necessário e interrompa o polling. Consulte a Referência da API do endpoint para conhecer o formato exato do resultado em vez de presumir que todo endpoint de mídia retorna os mesmos campos.
Envelopes de Task de criação, processing e failed omitem usage.
Tarefas que exigem apuração final da cobrança com base na mídia permanecem em processing
até que o valor final seja registrado. O callback de conclusão só é enviado
após essa apuração; seu usage.cost corresponde ao valor retornado nas consultas
subsequentes à tarefa. Dados contábeis ausentes não são informados como zero:
a tarefa permanece em processing enquanto esses dados são conciliados.
Uma cobrança confirmada de valor zero é retornada como usage.cost: 0.
Tratar falha
Uma resposta failed inclui o id da Tarefa, o status terminal e um
error gerado pelo RunAPI, quando disponível. Interrompa o polling, registre o
identificador e o erro, e tente novamente somente quando sua aplicação tiver
classificado a falha como transitória. Uma nova tentativa cria um novo identificador de Tarefa.
Receber um callback
Adicione um callback_url HTTPS público à requisição de criação quando quiser
que o RunAPI envie os eventos de callback documentados para aquele endpoint:
{
"model": "flux-2-pro-text-to-image",
"prompt": "A product photograph on a clean studio background",
"callback_url": "https://your-domain.com/webhooks/runapi"
}
Cada corpo de callback corresponde a um evento de ciclo de vida na Referência da API do endpoint. Um callback completed compartilha usage.cost com a resposta de polling completed; callbacks de criação, processing e failed omitem usage. Callbacks terminais incluem os mesmos campos de resultado que as respostas de polling terminais; alguns endpoints também enviam callbacks processing documentados. Retorne uma resposta HTTP bem-sucedida rapidamente e mantenha o polling disponível para reconciliação quando a entrega estiver atrasada ou seu handler de callback estiver indisponível.
Leia Callbacks para criar um Segredo de Callback, verificar assinaturas e processar novas tentativas com segurança.
Gerar vídeos Vidu Q4
Use POST /api/v1/vidu/image_to_video com model:
"vidu-q4-image-to-video" e first_frame_image_url. Use POST
/api/v1/vidu/reference_to_video com model:
"vidu-q4-reference-to-video", um prompt não vazio e 1–15 pedidos
reference_image_urls. Recupere cada tarefa com GET em sua criação
caminho seguido por /:id. As tarefas concluídas contêm uma matriz videos de
URLs de resultados. Você também pode fornecer callback_url para conclusão
notificações.
Ambos os endpoints aceitam o número inteiro duration_seconds de 3 a 16, padrão
5 e output_resolution de 540p, 720p, 1080p, 2k ou 4k,
padrão 720p. audio é um booleano JSON, padrão true; explícito
false desativa o áudio gerado. Os prompts aceitam até 20.000
personagens. O prompt de imagem para vídeo é opcional e o primeiro quadro
determina sua proporção de aspecto. A referência ao vídeo aceita aspect_ratio
de 16:9, 9:16, 1:1, 4:3 ou 3:4, padrão 16:9 e até 3
reference_audio_urls.
Use URLs de mídia HTTP(S) públicos. As imagens devem ser JPG/JPEG, PNG ou WEBP; a imagem do primeiro quadro não deve ter mais que 50 MB. Cada áudio de referência o arquivo deve ser MP3, ter de 3 a 12 segundos de duração e não ter mais que 50 MB. RunAPI verifica tipos de campos, esquemas de URL e contagens de referência. A geração o provedor verifica o formato, o tamanho e a duração do áudio da mídia remota de forma assíncrona. Mídia inválida pode causar falha na tarefa através do falha normal e fluxo de reembolso.