B2BB2B LLM

Povratni pozivi

Primajte potpisane, idempotentne događaje između poslužitelja i dovršene asinkrone rezultate.

Povratni pozivi

Konfigurirajte URL povratnog poziva u Profil → Povratni pozivi i asinkroni rezultati. Model Gate šalje HTTPS POST zahtjevi za omogućene obavijesti računa i dovršeni izvorni asinkroni zahtjevi za zaključivanje. Isporuka povratnog poziva neovisna je o obradi zaključivanja i odvija se kroz namjenski izdržljivi radni red čekanja Model Gate.

URL povratnog poziva i izlazna sigurnost

Koristite javno dostupnu HTTPS krajnju točku. Validacija URL-a za povratni poziv izlazna je sigurnosna granica. Povratna petlja, privatni, lokalni za vezu, NAT na razini operatera, dokumentacijski/testni, multicast, neodređeni i rezervirani rasponi IP-a su odbijeni. Ime glavnog računala se provjerava prilikom spremanja i ponovno tijekom isporuke; preusmjeravanja se ponovno provjeravaju. Nemojte usmjeravati povratne pozive na interne usluge ili preusmjeravanja na privatne mreže.

Zajednička omotnica događaja

Svaki povratni poziv koristi istu omotnicu:

{
  "event_id": "01J...",
  "event": "account.balance_low",
  "occurred_at": "2026-08-28T07:00:00Z",
  "data": {}
}

event_id je stabilan za svaki ponovni pokušaj jednog logičkog događaja. Ukloni duplikat isporuka do event_id; do not infer identity by comparing the rest of the payload. occurred_at je UTC RFC3339. Korisna opterećenja mogu dobiti dodatna polja tijekom vremena, tako da potrošači moraju zanemariti nepoznata polja.

Svaka isporuka također uključuje isti ID događaja X-Model-Gate-Event-ID.

Katalog događaja

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

Korisni teret koristi group_id, group_name, egzaktno-decimalno usage, egzaktno-decimalno spend_limit, cijeli broj threshold_percent, i 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 je nullable kada ne postoji uzvodni HTTP status. Neuspjeli/otkazani/istekli asinkroni rezultati mogu uključivati data.error.

Financijske vrijednosti u korisnim sadržajima povratnog poziva su točni decimalni nizovi; nisu zaokružene vrijednosti prikaza korisničkog sučelja.

Upozorenja o pragu ponovno se aktiviraju nakon što nadzirana vrijednost napusti svoje stanje praga. Radnik praga procjenjuje uvjete otprilike jednom u minuti, izvan vruće staze zaključivanja, tako da povratni pozivi praga nisu signal prelaska milisekunde u stvarnom vremenu.

Format zahtjeva

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

Ovjera potpisa

Izračunajte HMAC-SHA256 preko točnog niza <timestamp>.<raw_body> pomoću tajne povratnog poziva generirane u Profilu. Cijela tajna prikazuje se samo kada se generira ili rotira i pohranjuje se šifrirana dok miruje. Usporedite heksadecimalni potpis u konstantnom vremenu i odbacite vremenske oznake izvan vašeg prihvaćenog prozora za ponavljanje. Vremenska oznaka HMAC-a specifična je za pokušaj isporuke; the event_id ostaje stabilan tijekom ponovnih pokušaja.

Isporuka, odgovor i ponovni pokušaji

Bilo koji HTTP 2xx odgovor prihvaća događaj. HTTP 200 s praznim tijelom preporučuje se. Pogreške u prijenosu, isteci vremena i svaki odgovor koji nije 2xx su neuspjesi.

Svaki događaj ima najviše Ukupno 6 pokušaja: prvi pokušaj plus pet ponovnih pokušaja. Slijede neuspjeli pokušaji 1–5 5 sekundi, 30 sekundi, 2 minute, 10 minuta i 1 sat. Svaki pokušaj je težak 15 sekundi ukupno vremensko ograničenje. Nakon šestog neuspjelog pokušaja događaj postaje terminalan failed i više nema automatskog ponovnog pokušaja. Zastarjeli radnički zahtjevi automatski se vraćaju u trajni red čekanja.

Nemojte obavljati dugotrajan posao prije nego što odgovorite. Provjerite potpis, ustrajte/uklonite duplikat do event_id, povratak 2xx, i obrađivati ​​asinkrono.

Povezana dokumentacija