Webhooks

Webhooks API — push sports event updates, no polling

Orbistats' webhooks API subscribes to the events you care about — goals, final results, odds moves — and pushes a signed JSON payload to your endpoint the instant they happen. No polling loop, no wasted requests, no delay waiting for the next poll interval.

Push, Not Poll

Watch an event go out, live

The moment an event fires, we sign the payload and push it straight to your endpoint — no request from you, no polling loop, no delay. If your server doesn't answer, we automatically retry.

Event Hub
Signed · retried · instant
0 delivered this session
Waiting for the next event…
Drag to spin
What's Included

Everything in the webhooks feed

Included

Event Subscriptions

Subscribe to specific leagues, matches or event types.

Included

Instant Delivery

Payloads sent the moment an event occurs.

Included

Retry Logic

Automatic retries with backoff on failed deliveries.

Security

Signed Payloads

Verify authenticity with an HMAC signature header.

Included

Delivery Logs

See every attempt, response code and retry in your dashboard.

Coverage

13 Sports, One Format

Same event schema across every sport we cover.

Coverage

Webhook events across 13 sports

Subscribe to the events you care about — the same signed payload format across every sport we cover.

Setting Up

Register an endpoint

Register the URL you want events delivered to, and the event types you want to subscribe to.

Request Body
FieldTypeRequiredDescription
urlstringRequiredYour HTTPS endpoint to receive events.
eventsarrayRequiredEvent types to subscribe to, e.g. ["match.goal","match.finished"].
sportstringOptionalLimit the subscription to one sport.
secretstringOptionalCustom signing secret. Auto-generated if omitted.
Example Request
POST /v1/webhooks
Authorization: Bearer YOUR_API_KEY
{
  "url": "https://yourapp.com/webhook",
  "events": ["match.goal", "match.finished"]
}
Example Event
POST your endpoint

What we send you

Every event arrives as a signed POST request to the URL you registered.

Payload
POST https://yourapp.com/webhook
X-Orbistats-Signature: sha256=a1b2c3...
{
  "event": "match.finished",
  "event_id": "evt_9f2a1c4b",
  "delivery_id": "dlv_7c3e08a1",
  "sequence": 214,
  "match_id": 48213,
  "sport": "football",
  "final_score": "2-1",
  "timestamp": "2026-09-14T16:52:11Z"
}

event_id identifies the event itself — the same one on every retry. delivery_id identifies this one delivery attempt, so your logs can tell a fresh event apart from a retry of one you've already seen.

Verifying the Signature

Compute an HMAC-SHA256 of the raw request body using your webhook secret, and compare it to the X-Orbistats-Signature header before trusting the payload.

Your Response
200Acknowledged — we mark the delivery successful.
4xx / 5xxWe retry with exponential backoff, up to 5 attempts.

Respond within 5 seconds — a timeout counts as a failure and queues a retry. Deliveries to one endpoint are also capped in flight at once, so a goal-heavy minute across hundreds of matches won't slam your server all at once.

Delivery Guarantees & Ordering

Webhooks are at-least-once, not exactly-once — a retried delivery can land after the original already succeeded on our side. Two fields make that safe to build on:

FieldWhat it guarantees
event_idStable per event. Dedupe on it — if you've already processed it, discard the repeat.
sequenceMonotonic per match_id. A retried delivery can arrive after a newer event, so gate on sequence, not arrival order.
Retry Schedule
AttemptDelay
1Immediate
2~30 seconds
3~2 minutes
4~10 minutes
5~1 hour, then marked failed

Endpoint was down for longer than that? Nothing is lost — list and replay missed deliveries with GET /v1/webhooks/{id}/deliveries and POST /v1/webhooks/{id}/replay.

Event Types

What you can subscribe to

EventFires WhenOrdering Key
match.startedA match kicks off.match_id
match.goalA goal or scoring event occurs.match_id
match.finishedA match ends, final score included.match_id
odds.movedA price moves past your configured threshold.match_id
Code Examples

Register a webhook from any language

Official SDKs cover Python, JavaScript and PHP — every other language works over plain REST.

cURL
Python
JavaScript
curl -X POST https://api.orbistats.com/v1/webhooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"url":"https://yourapp.com/webhook","events":["match.goal"]}'
See Also

Related products & sports

Prefer to hold a connection open instead of receiving pushes? Or jump straight to a sport-specific page.

Get Started

Start free. Upgrade when you need enterprise SLAs.

Self-serve API keys for developers today — dedicated infrastructure, custom feeds and SLAs when you're ready.