Skip to content
intelliHoops
Public API · v1

Developer API

A simple, read-only REST API that lets your own website display your organization's live schedule, scores, and standings. Authenticate with one key, get clean JSON back. No player data is ever exposed.

Getting started

  1. Open Settings → Public API in the intelliHoops admin app (organization admins only).
  2. Turn on Enable public API.
  3. Click Generate key and copy it — it's shown only once.
  4. Send that key in the X-API-Key header on every request.
Open settings →

Authentication

Every request must include your API key in the X-API-Keyheader. Keys are scoped to a single organization, so a key can only ever read its own org's data.

Base URL:

https://api.intellihoops.com/api/public/v1

Example request:

curl -H "X-API-Key: ih_live_your_key_here" \
  https://api.intellihoops.com/api/public/v1/schedule?seasonId=SEASON_ID

Responses & conventions

  • • Successful responses wrap the payload in a { "data": … } envelope.
  • • All endpoints are GET and read-only. The API never writes.
  • • The API is versioned under /v1. Breaking changes ship as a new version.
  • • CORS is open, so you can call it directly from your website's JavaScript or from your backend.
  • • Requests are rate limited per key; keep a light polling interval (e.g. every 30–60s).

Example response body:

{
  "data": [
    {
      "id": "…",
      "status": "completed",
      "scheduledAt": "2026-04-12T17:00:00.000Z",
      "homeTeamName": "Thunder U12",
      "awayTeamName": "Wolves U12",
      "homeScore": 48,
      "awayScore": 41,
      "venueName": "Community Center"
    }
  ]
}

Endpoints

GET/org

Your organization's public profile (name, slug, logo, colors, level, gender, website).

GET/programs

Your programs (id, name, type).

GET/seasons

Seasons with dates and active/archived status.

GET/divisions

Divisions with age/grade eligibility.

  • seasonId — Optional. Limit to one season.
GET/teams

Teams (name, logo, division, gender). No rosters or member data.

  • seasonId — Optional. Teams in this season.
  • divisionId — Optional. Teams in this division.
GET/venues

Venues (name, city, state). No street addresses.

GET/schedule

Games & results with team, venue, and division names resolved.

  • seasonId — Optional. Filter by season.
  • divisionId — Optional. Filter by division.
  • teamId — Optional. Games for one team (home or away).
  • from — Optional. YYYY-MM-DD lower bound (UTC).
  • to — Optional. YYYY-MM-DD upper bound (UTC).
  • limit — Optional. 1–500, default 100.
GET/games/:gameId

A single game / scoreboard.

GET/standings

Computed standings (wins, losses, points for/against, differential).

  • divisionId — Required. The division to rank.

Errors

Errors use standard HTTP status codes and a consistent body:

{
  "error": {
    "code": "api_disabled",
    "message": "The public API is disabled for this organization."
  }
}
  • 400 — Bad request — a parameter was malformed (e.g. an invalid id).
  • 401 — Missing or invalid API key.
  • 403 — The public API is turned off for this organization.
  • 404 — The requested record was not found in your organization.
  • 429 — Rate limited — slow down and retry shortly.

Privacy first

The public API deliberately exposes only public league facts — teams, schedules, scores, and standings. It never returns player names, dates of birth, contact information, health notes, financial data, or street addresses. Youth privacy is non-negotiable, so player-level data is simply not part of this API.