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:

https://api.oddpool.com

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.

LimitRate
Burst1 request/second
Sustained100 requests/minute

Error Handling

The API uses standard HTTP response codes to indicate success or failure.

CodeDescription
200Success
400Bad request — Invalid parameters
401Unauthorized — Invalid API key
403Forbidden — No active subscription
404Not found — Resource does not exist
429Rate limit exceeded
500Server error

Error response format:

json
{"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.

GET/whales/user/events

List all events you are currently tracking.

Example

curl -H "X-API-Key: your_api_key" \
  https://api.oddpool.com/whales/user/events

Response

json
{
  "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
    }
  ]
}
GET/whales/user/feed

Get whale trades for all your tracked events.

Parameters

NameTypeDescription
limitintegerMax results (1-500)(default: 50)
offsetintegerPagination offset(default: 0)
start_datedatetimeFilter by start date (ISO 8601)
end_datedatetimeFilter by end date (ISO 8601)
min_trade_sizefloatMinimum trade size in USD
platformstringFilter by platform: kalshi, polymarket
event_idintegerFilter to specific event

Example

curl -H "X-API-Key: your_api_key" \
  "https://api.oddpool.com/whales/user/feed?limit=10&platform=kalshi"

Response

json
{
  "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}
}
GET/whales/user/stats

Get aggregated statistics for all tracked events.

Parameters

NameTypeDescription
periodstringTime 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

json
{
  "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": [...]
    }
  ]
}
GET/whales/user/event/{event_id}

Get whale trades for a specific tracked event.

Parameters

NameTypeDescription
event_id*integerEvent ID (path)
limitintegerMax results (1-500)(default: 50)
offsetintegerPagination offset(default: 0)
min_trade_sizefloatMinimum trade size in USD

Example

curl -H "X-API-Key: your_api_key" \
  "https://api.oddpool.com/whales/user/event/65?limit=20"
GET/whales/user/event/{event_id}/stats

Get statistics for a specific tracked event.

Parameters

NameTypeDescription
event_id*integerEvent ID (path)
periodstringTime 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

json
{
  "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
    }
  ]
}
GET/whales/user/markets

List all markets for your tracked events.

Example

curl -H "X-API-Key: your_api_key" \
  https://api.oddpool.com/whales/user/markets

Response

json
{
  "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
}
GET/whales/user/market/{market_id}/stats

Get statistics for a specific market.

Parameters

NameTypeDescription
market_id*integerMarket ID (path)
periodstringTime 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

json
{
  "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"
  }
}
GET/whales/user/market/{market_id}/trades

Get whale trades for a specific market.

Parameters

NameTypeDescription
market_id*integerMarket ID (path)
limitintegerMax results (1-500)(default: 50)
offsetintegerPagination offset(default: 0)
min_trade_sizefloatMinimum 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