> For a complete page index of the Captain API documentation, fetch https://docs.captain.dev/llms.txt?excludeSpec=true

# Webhooks for Indexing Jobs

* **Know when a job finishes, without polling**: Captain sends a signed HTTPS request to your endpoint when an indexing job ends. Each job sends exactly one event: `job.completed`, `job.completed_with_errors`, `job.failed`, `job.timed_out` or `job.cancelled`, with the `job_id`, file counts and a link to the full job. See [Webhooks](/guides/webhooks).
* **One endpoint for every job**: an endpoint receives events for every indexing job in the organization, from the API and from syncs, however many run at once. Match each event to the job you started with `data.job_id`. See [Many jobs at once](/guides/webhooks#many-jobs-at-once).
* **Set up in Studio or with the API**: add endpoints, send test events, read delivery logs and resend failed deliveries on the new **Webhooks** page in Captain Studio, or with the [Endpoint management](/reference/webhooks/endpoints/create) routes. The Captain MCP server adds `captain_webhook_setup` and `captain_webhook_events`.
* **Reliable delivery**: failed deliveries are retried for about 28 hours, and filters limit an endpoint to certain events, collections, syncs or sources. Each event's payload is documented under [Webhook events](/reference/webhooks/events/job-completed).