Richiamate
Ricevi eventi server-to-server firmati e idempotenti e risultati asincroni completati.
Richiamate
Configura un URL di richiamata in Profilo → Richiamate e risultati asincroni. Model Gate invia HTTPS POST richieste di notifiche di account abilitate e richieste di inferenza asincrona nativa completate. La consegna della richiamata è indipendente dall'elaborazione dell'inferenza e viene eseguita attraverso una coda di lavoro durevole dedicata Model Gate.
URL di richiamata e sicurezza in uscita
Utilizza un endpoint HTTPS raggiungibile pubblicamente. La convalida dell'URL di richiamata è un limite di sicurezza in uscita. Gli intervalli IP loopback, privati, link-local, NAT di livello carrier, documentazione/test, multicast, non specificati e riservati vengono rifiutati. Il nome host viene convalidato al momento del salvataggio e nuovamente durante la consegna; i reindirizzamenti vengono riconvalidati. Non indirizzare le richiamate ai servizi interni o i reindirizzamenti alle reti private.
Busta per eventi comuni
Ogni richiamata utilizza la stessa busta:
{
"event_id": "01J...",
"event": "account.balance_low",
"occurred_at": "2026-08-28T07:00:00Z",
"data": {}
}
event_id è stabile per ogni nuovo tentativo di un evento logico. Deduplica consegne entro event_id; non dedurre l'identità confrontando il resto del carico utile. occurred_at è UTC RFC3339. I payload possono ottenere campi aggiuntivi nel tempo, quindi i consumatori devono ignorare i campi sconosciuti.
Ogni consegna include anche lo stesso ID evento in X-Model-Gate-Event-ID.
Catalogo eventi
account.balance_low
{
"event_id": "01J...",
"event": "account.balance_low",
"occurred_at": "2026-08-28T07:00:00Z",
"data": {
"balance": "10.1234567890",
"threshold": "20.0000000000",
"currency": "USD"
}
}
key.spend_limit_threshold_reached
{
"event_id": "01J...",
"event": "key.spend_limit_threshold_reached",
"occurred_at": "2026-08-28T07:00:00Z",
"data": {
"key_id": "KEY_PUBLIC_ID",
"key_name": "Bank integration",
"usage": "80.1234567890",
"spend_limit": "100.0000000000",
"threshold_percent": 80,
"currency": "USD"
}
}
group.spend_limit_threshold_reached
Il carico utile utilizza group_id, group_name, decimale esatto usage, decimale esatto spend_limit, intero threshold_percent, E currency = "USD".
request.completed
{
"event_id": "01J...",
"event": "request.completed",
"occurred_at": "2026-08-28T07:00:00.123456Z",
"data": {
"request_id": "01J...",
"status": "completed",
"response_status": 200,
"response": {"id":"msg_...","type":"message"}
}
}
response_status è nullable quando non esiste uno stato HTTP upstream. I risultati asincroni non riusciti/annullati/scaduti possono includere data.error.
I valori finanziari nei payload di callback sono stringhe decimali esatte; non sono valori di visualizzazione arrotondati dell'interfaccia utente.
Gli avvisi di soglia vengono riattivati dopo che il valore monitorato esce dalla condizione di soglia. L'operatore di soglia valuta le condizioni circa una volta al minuto, al di fuori del percorso caldo di inferenza, quindi i callback di soglia non sono un segnale di superamento dei millisecondi in tempo reale.
Richiedi formato
POST /model-gate/callback HTTP/1.1
Content-Type: application/json
X-Model-Gate-Event-ID: 01J...
X-Model-Gate-Signature: t=1710000000,v1=hex_hmac_sha256
Verifica della firma
Calcola HMAC-SHA256 sulla stringa esatta <timestamp>.<raw_body> utilizzando il segreto di richiamata generato in Profile. Il segreto completo viene mostrato solo quando viene generato o ruotato e viene archiviato crittografato quando è inattivo. Confronta la firma esadecimale in tempo costante e rifiuta i timestamp al di fuori della finestra di riproduzione accettata. Il timestamp HMAC è specifico per un tentativo di consegna; IL event_id rimane stabile tra i tentativi.
Consegna, risposta e nuovi tentativi
Qualsiasi HTTP 2xx la risposta accetta l'evento. HTTP 200 si consiglia il corpo vuoto. Gli errori di trasporto, i timeout e ogni risposta non 2xx sono errori.
Ogni evento ha al massimo 6 tentativi in totale: il tentativo iniziale più cinque tentativi. I tentativi falliti da 1 a 5 sono seguiti da 5 secondi, 30 secondi, 2 minuti, 10 minuti e 1 ora. Ogni tentativo ha una difficoltà 15 secondi timeout complessivo. Dopo il sesto tentativo fallito l'evento diventa terminale failed e non sono previsti ulteriori tentativi automatici. Le attestazioni di lavoro obsolete vengono automaticamente restituite alla coda durevole.
Non eseguire lavori di lunga durata prima di rispondere. Verifica la firma, mantieni/deduplica tramite event_id, ritorno 2xxed elaborare in modo asincrono.