18+ Only  |  Gambling can be addictive — please gamble responsibly  |  Gambling Help: 1800 858 858  |  GambleAware

API reference / Health

GET /v1/health/connectors

Per-connector freshness

Per-scraper last-success age + a stale flag, so a silently stalled feed (the root cause of phantom arbs) is visible. `sports` breaks that down PER SPORT, because connector-level health cannot see a book that has quietly stopped covering one competition. Measured 2026-08-21: betright was reporting healthy and writing 15-21 events a cycle — its NRL and AFL rows current to the minute — while its NFL rows were 79 hours old. It had simply dropped NFL, and nothing said so. Those stale NFL prices were being served as arbitrage.

Requires X-API-Key 1 credit

Request

curl 'https://api.puntersedge.online/v1/health/connectors' \
  -H 'X-API-Key: YOUR_KEY'

Parameters

NameIn TypeRequired Description
stale_after_s query number no age (s) past which a connector is 'stale'
coverage_stale_after_s query number no age (s) past which a book is treated as no longer COVERING a sport. Defaults to 6h, the same window /v1/sports/{sport_key}/odds will serve — past it the book is effectively absent for that sport.
include_sports query boolean no include the per-sport coverage breakdown

Responses

Status codes: 200, 401, 402, 422, 429, 500. Response bodies are JSON; the full schema is in /openapi.json.

Example response

200 application/json — this call costs 1 credit. Field names and types are as the API returns them; values are a real sample, trimmed to a few items.

{
  "now": "2026-09-07T00:49:16Z",
  "stale_after_s": 180.0,
  "any_stale": false,
  "any_degraded": false,
  "connectors": [
    {
      "connector": "sportsbet",
      "last_ok_age_s": 6.0,
      "last_poll_age_s": 6.0,
      "polling": true,
      "stale": false,
      "records_written": 163,
      "last_msg": "OK — 163 records",
      "degraded": false,
      "sports": [
        {
          "sport_key": "nrl",
          "markets": 48,
          "newest_age_s": 6.0,
          "covering": true
        },
        {
          "sport_key": "afl",
          "markets": 27,
          "newest_age_s": 6.0,
          "covering": true
        }
      ],
      "sports_not_covering": []
    },
    {
      "connector": "tab",
      "last_ok_age_s": 11.2,
      "last_poll_age_s": 11.2,
      "polling": true,
      "stale": false,
      "records_written": 349,
      "last_msg": "OK — 349 records",
      "degraded": false,
      "sports": [
        {
          "sport_key": "nrl",
          "markets": 48,
          "newest_age_s": 11.2,
          "covering": true
        },
        {
          "sport_key": "afl",
          "markets": 27,
          "newest_age_s": 11.2,
          "covering": true
        }
      ],
      "sports_not_covering": []
    },
    {
      "connector": "ladbrokes_au",
      "last_ok_age_s": 10.6,
      "last_poll_age_s": 10.6,
      "polling": true,
      "stale": false,
      "records_written": 375,
      "last_msg": "OK — 375 records",
      "degraded": false,
      "sports": [
        {
          "sport_key": "nrl",
          "markets": 48,
          "newest_age_s": 10.6,
          "covering": true
        },
        {
          "sport_key": "afl",
          "markets": 27,
          "newest_age_s": 10.6,
          "covering": true
        }
      ],
      "sports_not_covering": []
    }
  ],
  "coverage_stale_after_s": 21600.0,
  "not_covering": []
}

Try it against live data

The free tier needs no credit card, and the sandbox endpoints need no key at all.

Get a free API key Quickstart
This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.