POST requests. Each
request carries one event in a JSON envelope. To set up a webhook and check its signature, see
Receive events with webhooks.
Request
Headers
A receiver accepts a request when one of the signatures matches and the timestamp is within 300
seconds of its clock. See Verify the signature.
Envelope
Every event has the same envelope.string
required
The event’s ID, starting with
evt_. It stays the same on every retry and every resend. Use it to
skip events you’ve already handled.string
required
The event name, such as
call.ended.string
required
When the event happened, in ISO 8601 UTC, such as
2026-10-15T14:03:22.114Z. Events can arrive
out of order: sort by this field.string
required
The workspace the event belongs to.
object
required
The event’s fields, described below for each event.
Delivery
Events never carry a transcript, a recording or a secret.
call.started
Sent when a call reaches an application, inbound or outbound. If the call goes to the application’s fallback,appRef is the application that answered.
string
required
The call’s ref. The same ref names its call record.
string
required
The application that answered the call.
string
required
The calling number or address.
string
required
The called number or address.
string
required
inbound or outbound.call.ended
Sent when a call that reached an application ends. A call that sentcall.started sends
call.ended.
string
required
The call’s ref.
string
required
The application that answered the call.
string
required
The calling number or address.
string
required
The called number or address.
string
required
inbound or outbound.integer
required
The call’s length in seconds, rounded. After a cold transfer, it counts until the transferred
call ends.
string
required
Why the call ended. One of the values below.
call.failed
Sent when a call never reaches an application: the number you called was busy or didn’t answer, the call was rejected, or neither the application nor its fallback could be reached. A failed call sends nocall.started or call.ended.
string
required
The call’s ref.
string
The application the call was meant for. It may be empty or missing.
string
required
The calling number or address.
string
required
The called number or address.
string
required
inbound or outbound.string
required
Why the call failed. Common values are below; treat any other value as a generic failure.
call_record.sealed
Sent each time a new version of a call record is sealed. Version1 is
sealed after the call ends. Later versions come from changes, such as a part being deleted. No event is sent
when a record is erased.
string
required
The call’s ref.
integer
required
The record version that was sealed, starting at
1.string
required
Where to fetch that version:
/api/records/<callRef>?version=<version>, relative to the API’s
host. An operator can set a different base. Fetch it with your access token.provider.deprecated
Sent once to each workspace that names the item in a saved application or agent, when Fonoster deprecates a provider, model or voice. See Providers and models.string
required
The catalog ID that was deprecated, such as
groq/llama-3.3-70b-versatile.string
required
The catalog ID to move to.
string
required
The retirement date, as
YYYY-MM-DD.Retired events
The 0.27 AutopiloteventsHook events are gone. Creating a webhook with one of their names is
refused with the replacement.