Headers, CORS & policy

Status and support

Checking whether it's us, and what to include when it is.

Is the API up?

curl -sS https://api.esportsodds.gg/health
# {"status":"ok"}

/health needs no API key, isn't metered, and returns 503 with {"status":"unavailable"} when the service is up but can't reach its database. It's the right thing to point a monitor at.

Note it's the one endpoint without the {data, meta} envelope — it's a probe, and keeping it trivial is the point.

For history and incidents: status.esportsodds.gg.

Is it me?

Work down this list before reporting a problem:

SymptomMost likely cause
Everything 401sKey not sent as Authorization: Bearer <key>, or rotated more than 24h ago
Everything 429sCheck error.codequota_exceeded means out of requests, not overloaded
One endpoint 404sA malformed id, or a slug on /matches (matches have no slug)
Empty arrays everywhereFilters too narrow, or a sub-resource with no data — check data_available
eo_model returns nothingExpected — the model line isn't served yet

Troubleshooting covers each of these properly.

What data coverage exists

/v1/{game}/coverage states what the product actually has, per capability, with an honest status:

curl -H "Authorization: Bearer $ESPORTSODDS_API_KEY" \
  "https://api.esportsodds.gg/v1/cs2/coverage"

live means available now. pending_validation means built but held back until it clears an accuracy bar. schema_ready means the shape exists but isn't populated. planned means intended, not built. licence_required means blocked on rights rather than engineering.

It's a deliberately unflattering endpoint — it tells you what we don't have as clearly as what we do, so you can find out before you build rather than after.

Reporting a problem

Include the X-Request-Id. Every response carries one, and it's repeated in error.request_id on failures. With it we can find the exact request in our logs; without it we're matching on a timestamp.

A good report is: the request id, the URL you called (minus your key), what you expected, and what you got.

Notifications

Your dashboard controls email for quota warnings at 80% and 100%, payment receipts, and changelog entries for API changes. The changelog one is worth leaving on — it's how a deprecation would reach you.

On this page