Rappels
Recevez des notifications signées de serveur à serveur et des résultats asynchrones terminés.
Rappels
Configurez une URL de rappel dans Profil → Rappels et résultats asynchrones. Model Gate envoie HTTPS POST demandes de notifications de compte activées et de demandes d'inférence asynchrone terminées.
URL de rappel
Utilisez un point de terminaison HTTPS accessible au public. Le point de terminaison doit lire le corps brut de la requête, vérifier la signature, traiter l'événement de manière idempotente et renvoyer HTTP 200 dès que l'événement a été accepté.
Événements
Les rappels peuvent inclure :
- résultats d'inférence asynchrone terminés ;
- notifications de solde de compte faible lorsqu'elles sont activées ;
- Notifications de limite de dépenses par clé API lorsqu'elles sont activées ;
- notifications de limite de dépenses des groupes clés lorsqu'elles sont activées.
La livraison des résultats asynchrones est activée chaque fois qu'une URL de rappel est configurée. Les cases à cocher de notification dans Profil contrôlent uniquement les alertes de solde et de limite correspondantes.
Format de demande
POST /model-gate/callback HTTP/1.1
Content-Type: application/json
X-Model-Gate-Signature: t=1710000000,v1=hex_hmac_sha256
Exemple de charge utile de résultat asynchrone :
{
"event":"async.completed",
"request_id":"01J...",
"status":"completed",
"response":{"id":"msg_...","type":"message"}
}
Les champs de charge utile peuvent être étendus au fil du temps. Ignorez les champs inconnus.
Vérification des signatures
L'en-tête de signature a ce format :
X-Model-Gate-Signature: t=<unix>,v1=<hmac_sha256>
Calculez HMAC-SHA256 sur la chaîne exacte <timestamp>.<raw_body> en utilisant le secret de rappel affiché dans le profil. Comparez la signature hexadécimale avec une comparaison à temps constant et rejetez les horodatages en dehors de votre fenêtre de relecture acceptée.
Livraison et tentatives
Renvoyer HTTP 200 après avoir accepté l'événement en toute sécurité. Les réponses non-2xx et les échecs de connexion peuvent être réessayés. Votre point de terminaison doit donc être idempotent ; utiliser request_id avec event comme clé de déduplication.
N'effectuez pas de travail de longue durée avant de répondre. Mettre l'événement en file d'attente en interne, revenir 200, et traitez-le de manière asynchrone.