POST requests that include a unique X-BZ-Delivery header for deduplication and use a tiered retry strategy to maximize reliability.
Available webhook services
- Data Webhook Engine: Real-time calendar and signal data (earnings, dividends, ratings, option activity, WIIMs, and more) with configurable filters and optional payload transformations. Read the full guide in Data Webhook Engine.
- Additional webhook configurations can be scoped to your account. Contact your Benzinga representative to enable specific datasets or to register new webhook URLs.
Integration flow
1
Share your endpoint and filters
Provide a publicly reachable HTTPS endpoint plus any data type or geography filters you need. Benzinga will provision the webhook with those settings.
2
Test your integration
Use the Test Webhook Delivery endpoint to verify your webhook endpoint is properly configured and can receive deliveries.
3
Handle deliveries idempotently
Parse the JSON payload, use the
id and X-BZ-Delivery values to avoid duplicates, and respond quickly with a 2xx status to acknowledge receipt.4
Monitor and iterate
Track failures, timeouts, and retries in your logs. Adjust filters or payload transformations with your Benzinga contact if your downstream systems have new requirements.
Verifying deliveries (HMAC-SHA256)
Every delivery is signed so you can confirm it genuinely came from Benzinga and was not modified in transit. The signature is sent in theX-Bz-Signature header, formatted as sha256=<hex digest>:
- Algorithm: HMAC-SHA256.
- Secret: your API key — the same key Benzinga issued you for this webhook. Keep it secret; anyone with it can forge deliveries.
- Signed content: the raw request body bytes, exactly as received.
- Format:
sha256=followed by the lowercase hex digest.
1
Capture the raw body
Read the raw request body before parsing or re-serializing the JSON. You must hash the exact bytes you received — a re-encoded copy will not match.
2
Compute the expected signature
Compute
HMAC-SHA256(secret = your API key, message = raw body) and hex-encode the result.3
Compare in constant time
Compare your value against the hex portion of
X-Bz-Signature (after sha256=) using a constant-time comparison. Reject the delivery with a 4xx if it does not match.Capture the raw request body before your framework parses it. Many frameworks
buffer and re-serialize JSON, which changes the bytes and breaks verification.
Best practices
- Use HTTPS and authentication on your webhook endpoint.
- Process work asynchronously so responses return within 30 seconds.
- Store processed delivery IDs to ensure idempotency across retries.
- Test against non-production endpoints before switching to live delivery.