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.

GET /v1/changes?cursor=…&types=fixture
{
  "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.

Ready to try it?

Test mode is free and resets on demand.

Start building Read the docs