Endpoints da Fila
Você pode acessar todos os recursos da fila através dos seguintes endpoints:| Endpoint | Método | Descrição |
|---|---|---|
| api.sunra.ai/v1/queue/{model-id} | POST | Adiciona uma solicitação à fila |
| api.sunra.ai/v1/queue/requests/{request_id}/status | GET | Recupera o status de uma solicitação |
| api.sunra.ai/v1/queue/requests/{request_id}/status/stream | GET | Transmite o status até a conclusão |
| api.sunra.ai/v1/queue/requests/{request_id} | GET | Busca a resposta de uma solicitação |
| api.sunra.ai/v1/queue/requests/{request_id}/cancel | PUT | Cancela uma solicitação |
request_id:
request_id e fornece URLs para verificar o status, cancelar ou recuperar a resposta, simplificando seu fluxo de trabalho sem desenvolvimento adicional de endpoint.
Status da Solicitação
Para monitorar o progresso de sua solicitação, use o endpoint fornecido com seu ID de solicitação exclusivo. Isso permite que você acompanhe o status, a posição na fila ou recupere a resposta assim que estiver pronta.Uso do Endpoint
Resposta de Exemplo
Quando sua solicitação estiver na fila, você receberá uma resposta como esta:Status Possíveis
Sua solicitação pode estar em um dos três estados:-
IN_QUEUE: Indica que a solicitação está aguardando para ser processada.
queue_position: Mostra sua posição na fila.response_url: URL para recuperar a resposta assim que o processamento for concluído.
-
IN_PROGRESS: A solicitação está sendo processada no momento.
logs: Logs detalhados (se habilitados) mostrando as etapas de processamento.response_url: Onde a resposta final estará disponível.
-
COMPLETED: O processamento foi concluído.
logs: Logs detalhando todo o processo.response_url: Link direto para sua resposta concluída.
Habilitando Logs
Os logs fornecem informações sobre o processamento da solicitação. Eles são desabilitados por padrão, mas podem ser habilitados com um parâmetro de consulta:message: Descrição do evento.level: Gravidade (por exemplo, INFO, ERROR).source: Origem do log.timestamp: Hora em que o log foi gerado.
Monitoramento em Tempo Real
Para atualizações contínuas, use o endpoint de streaming:text/event-stream até que a solicitação seja concluída.
Webhooks
Se você prefere ser notificado em vez de fazer polling, passe um parâmetro de consultawebhook ao enviar uma solicitação. O Sunra fará um POST com o resultado final para essa URL assim que a solicitação atingir um estado terminal, então você não precisa manter uma conexão aberta nem agendar polling.
Habilitando Webhooks
Adicione um parâmetro de consultawebhook codificado em URL ao endpoint de envio:
https%3A%2F%2F...) e garanta que o Sunra consiga acessá-la; HTTPS é fortemente recomendado. A resposta de envio não muda — você ainda recebe um request_id e as mesmas URLs de status/cancelamento/resposta.
Quando o Webhook é Disparado
O Sunra chama seu webhook apenas em eventos terminais:succeeded— a solicitação foi concluída e a saída está incluída no payload.failed— a solicitação falhou e os detalhes do erro estão incluídos no payload.
IN_QUEUE, IN_PROGRESS) não disparam um webhook. Se você também precisar de atualizações de progresso, combine o webhook com os endpoints de streaming ou polling descritos acima.
Formato da Solicitação
O Sunra envia uma solicitaçãoPOST para a URL do seu webhook com:
| Header | Value |
|---|---|
Content-Type | application/json |
User-Agent | Sunra-AI-Webhook/1.0 |
2xx em até 5 segundos. Confirme rápido e mova qualquer trabalho pesado para um job em segundo plano — respostas lentas são tratadas como falhas e disparam novas tentativas.
Payload
Um evento de sucesso:output por error. O conteúdo exato de error varia de acordo com o tipo de falha — o exemplo abaixo mostra uma forma comum:
| Campo | Descrição |
|---|---|
id | O request_id retornado no envio. Use-o para deduplicar tentativas. |
object | Sempre "prediction". |
model | O proprietário e o nome do modelo (por exemplo, black-forest-labs/flux-1.1-pro). |
model_endpoint | O slug do endpoint (por exemplo, text-to-image). |
status | "succeeded" ou "failed". |
input | O corpo da solicitação original que você enviou. |
output | Presente em succeeded. O mesmo corpo de resposta retornado pelo endpoint de resultado. |
error | Presente em failed. Um objeto que descreve a falha; sua estrutura depende do tipo de falha. |
created_at | Timestamp ISO 8601 de quando a solicitação foi criada. |
completed_at | Timestamp ISO 8601 de quando a solicitação atingiu o estado terminal. |
Comportamento de Retentativas
A entrega de webhook é pelo-menos-uma-vez. Se seu endpoint exceder o timeout (5 s) ou retornar um status diferente de2xx, o Sunra tenta novamente com backoff exponencial — até 3 retentativas com atrasos começando em 10 segundos e limitados a 30 segundos. Após a última tentativa, a falha é registrada e não há mais tentativas.
Como as retentativas podem entregar o mesmo evento mais de uma vez, seu handler deve ser idempotente — use o campo id como chave de deduplicação.
Boas Práticas
- Use HTTPS e verifique se o tráfego está chegando ao endpoint esperado.
- Responda
2xximediatamente e processe o payload de forma assíncrona. - Trate a entrega como pelo-menos-uma-vez e deduplique por
id. - Combine webhooks com os endpoints de polling ou streaming se você precisar de atualizações de progresso antes do evento terminal.
Cancelando Solicitações
Se sua solicitação ainda estiver na fila, você pode cancelá-la com:Recuperando Respostas
Assim que sua solicitação forCOMPLETED, recupere a resposta usando:
Integração Simplificada com o Cliente Sunra
O cliente Sunra automatiza o rastreamento de status, simplificando o desenvolvimento de aplicativos com as funções Sunra.Limites de Taxa
Para garantir o uso justo e a estabilidade do sistema, nossos endpoints de API estão sujeitos aos seguintes limites de taxa:| Tipo de Endpoint | Limite de Taxa | Limite de Rajada |
|---|---|---|
| Enviar para a Fila | 10 solicitações/segundo | 100 solicitações/minuto |
| Todos os outros Endpoints | 100 solicitações/segundo | 1.800 solicitações/minuto |
403 Forbidden. Recomendamos implementar um mecanismo de repetição com recuo exponencial para lidar com esses casos.