B2BB2B LLM

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.

Documentazione correlata