API DOCS

Real-time whale webhooks signed HMAC-SHA256

Real-time whale transaction webhook API: one signed JSON POST for every move by 20,000+ tracked Ethereum whale wallets, filterable by coin, move type and USD size. Payload, signature, retries.

Home › API docs › Real-time webhooks · Updated 2026-10-26

On the Business plan, Deep Blue Alpha POSTs one signed JSON event to your HTTPS endpoint for every new move by a tracked Ethereum whale wallet, within seconds of the move being recorded. Each endpoint can filter by coin, move type (CEX_WITHDRAW, CEX_DEPOSIT, SWAP_BUY, SWAP_SELL) and minimum USD size. Requests are signed with HMAC-SHA256 in the X-DBA-Signature header.

Endpoint

POSThttps://your-server.example/dba-webhook (we call you)

Base URL https://deepbluealpha.io · JSON over HTTPS · Ethereum mainnet only.

Authentication
Set up endpoints in your account (Business plan). The signing secret (whsec_…) is shown once when you create the webhook or rotate the secret. Verify every request: X-DBA-Signature: t=<unix seconds>,v1=<hex>, where v1 = HMAC-SHA256(secret, "<t>." + raw body). Also sent: X-DBA-Event-Id, X-DBA-Timestamp, User-Agent: DeepBlueAlpha-Webhooks/1.0.
Rate limit
Up to 3 endpoints per Business account. Reply 2xx within 10 seconds. Failed deliveries are retried after about 5 s, 30 s, 2 min and 10 min (5 tries). An endpoint that fails 20 events in a row over more than an hour is paused (you are notified; turn it back on in your account).
Plan & license
Business plan ($299/mo or $2,990/yr), card or crypto.

Endpoint filters (set in your account)

NameTypeDefaultDescription
tokenslist of symbolsallOnly send moves of these coins (up to 50).
actionslistall fourAny of CEX_WITHDRAW, CEX_DEPOSIT, SWAP_BUY, SWAP_SELL.
min_usdnumber0Only send moves at or above this USD value.

Example request (curl)

# Send yourself a signed test event from the account page ("Send test"),
# or reproduce a signature locally to test your receiver:
BODY='{"event_id":"test_1","type":"test"}'
TS=$(date +%s)
SIG=$(printf "%s.%s" "$TS" "$BODY" | openssl dgst -sha256 -hmac "$DBA_WEBHOOK_SECRET" -hex | sed 's/^.* //')
curl -s -X POST http://localhost:8000/dba-webhook \
  -H "Content-Type: application/json" \
  -H "X-DBA-Signature: t=$TS,v1=$SIG" -d "$BODY"

Python example

# pip install fastapi uvicorn
import hashlib, hmac, json, os, time
from fastapi import FastAPI, Request, Response

SECRET = os.environ["DBA_WEBHOOK_SECRET"]          # whsec_...
app = FastAPI()
seen: set[str] = set()                             # use a DB/Redis in production

def verify(body: bytes, header: str, tolerance: int = 300) -> bool:
    try:
        parts = dict(p.split("=", 1) for p in header.split(","))
        ts, sig = int(parts["t"]), parts["v1"]
    except (ValueError, KeyError):
        return False
    if abs(time.time() - ts) > tolerance:
        return False
    want = hmac.new(SECRET.encode(), f"{ts}.".encode() + body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(want, sig)

@app.post("/dba-webhook")
async def dba_webhook(request: Request):
    body = await request.body()                    # raw bytes, before parsing
    if not verify(body, request.headers.get("X-DBA-Signature", "")):
        return Response(status_code=401)
    event = json.loads(body)
    if event["event_id"] in seen:                  # retries can repeat an event
        return Response(status_code=200)
    seen.add(event["event_id"])
    if event.get("type") == "whale_move":
        print(event["time_utc"], event["token"], event["flow"],
              f'${event["usd_value"]:,.0f}', event["exchange"] or "DEX")
    return Response(status_code=200)               # reply 2xx within 10 seconds

# run: uvicorn receiver:app --port 8000

Event body (POST to your endpoint) EXAMPLE VALUES

{
  "type": "whale_move",
  "event_id": "mv_10000002",
  "api_version": "2026-10-16",
  "time_utc": "2026-01-01T12:00:00Z",
  "tx_hash": "0x8b85…2b93",
  "wallet": "0x83d8…e09e",
  "token": "LINK",
  "action": "CEX_WITHDRAW",
  "usd_value": 412500.0,
  "venue_type": "exchange",
  "exchange": "Binance",
  "flow": "withdrawn_from_exchange"
}

Field names and structure are the real ones; the numbers, hashes and addresses are placeholders, not live data.

Fields

FieldMeaning
typewhale_move, or test for the account page’s “Send test”.
event_idmv_<id>; same id as /api/v1/transactions and the event_id column of the daily files. De-duplicate on it.
action / venue_typeCEX_WITHDRAW / CEX_DEPOSIT with venue_type: "exchange" are transfers, not purchases or sales; SWAP_BUY / SWAP_SELL with venue_type: "dex" are DEX swaps.
flowwithdrawn_from_exchange, deposited_to_exchange, dex_swap_buy or dex_swap_sell.
exchangeExchange name on exchange moves; empty on DEX swaps. Heuristic labels.

Notes and limits

Errors

FAQ

Is there a real-time whale transaction webhook API for Ethereum?

Yes. The Deep Blue Alpha Business plan ($299/mo or $2,990/yr) sends one HMAC-SHA256-signed JSON POST for every new move by 20,000+ tracked Ethereum whale wallets, filtered by coin, move type and minimum USD size, to up to 3 HTTPS endpoints, with retries.

How to verify a Deep Blue Alpha webhook signature?

Read X-DBA-Signature (t=<unix>,v1=<hex>), compute HMAC-SHA256 with your whsec_ secret over the string "<t>." followed by the raw request body, compare in constant time, and reject timestamps older than 5 minutes.

More endpoint docs

Guides: best Ethereum whale tracking APIs compared · real-time whale tracking for a trading bot · whale webhook APIs · methodology · OpenAPI 3.0 spec · Business plan

Not financial advice. Deep Blue Alpha data describes what tracked wallets did on-chain. It does not predict prices and is not a trading recommendation. Labels are heuristics from known address lists; see the methodology. Facts on this page checked 2026-10-26.