sleeperrank↗ Open access · v1
SLEEPER RANK / DEVELOPER API

The data behind
the competition.

Bring career rankings into what you build.
Open access. Read-only. No API key required.

60 / minrequests per IP · shared quota
BASE URLhttps://sleeper-rank.vercel.app/api/v1GET
01 / TRY IT YOURSELF

A name. Both rankings.

Redraft / Keeper + Dynasty

Find a manager

Live request

Enter an exact Sleeper username to read their imported career ranks. Usernames are case-insensitive; a leading @ is optional.

This request reads stored results. It does not start a search or import.

Response

JSON
Your results, in context.

Run a request to see ranks, scores, records,
and the latest ranking timestamp.

EXAMPLE REQUEST
curl 'https://sleeper-rank.vercel.app/api/v1/rankings/by-username/camfleety'

ranks.redraft.rank and ranks.dynasty.rank contain the positions. Each pod has a status: ranked, unranked (null rank), or not_available (no imported rating). Unknown usernames return 404.

02 / THE REFERENCE

One API. The observed field.

Public CORS · Browser requests supported
Method / endpointReturns & parameters
GET/rankings/by-username/{username}Both career ranks, scores, records and ranking timestamp.Exact username, case-insensitive. Conflicting imported usernames return 409; use manager ID.
GET/leagues/{id}/rankA league’s strength rank within its format group and season.Returns rank, population, coverage, version, strength index and evidence status. A Sleeper league ID identifies one season; this is not a manager’s standing within a league.
GET/overviewDiscovered users, leagues and games.Includes ranking and sync timestamps.
GET/rankingsPaginated career rankings.cohort=redraft|dynasty · confidence=all|established
limit=1..100 (default 50) · after cursor
GET/managersThe discovered manager directory.q case-insensitive username prefix · limit=1..100 (default 50) · after cursor
GET/managers/{id}Manager identity and career ratings in each pod.An empty ratings array means results are not available yet.

League ranks compare imported league-seasons within Redraft / Keeper or Dynasty for the same season. League strength uses participant ratings before each observed week. At least five covered leagues in a format/season group are required to publish a rank; each needs six observed weeks and 80% team coverage. Otherwise rank is null with status insufficient_evidence. Provisional league ranks are estimates with limited evidence; a known league without a computed rating returns not_available. Unknown league IDs return 404.

MORE EXAMPLES
curl 'https://sleeper-rank.vercel.app/api/v1/rankings?cohort=dynasty&limit=20'
curl 'https://sleeper-rank.vercel.app/api/v1/managers?q=camfleety'
curl 'https://sleeper-rank.vercel.app/api/v1/managers/1015846922424725504'
03 / GOOD TO KNOW

Clear limits. Clear context.

60 / minute

A shared request budget

60 requests per IP per 60-second window, shared across endpoints and website API calls. Shared networks share the quota; counters persist across server instances. GET and HEAD consume quota; OPTIONS does not.

Responses include RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset (seconds). On 429, wait the seconds specified by Retry-After. Avoid parallel bursts.

50 / page

Follow the cursor

Pass nextCursor as after without modifying it, keeping the same filters. A null cursor ends the list. When rankings change, reset: true means restart without a cursor.

Ranking total counts the entire pod before confidence filtering. Request up to 100 rows per page.

GET / only

Read the available evidence

Redraft includes Keeper; Dynasty stays separate. Discovered users are not necessarily evaluated careers. Records reflect imported data, with potentially incomplete lifetime history. Null means unavailable; unranked scores are capped at 30.

Sync timestamps report freshness. The importer must be running to publish updates. API reads never trigger Sleeper requests.