Q4API Docs
Q4 APISign inGet API key
DocumentationAPI Reference
Overview
IntroductionQuickstartData overviewPlans and limits
Datasets
CompaniesMarket dataRealtime & streamingFundamentalsDividends & corporate actionsFilings & reportsBoard reportsPresentationsEarnings callsAnnouncementsEconomic data
REST API
AuthenticationPagination and filteringRate limitsErrors
WebSocket
ConnectingStreamsWebSocket errors
Webhooks
WebhooksWebhook eventsSignatures
MCP
Q4 MCP connector
More
ChangelogSupport
Webhooks

Webhooks

Get an HTTP request when new data lands.

Webhooks push events to your server as they happen: a new filing, an announcement, a finished transcript, or an alert rule firing. They need Pro+.

1. Register an endpoint

curl -X POST "https://api.q4.sa/v1/webhooks" \
  -H "x-api-key: $Q4_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/q4/webhooks", "events": ["announcement.created"]}'

The response includes a signing_secret, shown once.

2. Handle deliveries

We send a POST with a JSON body. Reply with any 2xx within 10 seconds, then do the work in the background.

{
  "id": "evt_01JC8W3Y2Q",
  "type": "announcement.created",
  "created_at": "2026-11-03T04:02:11Z",
  "data": {
    "id": "ann_51Vb3k",
    "symbol": "2222",
    "title": "Saudi Aramco announces its interim financial results…"
  }
}

3. Verify the signature

Check the X-Q4-Signature header before trusting a delivery. See Signatures.

Retries

If you don't reply 2xx, we retry after 10 seconds, 1 minute, 10 minutes and 1 hour. After a day of failures the webhook is paused and we email you.

Deliveries can arrive more than once or out of order. Use the event id to skip duplicates.

← Previous
WebSocket errors
Next →
Webhook events
On this page
1. Register an endpoint2. Handle deliveries3. Verify the signatureRetries