Getting Started

Polychads Alerts API

Real-time Polymarket insider trading alerts delivered to your application. Detect fresh wallets, accumulators, and coordinated clusters before the market moves.

โšก

Real-Time Alerts

Sub-second delivery via WebSocket. Know when insiders move before anyone else.

๐Ÿ”

Signal Scoring

Every alert scored 0-100 for insider likelihood. Focus on what matters.

๐Ÿ“Š

Rich Data

Wallet history, accumulation patterns, entry prices, market context, and more.

๐Ÿ”—

Easy Integration

REST API, WebSocket, and Webhooks. JSON responses. Any language, any framework.

๐Ÿ’ก
Base URL https://polychadsbot.xyz/api/v1
Getting Started

Authentication

All API requests require an API key passed in the Authorization header using Bearer token format.

Header
Authorization: Bearer YOUR_API_KEY
cURL Example
curl -H "Authorization: Bearer pc_your_key_here" \
  https://polychadsbot.xyz/api/v1/me
โš ๏ธ
Keep your key safe. API keys cannot be retrieved after creation. If lost, contact us for a replacement.
Getting Started

Pricing & Tiers

Choose the tier that fits your needs. All tiers include full REST API access.

Free
$0/mo
  • REST API access
  • 60 requests/min
  • 20 results per page
  • 5-minute data delay
  • No WebSocket
  • No Webhooks
Enterprise
Contact us
  • REST API access
  • Unlimited requests
  • 100 results per page
  • Real-time data
  • WebSocket stream
  • Webhook delivery
Getting Started

Quick Start

Get your first alert in 30 seconds.

1

Get your API key

Contact us on Telegram to receive your key.

2

Test your key

cURL
curl -H "Authorization: Bearer YOUR_KEY" \
  https://polychadsbot.xyz/api/v1/me
3

Fetch latest alerts

cURL
curl -H "Authorization: Bearer YOUR_KEY" \
  https://polychadsbot.xyz/api/v1/alerts/latest?limit=5
4

Connect WebSocket (Pro+)

JavaScript
const ws = new WebSocket(
  "wss://polychadsbot.xyz/ws/alerts?api_key=YOUR_KEY"
);
ws.onmessage = (e) => {
  const msg = JSON.parse(e.data);
  if (msg.type === "alert") {
    console.log("๐Ÿ”” New alert:", msg.data);
  }
};
REST API

GET /alerts/latest

Get the most recent alerts. Returns an array of alert objects, newest first.

Parameters

limit
integer
Number of alerts to return (1-50, default: 10)

Request

cURL
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://polychadsbot.xyz/api/v1/alerts/latest?limit=2"

Response 200

JSON
[
  {
    "id": 2220,
    "alert_type": "fresh_accumulator",
    "wallet_address": "0x9B3b...6BC3",
    "event_title": "US strikes Iran by Feb 28?",
    "side": "BUY",
    "outcome": "Yes",
    "entry_price": 0.19,
    "usdc_value": 1900.0,
    "signal_score": 80,
    "category": "world",
    "created_at": "2026-02-27 11:35:26",
    "details": { ... }
  }
]
REST API

GET /alerts

Paginated alert history with filtering. Returns alerts wrapped in a pagination object.

Parameters

page
integer
Page number (default: 1)
page_size
integer
Results per page (max varies by tier)
category
string
Filter by category: crypto, politics, world, tech, finance, pop_culture, other
side
string
Filter by trade side: BUY or SELL
min_usdc
float
Minimum trade size in USDC
min_signal
integer
Minimum signal score (0-100)

Request

cURL
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://polychadsbot.xyz/api/v1/alerts?\
category=crypto&side=BUY&min_signal=60&page=1"

Response 200

JSON
{
  "alerts": [ ... ],
  "total": 581,
  "page": 1,
  "page_size": 50,
  "has_more": true
}
REST API

GET /alerts/:id

Get a single alert by its ID.

Path Parameters

id
integer
Alert ID
cURL
curl -H "Authorization: Bearer YOUR_KEY" \
  https://polychadsbot.xyz/api/v1/alerts/2220
REST API

GET /stats

Get aggregate bot statistics.

Request

cURL
curl -H "Authorization: Bearer YOUR_KEY" \
  https://polychadsbot.xyz/api/v1/stats

Response 200

JSON
{
  "total_alerts": 2226,
  "alerts_today": 183,
  "avg_signal_today": 59.2,
  "clusters_today": 0,
  "win_rate": 0.0,
  "total_resolved": 0,
  "total_won": 0
}
REST API

GET /me

Get info about your API key โ€” tier, rate limits, and today's usage.

Request

cURL
curl -H "Authorization: Bearer YOUR_KEY" \
  https://polychadsbot.xyz/api/v1/me

Response 200

JSON
{
  "name": "MyApp",
  "tier": "pro",
  "rate_limit": "300/min",
  "websocket": true,
  "webhooks": false,
  "realtime": true,
  "max_page_size": 50,
  "requests_today": 142
}
Pro+

WebSocket Stream

Connect for real-time alert push. Alerts are delivered the instant they're detected โ€” no polling required.

๐Ÿ”Œ
Endpoint wss://polychadsbot.xyz/ws/alerts?api_key=YOUR_KEY
JavaScript
const ws = new WebSocket(
  "wss://polychadsbot.xyz/ws/alerts?api_key=YOUR_KEY"
);

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);

  switch (msg.type) {
    case "connected":
      console.log("โœ… Connected:", msg.message);
      break;
    case "alert":
      console.log("๐Ÿ”” New alert:", msg.data);
      console.log(`  ${msg.data.side} ${msg.data.outcome} @ ${msg.data.entry_price}`);
      console.log(`  $${msg.data.usdc_value} | Signal: ${msg.data.signal_score}`);
      break;
    case "pong":
      break; // heartbeat response
  }
};

// Keep-alive heartbeat
setInterval(() => {
  if (ws.readyState === WebSocket.OPEN) {
    ws.send("ping");
  }
}, 25000);

Message Types

connected
object
Sent once on successful connection
alert
object
New alert โ€” data field has the same structure as REST alert objects
pong
object
Response to your ping messages
Enterprise

Webhooks

Register a URL to receive alerts automatically via HTTP POST. Filter by category and minimum signal score.

Register a Webhook
curl -X POST \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/webhook/polychads",
    "categories": "crypto,world",
    "min_signal": 40
  }' \
  https://polychadsbot.xyz/api/v1/webhooks

Your endpoint will receive POST requests with the alert JSON body whenever a matching alert fires.

Manage Webhooks

List Webhooks
curl -H "Authorization: Bearer YOUR_KEY" \
  https://polychadsbot.xyz/api/v1/webhooks
Delete Webhook
curl -X DELETE -H "Authorization: Bearer YOUR_KEY" \
  https://polychadsbot.xyz/api/v1/webhooks/1
Reference

Alert Object

Full schema of an alert returned by all endpoints.

Field
Type
Description
id
int
Unique alert ID
alert_type
string
fresh, fresh_accumulator, or cluster
wallet_address
string
Ethereum address of the trader
market_id
string
Polymarket market contract ID
event_slug
string
Human-readable market slug
event_title
string
Market question text
side
string
BUY or SELL
outcome
string
Outcome traded: Yes, No, etc.
entry_price
float
Entry price (0.0 โ€“ 1.0)
usdc_value
float
Trade size in USDC
signal_score
int
Insider signal strength (0-100)
trade_count
int
Wallet's total markets traded
category
string
Market category
created_at
string
UTC timestamp
resolved
bool
Whether market has resolved
won
bool
Whether the trade won
profit_usdc
float
P&L in USDC (after resolution)
details
object?
Extended data: wallet info, accumulation, cluster
Reference

Signal Score

Each alert is scored for insider likelihood. Higher scores indicate stronger signals.

80 โ€“ 100
๐Ÿ”ฅ Very High

Likely insider โ€” fresh wallet with precision timing and large size.

60 โ€“ 79
โš ๏ธ Strong

Worth tracking โ€” clear accumulation or fresh entry pattern.

40 โ€“ 59
๐Ÿ“Š Moderate

Interesting activity but could be noise.

0 โ€“ 39
โ„น๏ธ Low

Mostly informational โ€” large trades from experienced wallets.

Reference

Categories

Alerts are automatically categorized based on the Polymarket event.

๐Ÿช™ crypto
581
Token launches, FDV bets, blockchain events
๐Ÿ›๏ธ politics
370
Elections, nominations, policy decisions
๐ŸŒ world
963
Geopolitics, conflicts, international events
๐Ÿ’ป tech
18
AI, Apple, Tesla, SpaceX, tech companies
๐Ÿ’ฐ finance
12
Stocks, S&P 500, rate decisions, commodities
๐ŸŽฌ pop_culture
58
Celebrities, media, entertainment
๐Ÿ“‹ other
224
Uncategorized events
Reference

Errors

The API returns standard HTTP status codes with JSON error details.

Status
Code
Meaning
401
Unauthorized
Missing API key in Authorization header
403
Forbidden
Invalid API key or insufficient tier
404
Not Found
Alert or resource not found
429
Rate Limited
Too many requests โ€” check Retry-After header
500
Server Error
Internal error โ€” contact support
Error Response Example
{
  "detail": "Rate limit exceeded. pro tier: 300 req/min."
}
Reference

Rate Limits

Rate limits use a 1-minute sliding window per API key.

Tier
Limit
What happens at limit
Free
60/min
429 response with Retry-After: 60 header
Pro
300/min
429 response with Retry-After: 60 header
Enterprise
Unlimited
No rate limiting applied
๐Ÿ’ก
Pro tip: Use GET /me to check your current usage and remaining requests.