POST/api/v1/requests

Saved requests

A saved selection is what Downloads calls a download. Estimate it first, save it, then list its files or download a script.

Auth required. The body matches estimate, plus an optional name (max 120 characters).

Save

POST /api/v1/requests
curl "https://kalshieye.com/api/v1/requests" \
  -X POST \
  -H "Authorization: Bearer $KALSHIEYE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "BTC trades",
    "datasets": ["trades"],
    "start_date": "2026-10-12",
    "end_date": "2026-10-12",
    "series": ["KXBTC15M"]
  }'

The response is id, request, summary (dates, files, rows, bytes), and the full estimate. A dataset or history window outside the plan is 402. Each call saves a new request.

List and fetch

Your requests
GET /api/v1/requests?limit=20
GET /api/v1/requests/{request_id}

List returns { "count", "requests" }, newest first. Each row is id, request, summary, and created_at. Another user's id is 404.

Files for a request

GET /api/v1/requests/{request_id}/files
curl "https://kalshieye.com/api/v1/requests/$REQUEST_ID/files?limit=500" \
  -H "Authorization: Bearer $KALSHIEYE_API_KEY"

Same page shape as list files, plus request_id. cursor, limit (max 1,000), and sign=true work the same way. Signing charges the monthly allowance once per new file.