Skip to content
CrossFitAPI.com

Reference

Every endpoint, runnable

Press Send on any of these and watch the real API answer. Looking around needs no key: the calls go through a server-side proxy, capped at ten rows.

Base URL https://api.crossfitapi.com/v1 · Bearer auth · full documentation

OpenAPI 3.1 documentNo key needed. Generate a client, or import it into Postman or Insomnia.
GET/v1/healthOpen

Row counts, the last successful sync per source, and the independence notice.

Runs against the live API through a server-side proxy. No key needed, capped at ten rows. With your own key there is no cap and no allowlist.

The contract

What is true of every endpoint, so you only have to learn it once.

One envelope

Lists return { data, pagination }. Errors return { error: { code, message } }. Branch on code; it will not change.

Cursor pagination

limit and cursor. Keyed on the sort value plus a tiebreaker id, so page 2,000 costs what page 1 costs and tied ranks survive a page boundary.

Canonical division keys

men-45-49 means the same thing in 2014 and in 2026, even though the upstream ids differ. An unknown key is a 400, not an empty list.

Raw scores always

score_raw is always present. reps, time_seconds and tiebreak_seconds may be null, where the encoding for that season is one we have yet to verify.

Provenance

Records carry a source object with a URL you can open. Anything we computed carries calculated_by.

RateLimit headers

Every response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset, so you can see the wall coming.