Retornos de chamada
Receba notificações assinadas de servidor para servidor e resultados assíncronos concluídos.
Retornos de chamada
Configure um URL de retorno de chamada em Perfil → Retornos de chamada e resultados assíncronos. Modelo Gate envia HTTPS POST solicitações de notificações de conta habilitadas e solicitações de inferência assíncronas concluídas.
URL de retorno de chamada
Use um endpoint HTTPS acessível publicamente. O endpoint deve ler o corpo da solicitação bruta, verificar a assinatura, processar o evento de forma idempotente e retornar HTTP 200 assim que o evento for aceito.
Eventos
Os retornos de chamada podem incluir:
- resultados de inferência assíncrona concluídos;
- notificações de saldo baixo da conta quando ativadas;
- Notificações de limite de gastos com chave de API quando ativadas;
- notificações de limite de gastos de grupos-chave quando ativadas.
A entrega assíncrona de resultados é habilitada sempre que um URL de retorno de chamada é configurado. As caixas de seleção de notificação no Perfil controlam apenas os alertas de saldo e limite correspondentes.
Formato de solicitação
POST /model-gate/callback HTTP/1.1
Content-Type: application/json
X-Model-Gate-Signature: t=1710000000,v1=hex_hmac_sha256
Exemplo de carga útil de resultado assíncrono:
{
"event":"async.completed",
"request_id":"01J...",
"status":"completed",
"response":{"id":"msg_...","type":"message"}
}
Os campos de carga útil podem ser estendidos ao longo do tempo. Ignore campos desconhecidos.
Verificação de assinatura
O cabeçalho da assinatura tem este formato:
X-Model-Gate-Signature: t=<unix>,v1=<hmac_sha256>
Calcule HMAC-SHA256 na string exata <timestamp>.<raw_body> usando o segredo de retorno de chamada mostrado em Perfil. Compare a assinatura hexadecimal com uma comparação de tempo constante e rejeite os carimbos de data e hora fora da janela de reprodução aceita.
Entrega e novas tentativas
Retornar HTTP 200 depois de aceitar o evento com segurança. Respostas diferentes de 2xx e falhas de conexão podem ser repetidas. Seu endpoint deve, portanto, ser idempotente; usar request_id junto com event como uma chave de desduplicação.
Não execute trabalhos de longa duração antes de responder. Coloque o evento na fila internamente, retorne 200e processá-lo de forma assíncrona.