Error Handling
Praeto Dispatcher uses JSON error responses. Standard shape:details may be a string, object, array, or omitted depending on the failure.
Common HTTP statuses
| Status | Meaning | Typical Cause |
|---|---|---|
400 | Bad request | Invalid JSON, invalid URL, missing fields, payload too large |
401 | Unauthorized | Missing/invalid bearer token |
404 | Not found | Event, endpoint, or delivery does not exist for this tenant |
409 | Conflict | Idempotency key reused with different payload |
429 | Rate limited or quota exceeded | Too many requests or monthly/hard limit reached |
500 | Internal server error | Unexpected backend/database/runtime failure |
Authentication errors
Missing bearer token:Idempotency conflict
Returned when the sameIdempotency-Key is reused with a different payload.
- Do not retry with a different payload under the same key.
- Fetch or inspect the original event.
- Use a new idempotency key only if this is genuinely a different event.
Rate limit errors
Example:- Read
details.retry_after_seconds. - Wait at least that long.
- Retry with the same
Idempotency-Keyif retryingPOST /v1/events.
Quota limit errors
Possible quota failures:- monthly event limit exceeded
- monthly attempt limit exceeded
- max endpoint count exceeded
- max fan-out endpoints exceeded
- payload too large
- inspect
/v1/usage/current - inspect
/v1/usage/limits - upgrade plan or reduce usage
URL validation errors
Praeto Dispatcher blocks unsafe webhook URLs. Examples:Delivery failure vs API failure
Important distinction:POST /v1/eventsreturning success means Praeto accepted and queued the event.- It does not guarantee every downstream webhook endpoint returned success.
Retry-safe client behavior
When publishing events:- Always send an
Idempotency-Key. - If the request times out or returns
5xx, retry with the same key and same body. - If the response is
409, stop and inspect the original event. - If the response is
429, wait forretry_after_secondsand retry with the same key.