croke Resources Public API

Overview

The Public API exposes the same public data shown on Croke league analytics pages and tournament archive pages. Use it to power club websites, standings widgets, livestream overlays, recap pages, or archival dashboards.

Base URL: https://croke.app/api/v1

League Endpoints

EndpointUse
GET /leagues/{leagueCode}League metadata, roster display data, season index, and season links.
GET /leagues/{leagueCode}/seasons/{seasonId}Normalized season snapshot with settings, completed sessions, rounds, matches, standings, and recap.
GET /leagues/{leagueCode}/seasons/{seasonId}/analyticsStandings, trends, star shots, partner chemistry, strength metrics, player ratings, and session summaries.
fetch('https://croke.app/api/v1/leagues/ABCD-2345/seasons/0/analytics')
  .then((res) => res.json())
  .then((payload) => console.log(payload.data.standings));

Tournament Endpoints

EndpointUse
GET /tournaments/{tournamentCode}Tournament metadata, team display data, stage summary, and links.
GET /tournaments/{tournamentCode}/archiveFull archive payload: header, qualifying, bracket, final results, placements, and display labels.
GET /tournaments/{tournamentCode}/qualifyingQualifying rounds, group data, matches, standings, and cutoff data.
GET /tournaments/{tournamentCode}/bracketNormalized elimination bracket for single elimination, double elimination, and A/B pool formats.
GET /tournaments/{tournamentCode}/resultsFinal placements, podium, qualifying records, elimination records, seeds, and star shots.
fetch('https://croke.app/api/v1/tournaments/JUDO-VOLT/archive')
  .then((res) => res.json())
  .then((payload) => console.log(payload.data.results.podium));

Response Format

Successful responses use a stable envelope with an API version, a data object, and useful links.

{
  "apiVersion": "1",
  "data": {
    "code": "JUDO-VOLT",
    "header": {
      "name": "Summer Open",
      "completed": true
    }
  },
  "links": {
    "self": "https://croke.app/api/v1/tournaments/JUDO-VOLT/archive"
  }
}

Error responses use the same versioned envelope.

{
  "apiVersion": "1",
  "error": {
    "code": "not_found",
    "message": "Tournament not found.",
    "requestId": "..."
  }
}

Privacy And Limits

  • The API is public and unauthenticated, matching existing public pages for users who know a league or tournament code.
  • Only read methods are allowed: GET, HEAD, and OPTIONS.
  • Responses redact auth identifiers, emails, owner IDs, player claims, trusted-player records, and account-link internals.
  • CORS is enabled for public read integrations.
  • Completed seasons and tournaments use longer cache headers than active data. Clients should respect Cache-Control and ETag.

Versioning

Version 1 lives at /api/v1. Additive fields may appear over time, but existing v1 field meanings should remain stable. Breaking changes will use a new versioned path.