Every Twilio call has a Status value which describes the current state of the call. The call Status may change over the course of the call, and it's value is submitted to your server in realtime with each TwiML request Twilio makes to your server.
When placing calls with the REST API this is a typical sequence of Status values:
queuedAll new calls are created with a status of
queued, indicating Twilio has received your request to create the call
initiatedTwilio has dialed the call
ringingThe destination number has started ringing
in-progressThe call has been answered
completedAfter an answered call ends it has a
completedstatus. Since the call is over the Status will always remain in this state
Although the above represents a common call flow, other Status values are possible:
busyTwilio dialed the number and received a busy signal
no-answerTwilio dialed the number but no one answered before the Timeout value elapsed
canceledThe call was canceled using the REST API
failedTwilio's carriers could not connect the call, most likely because the phone number was entered incorrectly
If a call has a Status of
canceled, you should not be charged for the call. If a call is
completed, you will be charged.
completed indicates that a connection was established and audio data was transferred. Most of the time this means that someone answered the phone, but it could also mean that the a connection was made to a voicemail system, or that something else happened that required the transfer of audio.
The documentation also provides a list of the possible values for the Status parameter.
If you want to track the status of your outbound calls, you can use the
StatusCallbackEvent parameter to get notifications back to your application every time a call moves to a different status. See our FAQ for more information.