event - The event type (calls.initiated)eventId - Unique event identifier for idempotencytimestamp - ISO 8601 timestamp of when the event was generateddata.call.id - Unique call identifier, used to send commandsdata.call.direction - Always inbound for received callsdata.call.from - The caller’s phone number or identifierdata.call.to - Your Chirp phone number that received the calldata.call.fromChannel - Channel of the caller (pstn, webrtc, or whatsapp)data.call.toChannel - Channel of the recipient (pstn, webrtc, or whatsapp)data.call.livekitRoomName - LiveKit room name (present when channel is webrtc)data.call.metadata - Custom metadata (if any)data.app.id - The application that owns the call
If your application does not respond to the calls.initiated webhook within 30 seconds, Chirp uses the default behavior configured in your application’s calling settings. This can be:
Voicemail - The call is sent to voicemail automatically
Reject - The call is rejected with a busy signal
Make sure your webhook endpoint responds quickly. If your application takes too long to process the webhook, the caller will be waiting in silence. Send the call command as soon as possible and handle any additional logic asynchronously.
You can combine call commands to build complex call flows. For example, answer a call, then transfer it to another number, or answer and start recording. See Call Commands for all available options.