---
title: "Synced sports teams and leagues reference data"
method: GET
path: "/sports/metadata"
tags: ["Sports"]
---

# Synced sports teams and leagues reference data

`GET /sports/metadata`

## Request

- Base URL: `https://data.kairos.trade`
- URL: `https://data.kairos.trade/sports/metadata`
- Auth: none required

Returns every synced team and league for frontend lookups (logos, abbreviations, aliases, colors), ordered by name/sport. Served from a shared server cache refreshed every 15 minutes and never more than 24 hours old; the `Age` header gives the seconds since the body was built.

## Response `200`

All synced teams and leagues.

- SportsMetadataResponse
  - `teams` SportsTeam[], required
    - `id` string, required: Internal row id (numeric, serialized as string).
    - `name` string, required
    - `league` string, required
    - `logoUrl` string, nullable, required
    - `abbreviation` string, nullable, required
    - `alias` string, nullable, required
    - `color` string, nullable, required
  - `leagues` SportsLeague[], required
    - `id` string, required
    - `sport` string, required
    - `imageUrl` string, nullable, required

## Other responses

- `429`: Rate limit exceeded for this route's sliding window, keyed on the session `sub` when authenticated and on the trusted client IP otherwise. Honor `Retry-After`. A per-API-key data ceiling (set per credential) rejects with `{"detail": "API key data rate limit exceeded"}` instead of the `error` envelope below.

---

[API](https://skmtc.dev/kairos/apis/kairos-data-api.md) - [All operations](https://skmtc.dev/kairos/apis/kairos-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kairos/apis/kairos-data-api/revisions/cf6b76079e38?raw)
