Oddzwonienia

Otrzymuj podpisane powiadomienia między serwerami i zakończone wyniki asynchronizacji.

Oddzwonienia

Skonfiguruj adres URL wywołania zwrotnego w Profil → Wywołania zwrotne i wyniki asynchroniczne. Model Gate wysyła HTTPS POST żądania dotyczące włączonych powiadomień konta i ukończonych żądań wnioskowania asynchronicznego.

Adres URL wywołania zwrotnego

Użyj publicznie dostępnego punktu końcowego HTTPS. Punkt końcowy powinien odczytać nieprzetworzoną treść żądania, zweryfikować podpis, przetworzyć zdarzenie idempotentnie i zwrócić HTTP 200 jak tylko wydarzenie zostanie zaakceptowane.

Wydarzenia

Wywołania zwrotne mogą obejmować:

  • ukończone wyniki wnioskowania asynchronicznego;
  • powiadomienia o niskim saldzie konta, gdy są włączone;
  • Powiadomienia o limitach wydatków klucza API, jeśli są włączone;
  • powiadomienia o limitach wydatków grupy kluczy, jeśli są włączone.

Asynchroniczne dostarczanie wyników jest włączone zawsze, gdy skonfigurowany jest adres URL wywołania zwrotnego. Pola wyboru powiadomień w Profilu kontrolują tylko odpowiednie alerty dotyczące salda i limitów.

Format żądania

POST /model-gate/callback HTTP/1.1
Content-Type: application/json
X-Model-Gate-Signature: t=1710000000,v1=hex_hmac_sha256

Przykładowy ładunek wyniku asynchronicznego:

{
  "event":"async.completed",
  "request_id":"01J...",
  "status":"completed",
  "response":{"id":"msg_...","type":"message"}
}

Pola ładunku można z czasem rozszerzać. Ignoruj ​​nieznane pola.

Weryfikacja podpisu

Nagłówek podpisu ma następujący format:

X-Model-Gate-Signature: t=<unix>,v1=<hmac_sha256>

Oblicz HMAC-SHA256 dla dokładnego ciągu <timestamp>.<raw_body> używając sekretu wywołania zwrotnego pokazanego w profilu. Porównaj podpis szesnastkowy z porównaniem w czasie stałym i odrzuć znaczniki czasu poza zaakceptowanym oknem powtórki.

Dostawa i ponowne próby

Zwróć HTTP 200 po bezpiecznym przyjęciu wydarzenia. Można ponawiać odpowiedzi inne niż 2xx i błędy połączenia. Dlatego Twój punkt końcowy musi być idempotentny; używać request_id razem z event jako klucz deduplikacyjny.

Nie wykonuj długotrwałej pracy przed udzieleniem odpowiedzi. Kolejkuj wydarzenie wewnętrznie i wróć 200i przetwarzaj je asynchronicznie.

Powiązana dokumentacja