Skip to main content
Get your free API key at dashboard.predexon.com. Upgrade to Dev, Pro, or Enterprise for higher rate limits and more requests.

Getting Started

Predexon API requires an API key for all requests. Signing up is free at dashboard.predexon.com.
curl -H "x-api-key: YOUR_API_KEY" \
  "https://api.predexon.com/v2/polymarket/markets?limit=10"

Rate Limits

TierRate LimitMonthly RequestsWebSocketPrice
Free1 req/sec1,000$0/month
Dev20 req/sec1,000,00010 subs × 10 items$49/month
Pro100 req/sec5,000,000100 subs × 500 items + 2 wildcards/channel$249/month
EnterpriseCustomUnlimitedCustom$499+/month
Free tier excludes smart wallet, market matching endpoints, and WebSocket access. Dev and Pro tiers include overage pricing (5/100Kand5/100K and 2.50/100K respectively).
Free historical data. All core market data, historical trades, orderbooks, and pricing endpoints are free and unlimited on all plans — they do not count toward your monthly usage limits. See the API Reference for the full list.
See full plan comparison at predexon.com/pricing.
Exceeding rate limits will result in 429 Too Many Requests responses. Implement exponential backoff in your applications.

Best Practices

Caching

Many endpoints return data that doesn’t change frequently. Implement caching to reduce API calls:
import requests
import time

BASE_URL = "https://api.predexon.com"

# Simple TTL cache
cache = {}
CACHE_TTL = 300  # 5 minutes

def get_market(condition_id: str, api_key: str) -> dict:
    """Fetch market with 5-minute cache."""
    cache_key = f"market:{condition_id}"
    now = time.time()

    if cache_key in cache and cache[cache_key]["expires"] > now:
        return cache[cache_key]["data"]

    response = requests.get(
        f"{BASE_URL}/v2/polymarket/markets",
        params={"condition_id": condition_id},
        headers={"x-api-key": api_key}
    )
    data = response.json()
    cache[cache_key] = {"data": data, "expires": now + CACHE_TTL}
    return data

Retry Logic

Implement retries with exponential backoff for transient errors:
import time
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

session = requests.Session()
retries = Retry(
    total=3,
    backoff_factor=0.5,
    status_forcelist=[500, 502, 503, 504]
)
session.mount("https://", HTTPAdapter(max_retries=retries))

Connection Pooling

Reuse connections for better performance:
BASE_URL = "https://api.predexon.com"
API_KEY = "your_api_key"

# Create a session once with auth header
session = requests.Session()
session.headers.update({"x-api-key": API_KEY})

# Use it for all requests
response = session.get(f"{BASE_URL}/v2/polymarket/markets")

CORS

The API supports CORS for browser-based applications:
const API_KEY = "your_api_key";

fetch("https://api.predexon.com/v2/polymarket/markets", {
  headers: { "x-api-key": API_KEY }
})
  .then(res => res.json())
  .then(data => console.log(data));

Health Check

Use the health endpoint to verify API availability:
curl "https://api.predexon.com/health"
# Returns: {"status": "healthy"}