Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.
/api/v1/export/events/{ext}GET
Export a filtered list of events as a CSV or TSV file download.
Authorization
bearerAuth *Bearer <token>
Session token from the app, or an API key (the ak_ prefix), sent as a Bearer token or an ?api_key= query parameter.. Token in: header
Query Parameters
category?string
Filter by category
region?string
Filter by region: a two-letter US state code for a state-level race, or US for a federal one.
search?string
Case-insensitive word match over an event's member markets, name, and ID.
venue?string
Filter by venue: a comma-separated list of platforms (kalshi, polymarket, gemini). Keeps events with at least one market on a listed venue. platform is an accepted alias.
platform?string
Alias for venue.
expires_before?string
ISO date/datetime inclusive upper bound on a market's end_date (a bare date snaps to end-of-day).
expires_after?string
ISO date/datetime inclusive lower bound on a market's end_date (a bare date snaps to start-of-day).
created_since?string
Filters events first listed on this platform at or after this ISO date or datetime.
created_until?string
Filters events first listed on this platform at or before this ISO date or datetime.
start?string (date-time)
Deprecated.
end?string (date-time)
Deprecated.
sort?"created" | "election_date" | "title" | "volume" | "open_interest" | "market_count"
Sort key.
Default: "created"
sort_dir?"asc" | "desc"
Sort direction, asc or desc (default desc).
Default: "desc"
Response
200 · CSV/TSV file of events (up to 10,000 rows)
CSV/TSV file of events (up to 10,000 rows)
400 · Invalid format (ext must be csv or tsv)
error?string
Stable, machine-readable code identifying the failure; branch on this rather than on message. One of bad_request, unauthorized, forbidden, not_found, conflict, service_unavailable, upstream_error, service_error, or internal_error.
message?string
Human-readable explanation, safe to show to a user. For client errors it names the specific problem; for server-side failures it is a generic notice and the underlying detail is deliberately withheld.
403 · The organization has no paid plan, so the realtime read scopes are refused. Distinct from a 429, which means a plan's budget ran out: nothing here resets on a timer, and the request succeeds only once the organization holds a plan.
error *string
Human-readable reason the request was refused.
status *integer
HTTP status code, repeated in the body.
upgrade_url?string (uri)
Page listing the plans and their request allowances, for buying access. Absent when no plan is available for purchase.
429 · The organization's minute or UTC-day request budget is exhausted, or the organization has reached its cap on requests running at the same time (`limit: "concurrency"`). Wait `Retry-After` seconds before retrying; for a concurrency 429, reduce parallelism.
error *"rate_limited"
Always rate_limited. Branch on this to detect a throttled request.
limit *"rpm" | "daily" | "concurrency"
Which limit was hit: rpm for the per-minute cap, daily for the daily one, or concurrency for the cap on requests running at the same time.
message *string
Human-readable explanation naming the limit that was exceeded.
upgrade_url?string (uri)
Page listing the plans and their request allowances, for buying a larger budget. Absent when no plan is available for purchase.
Request example
curl -X GET "https://api.adjacent.markets/api/v1/export/events/csv" \ -H "Authorization: Bearer <token>"
Response example
{ "error": "bad_request", "message": "Invalid format: xml" }