/documents/list. Register a URL, optionally filtered by document category, and Captide sends each new document to it as a POST request.
Create a webhook
Register your URL withPOST /api/v2/webhooks:
url: where Captide sends documents. Use HTTPS.documentCategories: only send documents in these categories. Omit it, or sendnullor[], to receive every category.description: a label for your own use.GET /api/v2/webhooks?description=…finds webhooks by it.
What Captide sends
For each new document, Captide sends aPOST request to your URL with the document as JSON, in the same format as GET /api/v2/documents/{id}:
The file links in the payload are signed and expire one hour after the request is sent. Download the files promptly, or call
GET /api/v2/documents/{id} later for fresh links.Which documents are sent
- A webhook fires when Captide adds a document that was published in the last 7 days. Older documents, for example from historical backfills, are added to the API without triggering webhooks.
- The category filter uses the document’s category when it is added.
- Documents are sent for every company. To follow specific companies, check
companyIdorcompanyTickersin the payload. - If Captide adds a new version of a document’s file, you can receive it again, with a new
id.
Responding and retries
Respond with any2xx status to confirm receipt, within 30 seconds. Do the processing after you respond, for example in a queue.
Delivery is at least once: in rare cases, such as a timeout after your server accepted the request, you can receive the same document twice. Use the
Idempotency-Key header to ignore repeats.
Receiving webhooks
A minimal receiver with Express:Manage webhooks
PATCH only changes the fields you send. To pause a webhook, send {"enabled": false}; documents added while it is paused aren’t sent later. To remove a category filter, send {"documentCategories": []} (null leaves the filter unchanged).