Twilio's Voice API Participant resource represents a participant who is either connecting to, or actively connected to, a conference that is not in completed status. This means that the Participants endpoint will not return results for participants whose call has ended, whose associated conference has ended, or whose call has been modified to use new TwiML; i.e. this resource does not return historical participant logs. For post-call participant details, use the Conference Insights Participant Summary resource.
The Participant resource allows you to:
Tracking updates to all conference participants over the course of a conference can be done by using the Conference's statusCallback webhook.
label
type: stringThe user-specified label of this participant, if one was given when the participant was created. This may be used to fetch, update or delete the participant.
call_sid_to_coach
type: SID<CA>The SID of the participant who is being coached
. The participant being coached is the only participant who can hear the participant who is coaching
.
coaching
type: booleanWhether the participant is coaching another call. Can be: true
or false
. If not present, defaults to false
unless call_sid_to_coach
is defined. If true
, call_sid_to_coach
must be defined.
date_created
type: string<date-time-rfc-2822>The date and time in GMT that the resource was created specified in RFC 2822 format.
date_updated
type: string<date-time-rfc-2822>The date and time in GMT that the resource was last updated specified in RFC 2822 format.
end_conference_on_exit
type: booleanWhether the conference ends when the participant leaves. Can be: true
or false
and the default is false
. If true
, the conference ends and all other participants drop out when the participant leaves.
start_conference_on_enter
type: booleanWhether the conference starts when the participant joins the conference, if it has not already started. Can be: true
or false
and the default is true
. If false
and the conference has not started, the participant is muted and hears background music until another participant starts the conference.
status
type: enum<string>The status of the participant's call in a session. Can be: queued
, connecting
, ringing
, connected
, complete
, or failed
.
queued
connecting
ringing
connected
complete
failed
queue_time
type: stringThe wait time in milliseconds before participant's call is placed. Only available in the response to a create participant request.
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Conferences/{ConferenceSid}/Participants.json
Creates a Participant resource with either a ConferenceSid
or FriendlyName
initiates an outbound call and adds a new participant to the active Conference with that ConferenceSid
or FriendlyName
.
If an active conference does not exist with your FriendlyName
, we create a new conference with that name and add the participant.
If a conference specified by ConferenceSid
is not active, the request fails.
Calls Per Second (CPS)
By default, each account is granted one CPS for calls created via POST
requests to the /Calls
endpoint. Inbound calls and <Dial>
calls are not limited by CPS.
Accounts with an approved Business Profile can update their CPS up to 30 in the Twilio Console.
In aggregate, calls are executed at the rate defined by the CPS. Individual calls may not execute at the anticipated rate — you may see individual seconds with more or fewer CPS, especially for bursty traffic — but over a month, the call execution rate will average the CPS rate set for that account or trunk.
Please do not use personally identifiable information (PII) such as phone numbers, email addresses, a person's name, or any other sensitive information when assigning a FriendlyName
to your conferences.
From
type: string<endpoint>RequiredThe phone number, Client identifier, or username portion of SIP address that made this call. Phone numbers are in E.164 format (e.g., +16175551212). Client identifiers are formatted client:name
. If using a phone number, it must be a Twilio number or a Verified outgoing caller id for your account. If the to
parameter is a phone number, from
must also be a phone number. If to
is sip address, this value of from
should be a username portion to be used to populate the P-Asserted-Identity header that is passed to the SIP endpoint.
To
type: string<endpoint>RequiredThe phone number, SIP address, or Client identifier that received this call. Phone numbers are in E.164 format (e.g., +16175551212). SIP addresses are formatted as sip:name@company.com
. Client identifiers are formatted client:name
. Custom parameters may also be specified.
StatusCallback
type: string<uri>The URL we should call using the status_callback_method
to send status information to your application.
StatusCallbackMethod
type: enum<http-method>The HTTP method we should use to call status_callback
. Can be: GET
and POST
and defaults to POST
.
GET
POST
StatusCallbackEvent
type: array[string]The conference state changes that should generate a call to status_callback
. Can be: initiated
, ringing
, answered
, and completed
. Separate multiple values with a space. The default value is completed
.
Label
type: stringA label for this participant. If one is supplied, it may subsequently be used to fetch, update or delete the participant.
Timeout
type: integerThe number of seconds that we should allow the phone to ring before assuming there is no answer. Can be an integer between 5
and 600
, inclusive. The default value is 60
. We always add a 5-second timeout buffer to outgoing calls, so value of 10 would result in an actual timeout that was closer to 15 seconds.
Record
type: booleanWhether to record the participant and their conferences, including the time between conferences. Can be true
or false
and the default is false
.
Muted
type: booleanWhether the agent is muted in the conference. Can be true
or false
and the default is false
.
Beep
type: stringWhether to play a notification beep to the conference when the participant joins. Can be: true
, false
, onEnter
, or onExit
. The default value is true
.
StartConferenceOnEnter
type: booleanWhether to start the conference when the participant joins, if it has not already started. Can be: true
or false
and the default is true
. If false
and the conference has not started, the participant is muted and hears background music until another participant starts the conference.
EndConferenceOnExit
type: booleanWhether to end the conference when the participant leaves. Can be: true
or false
and defaults to false
.
WaitUrl
type: string<uri>The URL we should call using the wait_method
for the music to play while participants are waiting for the conference to start. The default value is the URL of our standard hold music. Learn more about hold music.
WaitMethod
type: enum<http-method>The HTTP method we should use to call wait_url
. Can be GET
or POST
and the default is POST
. When using a static audio file, this should be GET
so that we can cache the file.
GET
POST
EarlyMedia
type: booleanWhether to allow an agent to hear the state of the outbound call, including ringing or disconnect messages. Can be: true
or false
and defaults to true
.
MaxParticipants
type: integerThe maximum number of participants in the conference. Can be a positive integer from 2
to 250
. The default value is 250
.
ConferenceRecord
type: stringWhether to record the conference the participant is joining. Can be: true
, false
, record-from-start
, and do-not-record
. The default value is false
.
ConferenceTrim
type: stringWhether to trim leading and trailing silence from the conference recording. Can be: trim-silence
or do-not-trim
and defaults to trim-silence
.
ConferenceStatusCallback
type: string<uri>The URL we should call using the conference_status_callback_method
when the conference events in conference_status_callback_event
occur. Only the value set by the first participant to join the conference is used. Subsequent conference_status_callback
values are ignored.
ConferenceStatusCallbackMethod
type: enum<http-method>The HTTP method we should use to call conference_status_callback
. Can be: GET
or POST
and defaults to POST
.
GET
POST
ConferenceStatusCallbackEvent
type: array[string]The conference state changes that should generate a call to conference_status_callback
. Can be: start
, end
, join
, leave
, mute
, hold
, modify
, speaker
, and announcement
. Separate multiple values with a space. Defaults to start end
.
RecordingChannels
type: stringThe recording channels for the final recording. Can be: mono
or dual
and the default is mono
.
RecordingStatusCallback
type: string<uri>The URL that we should call using the recording_status_callback_method
when the recording status changes.
RecordingStatusCallbackMethod
type: enum<http-method>The HTTP method we should use when we call recording_status_callback
. Can be: GET
or POST
and defaults to POST
.
GET
POST
Region
type: stringThe region where we should mix the recorded audio. Can be:us1
, ie1
, de1
, sg1
, br1
, au1
, or jp1
.
ConferenceRecordingStatusCallback
type: string<uri>The URL we should call using the conference_recording_status_callback_method
when the conference recording is available.
ConferenceRecordingStatusCallbackMethod
type: enum<http-method>The HTTP method we should use to call conference_recording_status_callback
. Can be: GET
or POST
and defaults to POST
.
GET
POST
RecordingStatusCallbackEvent
type: array[string]The recording state changes that should generate a call to recording_status_callback
. Can be: started
, in-progress
, paused
, resumed
, stopped
, completed
, failed
, and absent
. Separate multiple values with a space, ex: 'in-progress completed failed'
.
ConferenceRecordingStatusCallbackEvent
type: array[string]The conference recording state changes that generate a call to conference_recording_status_callback
. Can be: in-progress
, completed
, failed
, and absent
. Separate multiple values with a space, ex: 'in-progress completed failed'
Coaching
type: booleanWhether the participant is coaching another call. Can be: true
or false
. If not present, defaults to false
unless call_sid_to_coach
is defined. If true
, call_sid_to_coach
must be defined.
CallSidToCoach
type: SID<CA>The SID of the participant who is being coached
. The participant being coached is the only participant who can hear the participant who is coaching
.
JitterBufferSize
type: stringJitter buffer size for the connecting participant. Twilio will use this setting to apply Jitter Buffer before participant's audio is mixed into the conference. Can be: off
, small
, medium
, and large
. Default to large
.
Byoc
type: SID<BY>The SID of a BYOC (Bring Your Own Carrier) trunk to route this call with. Note that byoc
is only meaningful when to
is a phone number; it will otherwise be ignored. (Beta)
CallerId
type: stringThe phone number, Client identifier, or username portion of SIP address that made this call. Phone numbers are in E.164 format (e.g., +16175551212). Client identifiers are formatted client:name
. If using a phone number, it must be a Twilio number or a Verified outgoing caller id for your account. If the to
parameter is a phone number, callerId
must also be a phone number. If to
is sip address, this value of callerId
should be a username portion to be used to populate the From header that is passed to the SIP endpoint.
CallReason
type: stringThe Reason for the outgoing call. Use it to specify the purpose of the call that is presented on the called party's phone. (Branded Calls Beta)
RecordingTrack
type: stringThe audio track to record for the call. Can be: inbound
, outbound
or both
. The default is both
. inbound
records the audio that is received by Twilio. outbound
records the audio that is sent from Twilio. both
records the audio that is received and sent by Twilio.
TimeLimit
type: integerThe maximum duration of the call in seconds. Constraints depend on account and configuration.
MachineDetection
type: stringWhether to detect if a human, answering machine, or fax has picked up the call. Can be: Enable
or DetectMessageEnd
. Use Enable
if you would like us to return AnsweredBy
as soon as the called party is identified. Use DetectMessageEnd
, if you would like to leave a message on an answering machine. For more information, see Answering Machine Detection.
MachineDetectionTimeout
type: integerThe number of seconds that we should attempt to detect an answering machine before timing out and sending a voice request with AnsweredBy
of unknown
. The default timeout is 30 seconds.
MachineDetectionSpeechThreshold
type: integerThe number of milliseconds that is used as the measuring stick for the length of the speech activity, where durations lower than this value will be interpreted as a human and longer than this value as a machine. Possible Values: 1000-6000. Default: 2400.
MachineDetectionSpeechEndThreshold
type: integerThe number of milliseconds of silence after speech activity at which point the speech activity is considered complete. Possible Values: 500-5000. Default: 1200.
MachineDetectionSilenceTimeout
type: integerThe number of milliseconds of initial silence after which an unknown
AnsweredBy result will be returned. Possible Values: 2000-10000. Default: 5000.
AmdStatusCallback
type: string<uri>The URL that we should call using the amd_status_callback_method
to notify customer application whether the call was answered by human, machine or fax.
AmdStatusCallbackMethod
type: enum<http-method>The HTTP method we should use when calling the amd_status_callback
URL. Can be: GET
or POST
and the default is POST
.
GET
POST
Trim
type: stringWhether to trim any leading and trailing silence from the participant recording. Can be: trim-silence
or do-not-trim
and the default is trim-silence
.
CallToken
type: stringA token string needed to invoke a forwarded call. A call_token is generated when an incoming call is received on a Twilio number. Pass an incoming call's call_token value to a forwarded call via the call_token parameter when creating a new call. A forwarded call should bear the same CallerID of the original incoming call.
Creates a Participant in a Conference. If this ConferenceSid is not an active conference, the request will fail.
Answering Machine Detection on requires Enhanced Programmable SIP Features to be enabled on the account.
Only applies to Twilio Voice Client or SIP endpoints
Custom parameters can be passed to the specified client id or SIP endpoint in the to
field using query string notation, e.g.
client:alice?mycustomparam1=foo&mycustomparam2=bar
GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Conferences/{ConferenceSid}/Participants/{CallSid}.json
Returns a Participant resource from an active Conference, specified by the Conference SID and the Participant's Call SID or label.
The Participant resource only manages active participants of in-progress Conferences.
If you want to get a list of all conference participants over the course of a conference, use the Conference's statusCallback
to receive webhooks for each participant joining the conference and store the details in your application.
AccountSid
type: SID<AC>The SID of the Account that created the Participant resource to fetch.
ConferenceSid
type: SID<CF>The SID of the conference with the participant to fetch.
GET https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Conferences/{ConferenceSid}/Participants.json
Returns the list of active participants in the conference identified by ConferenceSid
.
AccountSid
type: SID<AC>The SID of the Account that created the Participant resources to read.
ConferenceSid
type: SID<CF>The SID of the conference with the participants to read.
Muted
type: booleanWhether to return only participants that are muted. Can be: true
or false
.
Hold
type: booleanWhether to return only participants that are on hold. Can be: true
or false
.
Coaching
type: booleanWhether to return only participants who are coaching another call. Can be: true
or false
.
PageSize
type: integerHow many resources to return in each list page. The default is 50, and the maximum is 1000.
POST https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Conferences/{ConferenceSid}/Participants/{CallSid}.json
Updates the status of a participant in an active conference.
AccountSid
type: SID<AC>The SID of the Account that created the Participant resources to update.
ConferenceSid
type: SID<CF>The SID of the conference with the participant to update.
CallSid
type: stringThe Call SID or label of the participant to update. Non URL safe characters in a label must be percent encoded, for example, a space character is represented as %20.
Muted
type: booleanWhether the participant should be muted. Can be true
or false
. true
will mute the participant, and false
will un-mute them. Anything value other than true
or false
is interpreted as false
.
Hold
type: booleanWhether the participant should be on hold. Can be: true
or false
. true
puts the participant on hold, and false
lets them rejoin the conference.
HoldUrl
type: string<uri>The URL we call using the hold_method
for music that plays when the participant is on hold. The URL may return an MP3 file, a WAV file, or a TwiML document that contains <Play>
, <Say>
, <Pause>
, or <Redirect>
verbs.
HoldMethod
type: enum<http-method>The HTTP method we should use to call hold_url
. Can be: GET
or POST
and the default is GET
.
GET
POST
AnnounceUrl
type: string<uri>The URL we call using the announce_method
for an announcement to the participant. The URL may return an MP3 file, a WAV file, or a TwiML document that contains <Play>
, <Say>
, <Pause>
, or <Redirect>
verbs.
AnnounceMethod
type: enum<http-method>The HTTP method we should use to call announce_url
. Can be: GET
or POST
and defaults to POST
.
GET
POST
WaitUrl
type: string<uri>The URL we call using the wait_method
for the music to play while participants are waiting for the conference to start. The URL may return an MP3 file, a WAV file, or a TwiML document that contains <Play>
, <Say>
, <Pause>
, or <Redirect>
verbs. The default value is the URL of our standard hold music. Learn more about hold music.
WaitMethod
type: enum<http-method>The HTTP method we should use to call wait_url
. Can be GET
or POST
and the default is POST
. When using a static audio file, this should be GET
so that we can cache the file.
GET
POST
BeepOnExit
type: booleanWhether to play a notification beep to the conference when the participant exits. Can be: true
or false
.
EndConferenceOnExit
type: booleanWhether to end the conference when the participant leaves. Can be: true
or false
and defaults to false
.
Coaching
type: booleanWhether the participant is coaching another call. Can be: true
or false
. If not present, defaults to false
unless call_sid_to_coach
is defined. If true
, call_sid_to_coach
must be defined.
CallSidToCoach
type: SID<CA>The SID of the participant who is being coached
. The participant being coached is the only participant who can hear the participant who is coaching
.
Plays the audio file at the announce_url for the participant
DELETE https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Conferences/{ConferenceSid}/Participants/{CallSid}.json
Deletes the Participant resource to remove the participant from the conference. Returns HTTP 204 (No Content) with no body if the participant was successfully removed from the conference.
AccountSid
type: SID<AC>The SID of the Account that created the Participant resources to delete.
ConferenceSid
type: SID<CF>The SID of the conference with the participants to delete.
Explore Voice Insights with its Conference Insights Event Stream and Conference Insights REST API which allow you to see conference parameters, investigate participant event timelines, and understand detected quality issues.