Add a participant to a call
Dials one of your app users or a phone number into a call that is in a conference room, and answers with the participant's own call record. The participant is a call of their own: it has its own id, can be looked up and hung up, and is billed and reported through call.completed and call.failed like any other call. Every participant needs a payment method on file and a positive balance. A phone participant is called from caller_id, which must be one of your numbers, or from the call's owning number when omitted, and needs a destination you may call. Only a call your answer connected to a conference can take participants: a call connected to a user or a number answers 409.
id*stringThe call id from the route, as carried by call webhooks and the calls list, for example call_9f2ab000-0000-4000-8000-000000000001
Idempotency-Key?stringUnique key to ensure idempotent request processing. Must be 1-255 alphanumeric characters, hyphens, or underscores. Responses are cached for 24 hours per key per customer.
^[a-zA-Z0-9_-]+$length <= 255x-profile-id?stringProfile UUID to scope the request to a child profile. Only organization API keys can use this header. The profile must belong to the calling organization.
uuidapplication/json- body
Request to add a participant to one of your live calls
sandbox?booleanSandbox flag - when true, the operation is simulated without side effects Useful for testing integrations without actual execution
to*Who to add: one of your app users, or a phone number
caller_id?|The number shown to a phone participant as the caller, in E.164 format. Must be one of your numbers. The call's owning number when omitted
The participant is being dialed; the body is their call record
application/json- response
Standard API response envelope for all v3 endpoints
success?booleanIndicates whether the request was successful
data?|nullThe response data (null if error)
error?|nullError details (null if successful)
meta?Metadata about the request and response
curl -X POST 'https://api.sent.dm/v3/voice/calls/call_9f2ab000-0000-4000-8000-000000000001/participants' \ -H 'Idempotency-Key: req_abc123_retry1' \ -H 'Content-Type: application/json' \ -d '{ "to": { "kind": "number", "value": "+14155551234" }, "caller_id": "+12025550123", "sandbox": false}'{ "success": true, "data": { "id": "call_9f2ab000-0000-4000-8000-000000000002", "mode": "inapp", "agent_id": null, "direction": "outbound", "from": { "kind": "conference", "value": "daily-standup" }, "to": { "kind": "number", "value": "+14155551234" }, "number": "+12025550123", "connected_number": null, "caller_id_used": null, "status": "INITIATED", "failure_reason": null, "started_at": "2026-07-22T12:00:00+00:00", "answered_at": null, "ended_at": null, "duration_seconds": null, "price": null, "legs": null, "recording_available": false, "timeline": null }, "error": null, "meta": { "request_id": "req_7X9zKp2jDw", "timestamp": "2026-11-12T15:32:26.4089876+00:00", "version": "v3" }}List a call's recordings GET
Returns pre-signed links to the recordings of one of your calls, each valid until its url_expires_at. A recording appears once the call was recorded, by a connect answer with record set, a startRecording instruction or the recordings command, and the call.recording_ready webhook has been sent; until then, and for a call that was never recorded, the list is empty. A call recorded more than once lists every recording, oldest first, each under the recording_id its call.recording_ready webhook carried.
List the participants of a call GET
Lists who is in the conference room one of your live calls is in: each participant's own call id, who they are, whether the room mutes them, and how long they have been connected. The call itself is one of the participants. Use a participant's id to mute or remove them; it is also a call id, so GET /v3/voice/calls/{id} accepts it. A call that has ended answers 409, as does a call that is not in a conference.