Authentication Secmaster Stats Kalshi Kraken Futures Polymarket Fees Data Endpoints Errors Rate Limits Authentication
All API requests require an API key. Pass it via the X-API-Key header
or the Authorization: Bearer header.
Scopes Scope Access datasets:read Parquet data, trades, prices, volume secmaster:read Events, markets, pairs, conditions, fees
Getting an API Key API keys are provisioned on request. Contact us via GitHub Issues or email to request access.
Example curl -H "X-API-Key: $API_KEY" https://api.varshtat.com/v1/secmaster/stats Secmaster Stats GET /v1/secmaster/stats
Returns aggregate counts and status breakdowns for events, markets, pairs, and conditions.
No parameters required.
Example curl -H "X-API-Key: $API_KEY" https://api.varshtat.com/v1/secmaster/stats Response {
"events": { "total": 1250, "active": 340, "closed": 910 },
"markets": { "total": 8500, "active": 1200, "closed": 7300 },
"pairs": { "total": 45, "active": 42, "halted": 3 },
"conditions": { "total": 3200, "active": 890, "resolved": 2310 }
} Kalshi GET /v1/events
Query Parameters Parameter Type Required Description category string No Filter by category series string No Filter by series ticker status string No active, closed, or settled as_of string No ISO date for point-in-time lookup limit integer No Maximum number of results
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/events?status=active&limit=50" Response {
"events": [
{
"ticker": "KXBTCD-26FEB28",
"title": "Bitcoin above $105,249.99 on Feb 28?",
"category": "Crypto",
"series": "KXBTCD",
"status": "active",
"strikeDate": "2026-02-28T17:00:00Z",
"marketCount": 12
}
],
"count": 1
} GET /v1/markets
Query Parameters Parameter Type Required Description category string No Filter by category series string No Filter by series ticker status string No active, closed, or settled event string No Parent event ticker close_within_hours integer No Markets closing within N hours closing_before string No ISO datetime upper bound for close time closing_after string No ISO datetime lower bound for close time as_of string No ISO date for point-in-time lookup games_only boolean No Return only game-type markets limit integer No Maximum number of results
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/markets?status=active&close_within_hours=24&limit=100" Response {
"markets": [
{
"ticker": "KXBTCD-26FEB28-T105249.99",
"title": "BTC above $105,249.99?",
"status": "active",
"closeTime": "2026-02-28T17:00:00Z",
"event": "KXBTCD-26FEB28",
"series": "KXBTCD",
"volume": 4523,
"openInterest": 1250
}
],
"count": 1
} GET /v1/series
Query Parameters Parameter Type Required Description category string No Filter by category tag string No Filter by tag games_only boolean No Return only game-type series limit integer No Maximum number of results
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/series?category=crypto&limit=20" Response {
"series": [
{
"ticker": "KXBTCD",
"title": "Bitcoin Daily Close",
"category": "Crypto",
"tags": ["crypto", "bitcoin"],
"frequency": "daily",
"activeEventCount": 7
}
],
"count": 1
} Kraken Futures GET /v1/pairs
Query Parameters Parameter Type Required Description exchange string No Filter by exchange market_type string No perpetual or fixed_maturity base string No Base currency (e.g. BTC) quote string No Quote currency (e.g. USD) status string No active, halted, or delisted limit integer No Maximum number of results
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/pairs?market_type=perpetual&status=active" Response {
"pairs": [
{
"pairId": "PF_XBTUSD",
"symbol": "PF_XBTUSD",
"base": "BTC",
"quote": "USD",
"marketType": "perpetual",
"status": "active",
"tickSize": 0.5,
"contractSize": 1
}
],
"count": 1
} GET /v1/pairs/:pairId/snapshots
Query Parameters Parameter Type Required Description from string No Start date in YYYY-MM-DD format to string No End date in YYYY-MM-DD format limit integer No Maximum number of results
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/pairs/PF_XBTUSD/snapshots?from=2026-02-15&to=2026-02-22" Response {
"snapshots": [
{
"pairId": "PF_XBTUSD",
"timestamp": "2026-02-22T14:00:00Z",
"bid": 97250.5,
"ask": 97251.0,
"last": 97250.75,
"fundingRate": 0.0001
}
],
"count": 1
} Polymarket GET /v1/conditions
Query Parameters Parameter Type Required Description category string No Filter by category status string No active or resolved limit integer No Maximum number of results
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/conditions?status=active&limit=50" Response {
"conditions": [
{
"conditionId": "0x1234...abcd",
"question": "Will BTC exceed $100k by March 2026?",
"status": "active",
"endDate": "2026-03-31T23:59:59Z",
"tokenCount": 2,
"category": "Crypto"
}
],
"count": 1
} GET /v1/polymarket/tokens
Query Parameters Parameter Type Required Description category string Yes Comma-separated list of categories status string No Default: active minVolume number No Minimum volume threshold q string No Keyword search, comma-separated
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/polymarket/tokens?category=crypto&minVolume=10000" Response {
"tokens": [
{
"tokenId": "0xabcd...1234",
"conditionId": "0x1234...abcd",
"outcome": "Yes",
"price": 0.65,
"volume": 125000.50,
"status": "active"
}
],
"count": 1
} Fees GET /v1/fees
Lists current fee schedules for all series.
Query Parameters Parameter Type Required Description limit integer No Maximum number of results
Example curl -H "X-API-Key: $API_KEY" https://api.varshtat.com/v1/fees Response {
"fees": [
{
"series": "KXBTCD",
"takerFee": 0.07,
"makerFee": 0.0,
"effectiveDate": "2026-01-01T00:00:00Z"
}
],
"count": 1
} GET /v1/fees/:series
Returns the fee schedule for a specific series.
Query Parameters Parameter Type Required Description as_of string No ISO date for historical fee lookup
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/fees/KXBTCD?as_of=2026-01-15" Data Endpoints
Historical trade data, price snapshots, event summaries, and volume aggregates are available via
the /v1/data/* endpoints. For Parquet file downloads, see the Download Data guide.
GET /v1/data/trades
Returns trade summaries grouped by ticker/instrument. Counts trades, sums volume, and provides price range (min/max/avg).
Query Parameters Parameter Type Required Description feed string Yes kalshi, kraken-futures, or polymarket date string No Date in YYYY-MM-DD format (defaults to today) limit integer No Maximum tickers to return (default 20)
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/data/trades?feed=kalshi&date=2026-02-22&limit=10" GET /v1/data/prices
Returns the latest price snapshot per instrument from ticker/bid-ask data.
Query Parameters Parameter Type Required Description feed string Yes kalshi, kraken-futures, or polymarket date string No Date in YYYY-MM-DD format (defaults to today) hour string No Hour in HHMM format (e.g. 1400). Defaults to most recent.
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/data/prices?feed=kraken-futures&date=2026-02-22&hour=1400" GET /v1/data/events
Returns event-level trade summaries, grouping markets by parent event. Includes event name, close time, market count, total volume, and top markets.
Query Parameters Parameter Type Required Description feed string Yes kalshi, kraken-futures, or polymarket date string No Date in YYYY-MM-DD format (defaults to today) limit integer No Maximum events to return (default 20)
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/data/events?feed=polymarket&date=2026-02-22&limit=10" GET /v1/data/volume
Returns per-feed trade counts, total volume, active ticker count, and top tickers. Volume units differ by feed (contracts for Kalshi, USD for Polymarket, base currency for Kraken).
Query Parameters Parameter Type Required Description feed string No Filter to a single feed. Omit to get all feeds. date string No Date in YYYY-MM-DD format (defaults to today)
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/data/volume?date=2026-02-22" GET /v1/data/freshness
Checks data freshness for feeds. Reports the newest file age and flags feeds that are stale (over 7 hours old).
Query Parameters Parameter Type Required Description feed string No Check a specific feed. Omit to check all feeds.
Example curl -H "X-API-Key: $API_KEY" \
"https://api.varshtat.com/v1/data/freshness?feed=kalshi" Error Responses All error responses return JSON with an error field.
Status Meaning 400 Invalid parameters — check query string values 401 Missing or invalid API key 403 Insufficient scope, feed restriction, or date range violation 404 Resource not found (invalid ticker, pair ID, etc.) 429 Rate limit exceeded — retry after X-RateLimit-Reset 503 Backend unavailable — upstream service error
Example {
"error": "Insufficient scope: requires secmaster:read"
} Rate Limits
API keys have per-key rate limits. The default tier allows 60 requests per minute.
Rate limit headers (X-RateLimit-Remaining, X-RateLimit-Reset)
are included in responses.
List endpoints support a limit parameter but no offset or cursor-based pagination.
Results are returned in server-defined order.