OpenAI
Receive webhook events from OpenAI for background jobs such as Responses API completions, Batch jobs, Fine-Tuning, and Evals.
Connect OpenAI
OpenAI webhooks require manual setup — there is no OAuth integration. You register the Dispatch endpoint URL directly in your OpenAI Dashboard.
Steps
- In Dispatch, go to Sources → Add Source → OpenAI and click Generate webhook URL.
- Copy the generated URL.
- In the OpenAI Dashboard, go to Settings → Webhooks → Add endpoint.
- Paste the URL and select the events you want to receive.
- Copy the Signing secret shown for the endpoint (starts with
whsec_). - Paste the signing secret into Dispatch and click Done.
Supported Events
| Category | Event | Description |
|---|---|---|
| Responses API | response.completed | Background response finished successfully |
| Responses API | response.failed | Background response failed |
| Responses API | response.incomplete | Response stopped before completion (e.g. token limit) |
| Responses API | response.cancelled | Response was cancelled |
| Batch Jobs | batch.completed | Batch job finished |
| Batch Jobs | batch.failed | Batch job failed |
| Batch Jobs | batch.cancelled | Batch job was cancelled |
| Batch Jobs | batch.expired | Batch job expired before completion |
| Fine-Tuning | fine_tuning.job.succeeded | Fine-tuning job completed successfully |
| Fine-Tuning | fine_tuning.job.failed | Fine-tuning job failed |
| Fine-Tuning | fine_tuning.job.cancelled | Fine-tuning job was cancelled |
| Evals | eval.run.succeeded | Eval run completed successfully |
| Evals | eval.run.failed | Eval run failed |
| Evals | eval.run.cancelled | Eval run was cancelled |
Signature Verification
Dispatch automatically verifies every incoming OpenAI webhook using the signing secret you provide. OpenAI uses the Standard Webhooks specification:
- Headers:
webhook-id,webhook-timestamp,webhook-signature - Algorithm: HMAC-SHA256 over
{webhook-id}.{webhook-timestamp}.{body} - Secret format:
whsec_followed by a base64-encoded key
Requests with missing or invalid signatures are rejected with 401 Unauthorized. Requests with a timestamp more than 5 minutes old are also rejected.
Disconnect
To stop receiving events, delete the endpoint from your OpenAI Dashboard under Settings → Webhooks, then archive or delete the source in Dispatch.