API

A small read-only JSON API for the schedule behind PPV+, and for discovering this site's own mirror domains. Open to use from other sites and from server-side code — see Limits below.

GETcourtpass.sbs (with Accept: application/json)

The bare domain doubles as a "ping" endpoint: send Accept: application/json and you get mirror data back instead of the homepage. A normal browser visit (no such header) still gets the site.

Response structure

  • success (boolean): Indicates if the request was successful.
  • domains (array): Array of mirror domains.

Your application can use this endpoint across all domains to stay informed of changes.

GETcourtpass.sbs/api/streams

Base URL

The base URL to access the API is accessible on all backup domains, including those returned by the ping endpoint above.

Response structure

The endpoint returns categories with their streams and metadata about the request.

  • success (boolean): Indicates if the request was successful.
  • timestamp (integer): Unix timestamp for when the response was generated.
  • READ_ME (string): Informational note for API users.
  • performance (float): Time taken to build the response, in seconds.
  • streams (array): Array of stream-category objects.

Stream category object

  • category (string): Category name (e.g. "NBA", "Soccer").
  • id (integer): Unique category identifier.
  • always_live (integer): Binary flag (0 = no, 1 = yes).
  • streams (array): List of stream objects for this category.

Stream object

  • id (integer): Unique stream identifier.
  • name (string): Stream or event title.
  • tag (string): Optional broadcaster/source label.
  • poster (string): Poster image URL, when one exists.
  • uri_name (string): URL-friendly stream identifier.
  • starts_at (integer): Stream start time (Unix timestamp).
  • ends_at (integer): Stream end time (Unix timestamp).
  • always_live (integer): Binary live-state flag (0/1).
  • category_name (string): Parent category name.
  • iframe (string): Embed <iframe> snippet to render this stream directly.
  • allowpaststreams (integer): Binary flag for past-stream availability.

Example response

{
  "success": true,
  "timestamp": 1734299469,
  "READ_ME": "Interested in using our API? Contact us for more information.",
  "performance": 3.15,
  "streams": [
    {
      "category": "Basketball",
      "id": 37,
      "always_live": 0,
      "streams": [
        {
          "id": 2940,
          "name": "Pelicans at Pacers",
          "tag": "Local Broadcast",
          "poster": "https://cdn.nba.com/manage/2024/12/nop-@-ind-12_15_2024-game-card-16_9.png",
          "uri_name": "nba-reg/week-8/nop-ind",
          "starts_at": 1734300000,
          "ends_at": 1734310800,
          "always_live": 0,
          "category_name": "Basketball",
          "allowpaststreams": 0
        }
      ]
    }
  ]
}

Notes

  • always_live and allowpaststreams are binary indicators (1 = true, 0 = false).
  • starts_at, ends_at, and timestamp are Unix timestamps.
  • uri_name can be used to construct links for stream-specific views.

Usage

  • Use the ping endpoint to find a working domain if one mirror is down.
  • Poll /api/streams approximately every 1 minute for updates.
  • Use the poster URL to render event imagery in your UI, when present.

Limits

  • Allowed: usage on other sites (Access-Control-Allow-Origin: *).
  • Allowed: backend/server-side usage with sensible caching to avoid aggressive polling.