Developer Documentation
Oddpool API
Access prediction market data programmatically. All endpoints require authentication via API key and an active Pro subscription.
Overview
The Oddpool API provides programmatic access to whale tracking data from prediction markets including Polymarket and Kalshi.
All API requests should be made to:
Authentication
Authenticate requests by including your API key in the X-API-Key header. Generate API keys from your account settings.
API access requires an active Pro subscription. Requests with invalid or expired credentials will receive a 401 or 403 response.
Security: Keep your API key confidential. Do not expose it in client-side code or public repositories.
Rate Limits
API requests are rate limited to ensure platform stability.
| Limit | Rate |
|---|---|
| Burst | 1 request/second |
| Sustained | 100 requests/minute |
Error Handling
The API uses standard HTTP response codes to indicate success or failure.
| Code | Description |
|---|---|
| 200 | Success |
| 400 | Bad request — Invalid parameters |
| 401 | Unauthorized — Invalid API key |
| 403 | Forbidden — No active subscription |
| 404 | Not found — Resource does not exist |
| 429 | Rate limit exceeded |
| 500 | Server error |
Error response format:
{"detail": "Error message"}Whale Tracking
Programmatic access to Whale Tracker. Build trading signals, power automated agents, or integrate whale alerts into your own workflows however you want to use them.
/whales/user/eventsList all events you are currently tracking.
Example
curl -H "X-API-Key: your_api_key" \
https://api.oddpool.com/whales/user/eventsResponse
{
"tracked_events": [
{
"id": 65,
"event_id": 65,
"event_ticker": "KXBUNDESLIGAGAME-26JAN14KOEBMU",
"event_title": "1. FC Cologne vs Bayern Munich",
"platform": "kalshi",
"whale_threshold_usd": 1000,
"notify_on_whale_trade": true,
"whale_count_24h": 12
}
]
}/whales/user/feedGet whale trades for all your tracked events.
Parameters
| Name | Type | Description |
|---|---|---|
limit | integer | Max results (1-500)(default: 50) |
offset | integer | Pagination offset(default: 0) |
start_date | datetime | Filter by start date (ISO 8601) |
end_date | datetime | Filter by end date (ISO 8601) |
min_trade_size | float | Minimum trade size in USD |
platform | string | Filter by platform: kalshi, polymarket |
event_id | integer | Filter to specific event |
Example
curl -H "X-API-Key: your_api_key" \
"https://api.oddpool.com/whales/user/feed?limit=10&platform=kalshi"Response
{
"trades": [
{
"id": 12345,
"platform": "kalshi",
"event_title": "1. FC Cologne vs Bayern Munich",
"market_title": "Winner: Bayern Munich",
"market_ticker": "KXBUNDESLIGAGAME-26JAN14KOEBMU-BMU",
"outcome": "Bayern Munich",
"timestamp": "2026-01-14T21:24:25Z",
"taker_side": "yes",
"trade_size_usd": 15000.00,
"price": 0.78,
"count": 1
}
],
"stats": {
"total_volume_24h": 185195.0,
"total_trades_24h": 151,
"avg_trade_size": 1226.46
},
"pagination": {"limit": 10, "offset": 0, "total": 151}
}/whales/user/statsGet aggregated statistics for all tracked events.
Parameters
| Name | Type | Description |
|---|---|---|
period | string | Time period: 24h, 7d, all(default: 24h) |
Example
curl -H "X-API-Key: your_api_key" \
"https://api.oddpool.com/whales/user/stats?period=7d"Response
{
"period": "7d",
"events": [
{
"event_id": 65,
"event_ticker": "KXBUNDESLIGAGAME-26JAN14KOEBMU",
"event_title": "1. FC Cologne vs Bayern Munich",
"platform": "kalshi",
"stats": {
"trade_count": 151,
"total_volume": 185195.0,
"avg_trade_size": 1226.46,
"market_count": 3
},
"markets": [...]
}
]
}/whales/user/event/{event_id}Get whale trades for a specific tracked event.
Parameters
| Name | Type | Description |
|---|---|---|
event_id* | integer | Event ID (path) |
limit | integer | Max results (1-500)(default: 50) |
offset | integer | Pagination offset(default: 0) |
min_trade_size | float | Minimum trade size in USD |
Example
curl -H "X-API-Key: your_api_key" \
"https://api.oddpool.com/whales/user/event/65?limit=20"/whales/user/event/{event_id}/statsGet statistics for a specific tracked event.
Parameters
| Name | Type | Description |
|---|---|---|
event_id* | integer | Event ID (path) |
period | string | Time period: 24h, 7d, all(default: 24h) |
Example
curl -H "X-API-Key: your_api_key" \
"https://api.oddpool.com/whales/user/event/65/stats?period=all"Response
{
"event_id": 65,
"event_ticker": "KXBUNDESLIGAGAME-26JAN14KOEBMU",
"event_title": "1. FC Cologne vs Bayern Munich",
"platform": "kalshi",
"period": "all",
"stats": {
"trade_count": 151,
"total_volume": 185195.0,
"avg_trade_size": 1226.46,
"market_count": 3,
"first_trade_at": "2026-01-14T19:51:59Z",
"last_trade_at": "2026-01-14T21:24:25Z"
},
"markets": [
{
"market_ticker": "KXBUNDESLIGAGAME-26JAN14KOEBMU-BMU",
"platform": "kalshi",
"trade_count": 124,
"total_volume": 156445.15,
"avg_trade_size": 1261.65
}
]
}/whales/user/marketsList all markets for your tracked events.
Example
curl -H "X-API-Key: your_api_key" \
https://api.oddpool.com/whales/user/marketsResponse
{
"markets": [
{
"market_id": 370,
"market_ticker": "KXBUNDESLIGAGAME-26JAN14KOEBMU-BMU",
"market_title": "Winner: Bayern Munich",
"event_id": 65,
"event_title": "1. FC Cologne vs Bayern Munich",
"platform": "kalshi",
"whale_count_24h": 45
}
],
"total_markets": 3
}/whales/user/market/{market_id}/statsGet statistics for a specific market.
Parameters
| Name | Type | Description |
|---|---|---|
market_id* | integer | Market ID (path) |
period | string | Time period: 24h, 7d, all(default: 24h) |
Example
curl -H "X-API-Key: your_api_key" \
"https://api.oddpool.com/whales/user/market/370/stats?period=all"Response
{
"market_id": 370,
"market_ticker": "KXBUNDESLIGAGAME-26JAN14KOEBMU-BMU",
"market_title": "Winner: Bayern Munich",
"platform": "kalshi",
"period": "all",
"stats": {
"period": "all",
"trade_count": 124,
"total_volume": 156445.15,
"avg_trade_size": 1261.65,
"first_trade_at": "2026-01-14T19:51:59Z",
"last_trade_at": "2026-01-14T21:24:25Z"
}
}/whales/user/market/{market_id}/tradesGet whale trades for a specific market.
Parameters
| Name | Type | Description |
|---|---|---|
market_id* | integer | Market ID (path) |
limit | integer | Max results (1-500)(default: 50) |
offset | integer | Pagination offset(default: 0) |
min_trade_size | float | Minimum trade size in USD |
Example
curl -H "X-API-Key: your_api_key" \
"https://api.oddpool.com/whales/user/market/370/trades?limit=10"Support
Questions about the API? Contact us at avi@oddpool.com