Gateway errors
Two patterns worth recognising immediately:
401 unauthenticatedon every route almost always means the key is missing from the request, not that it is wrong.502on everything means the gateway could not reach its authentication service. It fails closed by design. Retry with backoff.
Market Data errors
Server-side failures keep their status (
500, 502, 503, 504) but come back in
the gateway envelope as service_unavailable; the underlying error
is not forwarded. Retry with backoff, and contact Eventory if it persists.
Live Availability errors
An unexpected error during the scrape returns
500, and an unreachable service 503.
Both come back in the gateway envelope as service_unavailable,
not with detail.
Watchlist errors
Validation errors carryerror; a body that is not valid JSON is rejected earlier
and carries detail.
400 — validation
When
event carries several comma-separated ids, the whole request is rejected if
any of them fails the format check, and nothing is created.
A non-integer {id} in the path is rejected before it reaches the Watchlist service
and comes back as a 422 with a detail array, not one of the messages above.
A POST or PATCH body that is not valid JSON is rejected with
{ "detail": "request body is not valid JSON" }; a valid JSON body that is not an
object gets { "detail": "request body must be a JSON object" }.
403
A key without watchlist access gets the gateway’s
403 forbidden in the
gateway envelope on every watchlist path, GET /watchlist/health
included.
404
An unsupported method on a watchlist path is answered by the gateway as
404 not_found in the gateway envelope, not by this API.
500, 502, 504
Server-side failures are answered with the gateway envelope
({ "error": { "code": "service_unavailable", … } }); the underlying message is
deliberately not forwarded. Retry once with backoff. If a 500 persists on a request
that should clearly succeed, report it — it is not something a client can fix.
Account errors
Server-side failures, such as billing being unreachable or a misconfigured plan
(
502), come back in the gateway envelope as service_unavailable.
Retry with backoff, and contact Eventory if it persists.
Stream errors
The WebSocket returns HTTP errors before the upgrade completes. After the upgrade, the server closes the socket with close code1011 when its own feed of notifications
ends: reconnect with backoff. See Connecting to the stream.
Retry policy
Paid requests are billed when the gateway forwards them, so each one is billed once
whatever the API answers: a
4xx, a 5xx or a timeout included. A retry loop on a
bad request spends credits for nothing, and every retry is billed.