OpenAI response.completed webhook payload example

OpenAI · event: response.completed · content type: application/json

This is a representative sample — fake IDs, real structure. To see a payload with your data, point the provider at a capture URL (button below).

See it live, not frozen

One click creates a free capture bin with this exact payload already in it — pretty-printed, headers inspectable, replayable to your own endpoint:

Then paste the bin's URL into OpenAI's webhook settings to capture a real delivery. No signup.

Headers

content-type: application/json
user-agent: OpenAI/1.0 (+https://platform.openai.com/docs/webhooks)
webhook-id: wh_68b2a91c52b081909a4df1b6c2e8d3f7
webhook-timestamp: 1788500001
webhook-signature: v1,hUVJ8dIAT9HxSecDBlAOrPa2hGe0R3MqGSagFVYgYsI=

Body

{
  "object": "event",
  "id": "evt_68b2a91c4f0e8190a3d5c7b9e1f2a4d6",
  "type": "response.completed",
  "created_at": 1788500000,
  "data": {
    "id": "resp_68b2a8f7d2c48190b1e6a9c3f5d7e9b2"
  }
}

Things that bite people

Send it yourself

Reproduce this delivery against any endpoint (your handler, a bin, staging):

$ curl -X POST https://your-endpoint.example/hook \
  -H 'content-type: application/json' \
  -H 'user-agent: OpenAI/1.0 (+https://platform.openai.com/docs/webhooks)' \
  -H 'webhook-id: wh_68b2a91c52b081909a4df1b6c2e8d3f7' \
  -H 'webhook-timestamp: 1788500001' \
  -H 'webhook-signature: v1,hUVJ8dIAT9HxSecDBlAOrPa2hGe0R3MqGSagFVYgYsI=' \
 -d '{
  "object": "event",
  "id": "evt_68b2a91c4f0e8190a3d5c7b9e1f2a4d6",
  "type": "response.completed",
  "created_at": 1788500000,
  "data": {
    "id": "resp_68b2a8f7d2c48190b1e6a9c3f5d7e9b2"
  }
}'

← All payload examples · Related guide · Signature debugger · Docs