Call Lifecycle
Request states
Section titled “Request states”The status property describes the overall call request.
| Status | Meaning | Final? |
|---|---|---|
queued |
Waiting to be dispatched. | No |
dispatching |
The system is starting the call. | No |
active |
The request is being handled by the calling system. | No |
completed |
Processing finished. Inspect outcome for the attempt result. |
Yes |
failed |
The request could not complete successfully. | Yes |
canceled |
The request was canceled. | Yes |
Calls can move through states quickly; polling may skip intermediate states. Automatic attempts, when configured by the platform, can affect the final timing.
Attempt outcomes
Section titled “Attempt outcomes”The outcome property refers to the latest attempt and can be null before an outcome is available. Common values include completed, failed, busy, no_answer, canceled, and interrupted.
Use both status and outcome. answeredAt and talkDurationSec provide additional context. An answered or completed call does not prove a user has verified an OTP; your application must validate the submitted code separately.
Suggested integration flow
Section titled “Suggested integration flow”- Generate an OTP and an application verification ID.
- Submit the call with that ID as the idempotency key.
- Store
callIdalongside your verification record. - Poll Get Call Status until a final state or your polling deadline.
- Keep OTP expiry, resend timing, and verification attempt limits in your application.