DEGEN.Get market access

Open API

Your league, over HTTPS.

A Personal Access Token authenticates every call as you, not a service account, so the same auth, RLS, and per-action gates the app itself runs under apply unchanged. A token only carries the scopes it was minted with, least-privilege by default. Point Claude, Codex, or your own script at it.

What people are building

Three shapes the same token can take.

claude · degen mcp
find me a trade that improves my playoff odds

GET /leagues/{id}/trade-triggers

Someone's standing offer wants Xavier Worthy for a 2026 2nd. You're holding a 2027 1st and 3rd on the bench. Send it?

do it

POST /trade-triggers/{id}/offers

trade filled

curl · GET /roster
$ curl degen.gg/api/leagues/{id}/roster
{
  "starters": [
    { "player": "J. Gibbs", "proj": 18.4 },
    { "player": "Ja'Marr Chase", "proj": 21.1 }
  ]
}
trade triggers · automated
1Standing offer posted
2A roster crosses the line
3Trade fills, webhook fires

Reads

Scope read unless noted. Returns your own data plus the shared league data you're a member of.

MethodPathQueryScope
GET/leaguesread
GET/season/current-weekread
GET/leagues/{league_id}/rosterread
GET/leagues/{league_id}/draft-picksread
GET/leagues/{league_id}/matchup?week=read
GET/leagues/{league_id}/matchups?week=read
GET/leagues/{league_id}/scheduleread
GET/leagues/{league_id}/money-outlookintelligence:read
GET/leagues/{league_id}/market-pulseintelligence:read
GET/leagues/{league_id}/trade-triggers?relevant_to_roster=read
GET/leagues/{league_id}/free-agents?limit=read
GET/leagues/{league_id}/draftread
GET/drafts/{draft_id}read
GET/export?league_id=&include_history=export:read

Writes

Every write is idempotent with an optional key, rate-limited per token, and logged to an audit trail.

MethodPathBodyScope
PATCH/leagues/{league_id}/lineup{player_a, slot_a, player_b, slot_b}write:lineup
POST/leagues/{league_id}/roster/transactions{add?, drop?, week?}write:waiver
POST/leagues/{league_id}/trades{to_roster_id, assets, week?}write:trade
PATCH/trades/{tx_id}{action: accept|reject|cancel}write:trade
POST/leagues/{league_id}/trade-triggers{criteria_kind, criteria, offered?, expires_at?}write:trade_trigger
POST/trade-triggers/{trigger_id}/offers{assets}write:trade_trigger
POST/drafts/{draft_id}/picks{player_id}write:draft

Notes on the mapping

  • Paths above are a readable shape, not the wire protocol. Every call actually goes through one of two gateway functions, so the whole surface shares one auth path and one audit log instead of a hundred bespoke ones.
  • Never on the allowlist: money movement, commissioner and governance actions, league settings, and anything touching another manager's team. A token can act as you, never as your league.
  • Trade Triggers auto-execute. An offer that meets a trigger's standing terms fills the trade immediately and irreversibly, evaluated the moment it's submitted.
Token minting and full request/response docs ship with API access.