insydr
Get an API key
api v1 · all systems operational
https://api.insydr.xyz/v1
API REFERENCE

Build on the den.

Everything the fox sees — markets, signals, wallets and order books on Polymarket and Kalshi — over a plain JSON API. Poll it, or let webhooks bark at your stack the moment a signal fires.

JSON OVER HTTPSCURSOR PAGINATIONUTC TIMESTAMPSPRO PLAN

Getting started

Grab a key from Dashboard → Settings → API keys, then confirm you're in the den:

TERMINAL
$ curl https://api.insydr.xyz/v1/me \
-H "Authorization: Bearer isk_live_4f7…"
{ "plan": "pro", "den": "open" }

Authentication

Every request carries your key as a bearer token. Keys are scoped per environment — isk_live_ and isk_test_.

HEADER
Authorization: Bearer isk_live_4f7…
Keys are server-side only. Never ship one in a browser or mobile app — a leaked key is someone else's fox. Rotate instantly from the dashboard.

Rate limits

PLANSUSTAINEDBURST
Pro300 req/min20 req/s
Webhook deliveriesuncapped

Over the line you'll get 429 with a Retry-After header. Current usage rides on every response in X-RateLimit-Remaining.

Signals

The core resource. Every signal ships with its full evidence trail — the wallets, the timing, the size. The fox points; your code decides.

GET/v1/signals
list signals, newest first
QUERY PARAMETERS
typestringinsider · whale · smart_gap · momentum · cluster · book_imbalance
severitystringcritical · high · medium · low
exchangestringpolymarket · kalshi
market_idstringScope to one market
sinceISO 8601Only signals fired after this instant
limitintegerDefault 25, max 100
cursorstringPage through with next_cursor from the previous response
curl "https://api.insydr.xyz/v1/signals?type=insider&severity=critical" \
-H "Authorization: Bearer isk_live_4f7…"
RESPONSE200
application/json
{
"data": [{
"id": "sig_9f2c",
"type": "insider",
"severity": "critical",
"market": {
"id": "mkt_fed_march",
"question": "Fed cuts rates at March FOMC?",
"exchange": "polymarket"
},
"evidence": {
"wallet": "0x3f…a2",
"wallet_age_days": 3,
"position_usd": 48000,
"z_score": 4.1
},
"fired_at": "2026-07-08T14:03:22Z"
}],
"has_more": true,
"next_cursor": "cur_8a1d"
}

Markets

Search and fetch prediction markets across Polymarket and Kalshi — questions, prices, volume, and resolution status the den already tracks.

GET/v1/markets
list / search markets
QUERY PARAMETERS
qstringFull-text search across market questions
exchangestringpolymarket · kalshi
statusstringopen · resolved · closed
limitintegerDefault 25, max 100
cursorstringPage through with next_cursor
GET/v1/markets/:id
single market detail

Wallets

Profiled wallets the fox has sniffed — age, PnL heuristics, concentration, and recent market activity. Use this when a signal points at a wallet and you want the full trail.

GET/v1/wallets/:address
wallet profile
RESPONSE FIELDS
addressstringChecksummed or exchange-native wallet id
wallet_age_daysintegerDays since first observed trade
realized_pnl_usdnumberHeuristic realized PnL across tracked markets
active_marketsintegerOpen positions the den currently sees
labelsstring[]Tags like whale, smart_money, fresh_wallet
GET/v1/wallets/:address/positions
open & recent positions

Watchlists

Your saved markets and price/alert thresholds. Pair with watchlist.moved webhooks so the den barks when something you care about moves.

GET/v1/watchlists
list your watchlists
POST/v1/watchlists/:id/items
add a market
REQUEST BODY
{
"market_id": "mkt_fed_march",
"alert_above": 0.62,
"alert_below": 0.4
}

Webhooks

Don't poll — get barked at. Subscribe an HTTPS endpoint and Insydr POSTs events the moment they happen. Failed deliveries retry 3× with exponential backoff.

POST/v1/webhooks
create a subscription
REQUEST BODY
{
"url": "https://yourapp.com/hooks/insydr",
"events": ["signal.fired", "whale.entry"],
"filter": { "severity": "high" }
}

Event types

Subscribe to the events you care about. Filter further with severity or market scope when you create the webhook.

signal.firedAny signal crosses its threshold — the big one
signal.resolvedThe underlying market resolved; outcome attached
whale.entryA profiled whale opens or stacks a position
whale.exitA profiled whale unwinds
smart_gap.widenedSmart-money consensus diverges past your threshold
watchlist.movedA watchlisted market moves past your price alert

Signatures

Every delivery is signed. Compute an HMAC-SHA256 of "{timestamp}.{body}" with your endpoint secret whsec_… and compare against the header:

NODE.JS
// X-Insydr-Signature: t=1751983402,v1=5257a86…
const expected = crypto
.createHmac("sha256", process.env.INSYDR_WEBHOOK_SECRET)
.update(`${t}.${rawBody}`)
.digest("hex");

Errors

Conventional HTTP status codes, with a machine-readable body: { "error": { "code", "message" } }.

200okThe fox delivered
400invalid_requestMalformed parameter — details in the message
401unauthorizedMissing or revoked key
403plan_requiredEndpoint needs Pro — the den's front room is free, this isn't
429rate_limitedSlow down — honor Retry-After
500internalOur fault. Retry with backoff; check status.insydr.xyz
© 2026 insydr · api v1back to top ↑