curl cookbook

Every ParlayAPI endpoint as a single copyable curl one-liner. Set $PARLAY_KEY in your shell first: export PARLAY_KEY=pak_live_.... Endpoints that don't require auth are flagged with free / no-auth.

Jump: Status Metadata Odds Try (free) Scores Historical EV / Arbs / Middles CLV SGP In-play WebSocket

Status

Public service status (free, no-auth)

curl -s https://parlay-api.com/v1/status | jq

Status history

curl -s https://parlay-api.com/v1/status/history?days=7 | jq

Metadata (free, no-auth)

Platform identity + uptime + endpoint count

curl -s https://parlay-api.com/v1/meta/api-info | jq

Per-book source quality (observed latency, freshness, SLA tier)

curl -s 'https://parlay-api.com/v1/meta/source-quality?minutes=10&limit=40' | jq

Parser coverage matrix (which book × sport × market combinations are live)

curl -s https://parlay-api.com/v1/meta/parser-coverage | jq

List of supported sports

curl -s https://parlay-api.com/v1/sports | jq

Odds

Pre-game odds (h2h + spreads + totals) for MLB

curl -s 'https://parlay-api.com/v1/sports/baseball_mlb/odds?regions=us&markets=h2h,spreads,totals' \
  -H "X-API-Key: $PARLAY_KEY" | jq

Live in-play odds only

curl -s 'https://parlay-api.com/v1/sports/basketball_nba/odds?regions=us&markets=h2h&live=true' \
  -H "X-API-Key: $PARLAY_KEY" | jq

Specific books only

curl -s 'https://parlay-api.com/v1/sports/americanfootball_nfl/odds?regions=us&markets=h2h&bookmakers=draftkings,fanduel,pinnacle' \
  -H "X-API-Key: $PARLAY_KEY" | jq

Player props

curl -s 'https://parlay-api.com/v1/sports/baseball_mlb/odds?regions=us&markets=batter_home_runs,pitcher_strikeouts' \
  -H "X-API-Key: $PARLAY_KEY" | jq

Free try endpoints (no-auth, 60 req/h per IP)

Free pre-game odds preview (top 5 events)

curl -s https://parlay-api.com/v1/try/baseball_mlb/odds | jq

Free cross-book arbitrage preview

curl -s https://parlay-api.com/v1/try/baseball_mlb/arbitrage | jq '.opportunities[0]'

Free positive-EV preview (Pinnacle-anchored)

curl -s https://parlay-api.com/v1/try/baseball_mlb/ev | jq '.opportunities[0]'

Free totals middles preview

curl -s https://parlay-api.com/v1/try/americanfootball_nfl/middles | jq '.opportunities[0]'

Scores

Live scores

curl -s 'https://parlay-api.com/v1/sports/baseball_mlb/scores?daysFrom=1' \
  -H "X-API-Key: $PARLAY_KEY" | jq

Historical

Closing-line snapshot CSV (free for signed-in users, cached 6h)

curl -sL 'https://parlay-api.com/v1/historical/closing-lines.csv?sport=baseball_mlb' \
  -H "X-API-Key: $PARLAY_KEY" -o closing-lines.csv

Per-market timestamped history

curl -s 'https://parlay-api.com/v1/historical/odds?sport=baseball_mlb&date=2026-05-18' \
  -H "X-API-Key: $PARLAY_KEY" | jq

Full EV / Arbs / Middles (authenticated, no result cap)

Full +EV scan (all markets, configurable sharp anchor + min edge)

curl -s 'https://parlay-api.com/v1/sports/baseball_mlb/ev?sharpBook=pinnacle&minEdge=2.0&markets=h2h,spreads,totals&limit=50' \
  -H "X-API-Key: $PARLAY_KEY" | jq

Full cross-book arbitrage scan

curl -s 'https://parlay-api.com/v1/sports/baseball_mlb/arbitrage?markets=h2h,spreads,totals' \
  -H "X-API-Key: $PARLAY_KEY" | jq

In-play arbitrage feed

curl -s 'https://parlay-api.com/v1/inplay/arbs?sport=baseball_mlb' \
  -H "X-API-Key: $PARLAY_KEY" | jq

CLV grading

Grade a batch of bets (idempotency-key recommended for long runs)

curl -s -X POST 'https://parlay-api.com/v1/clv/history' \
  -H "X-API-Key: $PARLAY_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen | tr -d -)" \
  -d '{"bets":[{"event_id":"...","market":"h2h","selection":"Yankees","price":-145,"placed_at":"2026-05-18T17:30:00Z"}],"sharp_book":"pinnacle"}' | jq

SGP pricing

Price a same-game parlay

curl -s -X POST 'https://parlay-api.com/v1/sgp/price' \
  -H "X-API-Key: $PARLAY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"legs":[{"event_id":"...","market":"h2h","selection":"Yankees"},{"event_id":"...","market":"totals","selection":"Over 8.5"}]}' | jq

In-play / live

Live event feed (snapshot)

curl -s 'https://parlay-api.com/v1/inplay/odds?sport=baseball_mlb' \
  -H "X-API-Key: $PARLAY_KEY" | jq

WebSocket / SSE

WebSocket subscribe (scale tier and above)

curl can't open WebSockets but websocat (or any WS client) works:

websocat 'wss://parlay-api.com/v1/ws?key=$PARLAY_KEY&sport=baseball_mlb&markets=h2h'

SSE stream (fallback for HTTP-only clients)

curl -N 'https://parlay-api.com/v1/sse/odds?sport=baseball_mlb&markets=h2h' \
  -H "X-API-Key: $PARLAY_KEY"

Error handling pattern

Surface the X-Request-ID header and the structured error envelope when reporting issues:

curl -sD - 'https://parlay-api.com/v1/sports/bogus_sport/odds' \
  -H "X-API-Key: $PARLAY_KEY" 2>&1 | head -20

Rate-limit handling

429 responses include Retry-After. Honor it. The reference clients at examples/ do this for you in seven languages.

This cookbook lists the most common one-liners. For full request/response shapes see /docs (Swagger UI), /redoc (alternative renderer), or /collections/postman.json (Postman 2.1 import).