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
| Tier | Rate Limit | Monthly Requests | WebSocket | Price |
|---|
| Free | 1 req/sec | 1,000 | — | $0/month |
| Dev | 20 req/sec | 1,000,000 | 10 subs × 10 items | $49/month |
| Pro | 100 req/sec | 5,000,000 | 100 subs × 500 items + 2 wildcards/channel | $249/month |
| Enterprise | Custom | Unlimited | Custom | $499+/month |
Free tier excludes smart wallet, market matching endpoints, and WebSocket access. Dev and Pro tiers include overage pricing (5/100Kand2.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"}