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.
curl -s https://parlay-api.com/v1/status | jq
curl -s https://parlay-api.com/v1/status/history?days=7 | jq
curl -s https://parlay-api.com/v1/meta/api-info | jq
curl -s 'https://parlay-api.com/v1/meta/source-quality?minutes=10&limit=40' | jq
curl -s https://parlay-api.com/v1/meta/parser-coverage | jq
curl -s https://parlay-api.com/v1/sports | jq
curl -s 'https://parlay-api.com/v1/sports/baseball_mlb/odds?regions=us&markets=h2h,spreads,totals' \
-H "X-API-Key: $PARLAY_KEY" | jq
curl -s 'https://parlay-api.com/v1/sports/basketball_nba/odds?regions=us&markets=h2h&live=true' \
-H "X-API-Key: $PARLAY_KEY" | jq
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
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
curl -s https://parlay-api.com/v1/try/baseball_mlb/odds | jq
curl -s https://parlay-api.com/v1/try/baseball_mlb/arbitrage | jq '.opportunities[0]'
curl -s https://parlay-api.com/v1/try/baseball_mlb/ev | jq '.opportunities[0]'
curl -s https://parlay-api.com/v1/try/americanfootball_nfl/middles | jq '.opportunities[0]'
curl -s 'https://parlay-api.com/v1/sports/baseball_mlb/scores?daysFrom=1' \
-H "X-API-Key: $PARLAY_KEY" | jq
curl -sL 'https://parlay-api.com/v1/historical/closing-lines.csv?sport=baseball_mlb' \
-H "X-API-Key: $PARLAY_KEY" -o closing-lines.csv
curl -s 'https://parlay-api.com/v1/historical/odds?sport=baseball_mlb&date=2026-05-18' \
-H "X-API-Key: $PARLAY_KEY" | jq
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
curl -s 'https://parlay-api.com/v1/sports/baseball_mlb/arbitrage?markets=h2h,spreads,totals' \
-H "X-API-Key: $PARLAY_KEY" | jq
curl -s 'https://parlay-api.com/v1/inplay/arbs?sport=baseball_mlb' \
-H "X-API-Key: $PARLAY_KEY" | jq
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
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
curl -s 'https://parlay-api.com/v1/inplay/odds?sport=baseball_mlb' \
-H "X-API-Key: $PARLAY_KEY" | jq
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'
curl -N 'https://parlay-api.com/v1/sse/odds?sport=baseball_mlb&markets=h2h' \
-H "X-API-Key: $PARLAY_KEY"
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
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).