Skip to content
For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Primary navigation

Webhook Events

Webhooks are HTTP requests sent by OpenAI to a URL you specify when certain events happen during the course of API usage.

Learn more about webhooks.

response.completed

Sent when a background response has been completed.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the model response was completed.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the model response.

type: "response.completed"

The type of the event. Always response.completed.

object: optional "event"

The object of the event. Always event.

response.cancelled

Sent when a background response has been cancelled.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the model response was cancelled.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the model response.

type: "response.cancelled"

The type of the event. Always response.cancelled.

object: optional "event"

The object of the event. Always event.

response.failed

Sent when a background response has failed.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the model response failed.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the model response.

type: "response.failed"

The type of the event. Always response.failed.

object: optional "event"

The object of the event. Always event.

response.incomplete

Sent when a background response has been interrupted.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the model response was interrupted.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the model response.

type: "response.incomplete"

The type of the event. Always response.incomplete.

object: optional "event"

The object of the event. Always event.

batch.completed

Sent when a batch API request has been completed.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the batch API request was completed.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the batch API request.

type: "batch.completed"

The type of the event. Always batch.completed.

object: optional "event"

The object of the event. Always event.

batch.cancelled

Sent when a batch API request has been cancelled.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the batch API request was cancelled.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the batch API request.

type: "batch.cancelled"

The type of the event. Always batch.cancelled.

object: optional "event"

The object of the event. Always event.

batch.expired

Sent when a batch API request has expired.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the batch API request expired.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the batch API request.

type: "batch.expired"

The type of the event. Always batch.expired.

object: optional "event"

The object of the event. Always event.

batch.failed

Sent when a batch API request has failed.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the batch API request failed.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the batch API request.

type: "batch.failed"

The type of the event. Always batch.failed.

object: optional "event"

The object of the event. Always event.

fine_tuning.job.succeeded

Sent when a fine-tuning job has succeeded.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the fine-tuning job succeeded.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the fine-tuning job.

type: "fine_tuning.job.succeeded"

The type of the event. Always fine_tuning.job.succeeded.

object: optional "event"

The object of the event. Always event.

fine_tuning.job.failed

Sent when a fine-tuning job has failed.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the fine-tuning job failed.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the fine-tuning job.

type: "fine_tuning.job.failed"

The type of the event. Always fine_tuning.job.failed.

object: optional "event"

The object of the event. Always event.

fine_tuning.job.cancelled

Sent when a fine-tuning job has been cancelled.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the fine-tuning job was cancelled.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the fine-tuning job.

type: "fine_tuning.job.cancelled"

The type of the event. Always fine_tuning.job.cancelled.

object: optional "event"

The object of the event. Always event.

eval.run.succeeded

Sent when an eval run has succeeded.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the eval run succeeded.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the eval run.

type: "eval.run.succeeded"

The type of the event. Always eval.run.succeeded.

object: optional "event"

The object of the event. Always event.

eval.run.failed

Sent when an eval run has failed.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the eval run failed.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the eval run.

type: "eval.run.failed"

The type of the event. Always eval.run.failed.

object: optional "event"

The object of the event. Always event.

eval.run.canceled

Sent when an eval run has been canceled.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the eval run was canceled.

formatunixtime
data: object { id }

Event data payload.

id: string

The unique ID of the eval run.

type: "eval.run.canceled"

The type of the event. Always eval.run.canceled.

object: optional "event"

The object of the event. Always event.

realtime.call.incoming

Sent when an incoming API SIP session is available for Realtime acceptance. The same pending session can also emit live.call.incoming; the first successful Realtime or Live accept endpoint selects the runtime surface.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the model response was completed.

formatunixtime
data: object { call_id, sip_headers }

Event data payload.

call_id: string

The Transceiver rtc_... ID of the pending SIP session. The same value appears as session_id in live.call.incoming.

sip_headers: array of object { name, value }

Headers from the SIP Invite.

name: string

Name of the SIP Header.

value: string

Value of the SIP Header.

type: "realtime.call.incoming"

The type of the event. Always realtime.call.incoming.

object: optional "event"

The object of the event. Always event.

live.call.incoming

Sent when an incoming API SIP session is available for Live acceptance. The same pending session can also emit realtime.call.incoming; the first successful Realtime or Live accept endpoint selects the runtime surface.

id: string

The unique ID of the event.

created_at: number

The Unix timestamp (in seconds) of when the event was created.

formatunixtime
data: object { session_id, sip_headers }

Event data payload.

session_id: string

The Transceiver rtc_... ID of the pending SIP session. The same value appears as call_id in realtime.call.incoming.

sip_headers: array of object { name, value }

Headers from the SIP Invite.

name: string

Name of the SIP Header.

value: string

Value of the SIP Header.

type: "live.call.incoming"

The type of the event. Always live.call.incoming.

object: optional "event"

The object of the event. Always event.