Products
Events & Sync
Webhooks are the nudge; the change stream is the truth. Keep a whole season in sync by storing one cursor.
Delta sync with one cursor
GET /v1/changes streams every change to the entities you care about, in order, from wherever your cursor stopped. Store the cursor after each run and you never re-download a season, never miss an update, and never need to diff anything yourself.
{
"changes": [
{ "type": "oyss.fixture.updated", "subject": "fx_01hz…",
"changed": ["start", "venue.field"] }
],
"cursor": "chg_01hz…" // store this; resume here next run
}Webhooks that fail politely
Deliveries are HMAC-signed, retried with backoff, and dispatched with per-subscription fairness — one slow endpoint cannot delay anyone else’s events. An endpoint that never answers is disabled automatically with the reason shown in the console; re-create it when it is healthy and reconcile from your cursor.
Every delivery attempt is recorded, and any event can be redelivered from the console with one click.