These docs are still in beta and not quite complete yet.
Documentation

Endpoints

Two endpoints expose your bridge's current state. Swap https for wss on either URL to subscribe: the socket sends the current object on connect, then a new one after each change.

Try it

Pick a bridge to populate the examples below with its data.

Your Bridge ID
your-bridge-id

Sign in to load your bridges, or copy the ID from your dashboard.

GET /v1/bridge

The current bridge record. Fields vary by controller and sport.

Request

bash
curl --request GET \
  --url https://api.scorescrape.io/v1/bridge \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_BRIDGE_ID'

Response

Example bridge

json
{
  "friendly_name": "Home Stadium",
  "status": "online",
  "type": "Bridge Pro",
  "is_setup": true,
  "connected_model": "daktronics all sport 5000",
  "connected_sport": "football",
  "connected_baud": 19200,
  "data_url": "https://example.tunwg.scorescrape.io",
  "version": "1.2.0"
}

Omits owner, id, created_at, updated_at, deleted_at, and suspension_reason.

The socket also sends {"type":"ping"} as an application-level heartbeat; reply with {"type":"pong"}. WebSocket protocol pings are handled by the client library.

GET /v1/graphics

The saved HTML graphic and its config. Returns No Graphics Configured if none is set.

Request

bash
curl --request GET \
  --url https://api.scorescrape.io/v1/graphics \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_BRIDGE_ID'

Response

Example response

json
{
  "html": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t<meta charset=\"UTF-8\">\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<title>ScoreScrape - VISITOR vs HOME</title>\n\t<style>\n\t\t* {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\n\t\tbody {\n\t\t\tdisplay: flex;\n\t\t\t…\n… [truncated]",
  "config": {
    "sport": "football",
    "template": "blocky",
    "showPeriod": true,
    "showTimeouts": true,
    "anchorLogoUrl": "https://r2.scorescrape.io/logos/Icon.svg",
    "showPlayClock": true,
    "showShotClock": false,
    "showBoundingBoxes": false,
    "selectedAwayTeamId": null,
    "selectedHomeTeamId": "00000000-0000-4000-8000-000000000001",
    "showDownAndDistance": true,
    "showLogoBoundingBoxes": true,
    "enableTouchdownAnimation": true
  }
}

HTML is shortened above for display. API responses aren't truncated.

When no HTML is set, WebSocket clients get {"message":"No Graphics Configured"} and stay connected for updates.

Errors

Status Cause
401 Bridge ID missing or invalid. /v1/graphics also returns 401 when no graphics record exists; an existing record with empty HTML returns 200.
429 Rate limit exceeded. Use WebSocket instead of polling for live data.
WS close Reconnect with exponential backoff. The first message after reconnecting carries the full current state.