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.