API Documentation

Build bots, dashboards, and automated trading systems with the CryptoPulse REST API.

34

EVM chains supported

100+

Labeled whale wallets

<200ms

Average response time

🌐 Base URL: https://cryptopulse.uno/api
✅ JSON responses
🔑 Bearer token auth

⚡ Quick Start

1. Get your API key from the Dashboard. Free accounts with a confirmed email can start a 7-day API trial — 10 API calls/day, verified email, no card. Every endpoint, webhooks and the Alpha-bot Signal feed — the full paid surface, rate-limited — every endpoint and the MCP server, capped at 10 calls/day. That is enough to see the real payloads and verify a signature, and not enough to run a polling loop on: for that you want a paid plan. Paid plans: Pro ($19/mo), Trader ($49/mo) or API ($99/mo).

2. Make your first request:

curl -H "Authorization: Bearer cpk_your_api_key_here" \
  https://cryptopulse.uno/api/whales?chain=ethereum&limit=5

3. Or use JavaScript:

const res = await fetch("https://cryptopulse.uno/api/whales?chain=ethereum", {
  headers: { "Authorization": "Bearer cpk_your_api_key_here" }
});
const { transactions } = await res.json();
console.log(`Found ${transactions.length} whale moves`);

4. Python example:

import requests

headers = {"Authorization": "Bearer cpk_your_api_key_here"}
r = requests.get("https://cryptopulse.uno/api/wallet/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
                  params={"multichain": "true"}, headers=headers)
wallet = r.json()
print(f"Score: {wallet['score']['overall']}/100 — {wallet['score']['classification']}")

5. Poll the feed exactly once — store cursor.latest and pass it back as since. Offset paging re-reads and drops rows when new movements land at the head; a cursor cannot.

let cursor = null;   // persist this between runs

async function poll() {
  const url = new URL("https://cryptopulse.uno/api/whales");
  url.searchParams.set("chain", "all");
  url.searchParams.set("limit", "100");
  if (cursor) url.searchParams.set("since", cursor);

  const res = await fetch(url, {
    headers: { "Authorization": "Bearer cpk_your_api_key_here" }
  });
  const data = await res.json();

  // A 'since' page already arrives oldest-first — apply it as it comes.
  for (const tx of data.transactions) {
    handle(tx);          // tx.id is stable — safe to dedupe on
  }
  // Null on an empty page: keep the position you had.
  // Optional-chained: the live-scan response carries nulls, and a future
  // endpoint shape may omit it. Keeping the old cursor is always safe.
  cursor = data.cursor?.latest ?? cursor;
}

📊 Rate Limits

PlanPriceWallet LookupsAPI Calls/DayAPI KeysFeatures
Trial (7d)$010/day10/day1 keyFull API access + webhooks + Signals, verified email
Free$050/day——Dashboard only
Pro$19/mo1,000/day100/day3 keysFull API access
Trader$49/mo2,500/day500/day3 keysFull API access + webhooks
API$99/mo5,000/day5,000/day10 keysFull API access + webhooks

Endpoints

GET/api/whalesHistory depth by plan: 7d Free · 30d Pro · 90d Trader · 90d API. Deeper requests return 403 with your ceiling, never silently truncated.

Whale transactions across chains — live, historical, and paginated

Parameters

NameTypeRequiredDefaultDescription
chainstringNoethereumChain: ethereum, base, bsc, arbitrum, polygon, optimism, avalanche... or 'all'
limitnumberNo20Max results (1-1000)
offsetnumberNo0Pagination offset. Response carries total + hasMore.
periodstringNo24h1h, 6h, 24h, 7d, 30d, 90d — or 'live' for a fresh block scan (single chain)
fromstringNo—Range start: unix seconds or ISO-8601 (2026-06-01). Requires 'to'-free pairing rules; overrides period.
tostringNo—Range end: unix seconds or ISO-8601. Requires 'from'.
sincestringNo—Cursor from a previous response (cursor.latest). Returns only movements newer than it — use this to poll a feed exactly once instead of paging by offset.
beforestringNo—Cursor from a previous response (cursor.oldest). Returns only movements older than it — walks back through history without an offset.

Example

curl -H "Authorization: Bearer YOUR_API_KEY" "https://cryptopulse.uno/api/whales?chain=all&period=90d&limit=100&offset=0"

Response

{
  "chain": "ethereum",
  "count": 5,
  "transactions": [
    {
      "hash": "0xabc...def",
      "chain": "ethereum",
      "from": "0x28C6...d60",
      "to": "0xd8dA...045",
      "value": "500.0000",
      "valueUSD": 1750000,
      "token": "ETH",
      "tokenSymbol": "ETH",
      "type": "transfer",
      "fromLabel": "Binance Hot Wallet",
      "toLabel": "vitalik.eth",
      "timestamp": 1708886400,
      "blockNumber": 19320000
    }
  ],
  "updatedAt": "2026-02-28T15:30:00Z"
}
🧪 Try It
GET/api/wallet/:addressFree (50/day) / Pro (1,000/day) / Trader (2,500/day) / API (5,000/day)

Scan wallet — balance, tokens, transactions, intelligence score

Parameters

NameTypeRequiredDefaultDescription
addressstringYes—EVM wallet address (0x...)
chainstringNoethereumSingle chain to query
multichainbooleanNofalseScan all 17 chains in parallel

Example

curl -H "Authorization: Bearer YOUR_API_KEY" https://cryptopulse.uno/api/wallet/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?multichain=true

Response

{
  "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
  "chain": "ethereum",
  "label": "vitalik.eth",
  "tags": ["🐋 Whale", "Ethereum Foundation"],
  "balance": "1234.5678",
  "balanceUSD": 4320987.30,
  "score": {
    "overall": 92,
    "tier": "🐋",
    "classification": "Whale",
    "breakdown": { "age": 25, "activity": 22, "diversity": 20, "volume": 25 },
    "riskFlags": [],
    "insights": ["Top 0.01% wallet", "Active DeFi user"]
  },
  "stats": {
    "totalTxCount": 1847,
    "uniqueTokensTraded": 89,
    "totalValueMovedUSD": 890000000,
    "firstTxDate": "2015-07-30",
    "lastTxDate": "2026-02-28"
  },
  "tokenHoldings": [...],
  "recentTokenTransfers": [...],
  "connections": { "exchanges": [...], "defi": [...], "frequentContacts": [...] }
}
🧪 Try It
GET/api/marketFree / All plans

Market overview — prices, market cap, fear & greed index

Example

curl -H "Authorization: Bearer YOUR_API_KEY" https://cryptopulse.uno/api/market

Response

{
  "overview": {
    "totalMarketCap": 3200000000000,
    "totalVolume24h": 98000000000,
    "btcDominance": 52.3,
    "fearGreedIndex": 72,
    "fearGreedLabel": "Greed"
  },
  "prices": [
    { "id": "bitcoin", "symbol": "btc", "price": 95420, "change24h": 2.1, "marketCap": 1890000000000 },
    { "id": "ethereum", "symbol": "eth", "price": 3520, "change24h": -0.5, "marketCap": 423000000000 }
  ]
}
🧪 Try It
GET/api/chainsFree / All plans

List all 34 supported chains with RPC status

Example

curl https://cryptopulse.uno/api/chains

Response

{
  "chains": [
    { "id": "ethereum", "name": "Ethereum", "symbol": "ETH", "explorerUrl": "https://etherscan.io" },
    { "id": "base", "name": "Base", "symbol": "ETH", "explorerUrl": "https://basescan.org" },
    ...
  ],
  "total": 34
}
🧪 Try It
GET/api/keysPro ($19/mo), Trader ($49/mo) or API ($99/mo) — or a 7-day trial key (verified email, 10 calls/day)

List your API keys (requires auth cookie)

Example

# Use dashboard UI to manage keys

Response

{ "keys": [{ "id": "...", "keyPrefix": "cpk_a1b2c3d4", "name": "My Bot", "callsToday": 42, "callsTotal": 1337, "createdAt": "..." }] }
🧪 Try It
POST/api/keysPro ($19/mo), Trader ($49/mo) or API ($99/mo) — or a 7-day trial key (verified email, 10 calls/day)

Create a new API key

Parameters

NameTypeRequiredDefaultDescription
namestringNoDefaultLabel for the key

Example

curl -X POST -H "Content-Type: application/json" -d '{"name":"My Bot"}' https://cryptopulse.uno/api/keys

Response

{ "key": "cpk_abc123...full_key", "id": "...", "prefix": "cpk_abc123..", "name": "My Bot", "message": "Save this key — it won't be shown again!" }
🧪 Try It
GET/api/webhooks/subscriptionsTrader or Api plan

List your webhook endpoints (secrets are masked)

Example

curl -H "Authorization: Bearer YOUR_API_KEY" https://cryptopulse.uno/api/webhooks/subscriptions

Response

{
  "endpoints": [
    {
      "id": "3f9a...",
      "url": "https://your-app.com/hooks/cryptopulse",
      "events": ["whale_move", "wallet_watch", "signal"],
      "active": true,
      "secretPreview": "whsec_****a1b2",
      "consecutiveFailures": 0,
      "lastSuccessAt": "2026-08-25T12:00:00Z"
    }
  ]
}
🧪 Try It
POST/api/webhooks/subscriptionsTrader or Api plan (max 5 endpoints)

Register an HTTPS endpoint for push events. We POST a signed JSON payload per matching alert. Verify X-CryptoPulse-Signature: it is sha256=HMAC_SHA256(secret, timestamp + '.' + rawBody) using the X-CryptoPulse-Timestamp header. The secret is returned ONCE on create. Endpoints auto-disable after 10 consecutive failures. Alert events land within about 6 minutes of the move (about 26 on Optimism, Celo, Mode and Soneium). Telegram and email Alerts are slower — within 15 minutes, up to 45 minutes when a rule has just fired — because they also wait out the per-rule cooldown. Free-plan delivery is Delayed by 30 minutes (ADR-0001); paid delivery is Instant. Webhooks are a paid channel, so a webhook always receives Instant delivery.

Parameters

NameTypeRequiredDefaultDescription
urlstringYes—Public HTTPS URL on port 443. Private/loopback/metadata addresses are rejected.
eventsarrayNoallAny of: whale_move, wallet_watch, signal. whale_move and wallet_watch are Alerts (your own rules); signal is an Alpha-bot Signal (entry, stop-loss, take-profit, bot version) and needs a Trader or Api plan.

Example

curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"url":"https://your-app.com/hooks/cryptopulse","events":["whale_move"]}' https://cryptopulse.uno/api/webhooks/subscriptions

Response

{
  "id": "3f9a...",
  "url": "https://your-app.com/hooks/cryptopulse",
  "events": ["whale_move"],
  "secret": "whsec_...   // shown once — store it now",
  "signatureNote": "X-CryptoPulse-Signature: sha256=HMAC_SHA256(secret, timestamp + '.' + rawBody)"
}
🧪 Try It

Error Codes

CodeMeaning
200Success
400Bad request — invalid parameters
401Unauthorized — invalid or missing API key
403Forbidden — plan doesn't include this feature
429Rate limit reached — upgrade plan or wait for daily reset
500Server error

🔌 MCP Server (for AI agents)

Every endpoint below is also exposed as an MCP tool over Streamable HTTP, so an agent orchestrator can call CryptoPulse without your writing a client. Point any MCP client at https://cryptopulse.uno/api/mcp and send your API key as a Bearer token. Protocol revisions: 2025-06-18, 2025-03-26, 2024-11-05.

ToolWhat it returnsNeeds
get_whale_movementsRecent large 'whale' transactions (buys, sells, transfers) across 17 EVM chains. Use to see what smart money is doing right now.Any key
get_wallet_intelWallet intelligence for a specific address: balances, recent activity, labels, and smart-money score. Supports multichain lookup.Any key
get_market_overviewCrypto market overview — prices and stats for major tracked tokens.Any key
list_supported_chainsList the 17 blockchains CryptoPulse tracks (id, name, symbol, category).Any key
get_smart_moneyRecent smart-money wallet activity — moves by high-scoring funds, market makers, and notable wallets.Any key
get_bot_statusStatus of the CryptoPulse Alpha trading bot — active strategy version, symbol, and performance stats.Any key
get_trading_signalsLatest algorithmic buy/sell trading signals from the Alpha bot (entry, stop-loss, take-profit). Requires a Trader or Api plan key.Trader or Api plan

Connect:

# Claude: Settings → Connectors → Add custom connector
https://cryptopulse.uno/api/mcp

# Inspect the tool list first
npx @modelcontextprotocol/inspector https://cryptopulse.uno/api/mcp

# Or call it directly
curl -X POST https://cryptopulse.uno/api/mcp \
  -H "Authorization: Bearer cpk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Ready to build?

Get API access from Pro ($19/mo), Trader ($49/mo) or API ($99/mo). Start building in minutes.