Krino returns errors in RFC 7807 format.

Status codes

Retrying

Do not retry 400 or 401 — the same request produces the same answer. For 429 and 500, use exponential backoff (1 s, 2 s, 4 s, 8 s) with a cap on total attempts.
If the decision endpoint sits inside a payment flow, decide your retry budget up front. Timing out the payment while waiting for a decision is worse than not getting the decision. Give Krino a timeout and fall back to your own default behaviour when it is exceeded.

Rate limits

Endpoints run under a default rate-limiting policy; requests over the limit get 429. Limits are configurable in your own deployment — at enterprise volumes we tune them together during onboarding.

What 202 guarantees

When the ingestion endpoint returns 202, the payload has been validated and placed on a durable queue. The write itself is asynchronous: the record is not yet queryable when the response arrives. If you send an event and immediately ask for a decision that depends on it, that decision may not see it.