Skip to content

Webhooks

Webhooks let you receive real-time HTTP POST notifications when events occur — new picks scored, lines moving, picks settled, etc.

Terminal window
curl -H "X-API-Key: $NBAV3_DATA_TOKEN" \
https://nbaproplab.com/api/v1/data/events/types
EventFired when
picks.scoredNew picks are generated after a scoring run
picks.settledPicks are settled after game completion
lines.movedA significant line movement is detected (≥ 0.75pt)
odds.refreshedNew odds snapshot ingested from sportsbooks
Terminal window
curl -X POST https://nbaproplab.com/api/v1/data/webhook-subscriptions \
-H "X-API-Key: $NBAV3_DATA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-server.com/webhooks/nbaproplab",
"events": ["picks.scored", "lines.moved"],
"secret": "your-webhook-secret"
}'

Each webhook POST includes:

{
"id": "evt_abc123",
"type": "picks.scored",
"timestamp": "2026-05-20T10:45:00Z",
"data": {
"count": 42,
"date": "2026-05-20",
"premiumCount": 8,
"standardCount": 34
}
}

Every webhook includes an X-Webhook-Signature header. Verify it with your secret:

import { createHmac } from 'crypto';
function verifyWebhook(body: string, signature: string, secret: string): boolean {
const expected = createHmac('sha256', secret).update(body).digest('hex');
return signature === `sha256=${expected}`;
}
ActionMethodEndpoint
ListGET/api/v1/data/webhook-subscriptions
CreatePOST/api/v1/data/webhook-subscriptions
UpdatePATCH/api/v1/data/webhook-subscriptions/{id}
DeleteDELETE/api/v1/data/webhook-subscriptions/{id}
TestPOST/api/v1/data/webhook-subscriptions/{id}/test

Failed deliveries (non-2xx response) are retried with exponential backoff:

AttemptDelay
1st retry1 minute
2nd retry5 minutes
3rd retry30 minutes
4th retry2 hours

After 4 failed attempts, the subscription is marked as failing. It remains active but you’ll see a warning in your subscription list.