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
- Open Settings → Public API in the intelliHoops admin app (organization admins only).
- Turn on Enable public API.
- Click Generate key and copy it — it's shown only once.
- Send that key in the
X-API-Keyheader on every request.
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
/orgYour organization's public profile (name, slug, logo, colors, level, gender, website).
/programsYour programs (id, name, type).
/seasonsSeasons with dates and active/archived status.
/divisionsDivisions with age/grade eligibility.
seasonId— Optional. Limit to one season.
/teamsTeams (name, logo, division, gender). No rosters or member data.
seasonId— Optional. Teams in this season.divisionId— Optional. Teams in this division.
/venuesVenues (name, city, state). No street addresses.
/scheduleGames & 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.
/games/:gameIdA single game / scoreboard.
/standingsComputed 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.
