Skip to main content

Webhooks

Receive push notifications when reputation scores change. Available on Starter tier and above.

Register a Webhook

POST /api/v1/webhooks
X-API-Key: did_live_...
Content-Type: application/json

{
"url": "https://your-app.com/webhooks/crowdproof",
"walletAddressFilter": "0x1234..."
}

Omit walletAddressFilter to receive updates for all addresses.

Save Your Secret

The secret is only returned on creation. Store it securely — you'll need it to verify webhook signatures.

Verify Signatures

Every delivery includes an X-CrowdProof-Signature header (HMAC-SHA256 of the request body):

import crypto from "crypto";

function verifyWebhook(body: string, signature: string, secret: string): boolean {
const expected = crypto.createHmac("sha256", secret).update(body).digest("hex");
return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}

Payload Format

{
"event": "score.updated",
"timestamp": "2026-02-27T12:00:00Z",
"data": {
"address": "0x1234...",
"category": "DEFI_LENDING",
"previousScore": 720,
"newScore": 742,
"confidence": 0.91,
"tier": "High"
}
}

Limits by Tier

TierMax Webhooks
Free0
Starter3
Growth10
Enterprise50

Auto-Disable

Webhooks are automatically disabled after 10 consecutive delivery failures. Re-enable via the portal or by deleting and re-creating the webhook.

Management

# List webhooks
GET /api/v1/webhooks

# Get by ID
GET /api/v1/webhooks/{id}

# Delete
DELETE /api/v1/webhooks/{id}