Start or stop recording a call
Starts or stops recording one of your live calls. Use start to begin recording mid-call, or stop to end a recording, whether it was started here or by a connect answer with record set. A call that has already ended answers 409, and so does a call with no phone leg, such as one between two app users, which can't be recorded.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v3/calls/call_9f2ab000-0000-4000-8000-000000000001/recordings" \ -H "Idempotency-Key: req_abc123_retry1" \ -H "Content-Type: application/json" \ -d '{ "action": "start", "sandbox": false }'{
"success": false,
"data": null,
"error": {
"code": "VALIDATION_001",
"message": "Request validation failed",
"details": {
"action": [
"'action' must be one of: start, stop"
]
},
"doc_url": "https://docs.sent.dm/reference/api/error-catalog"
},
"meta": {
"request_id": "req_7X9zKp2jDw",
"timestamp": "2026-10-06T09:10:22.7132273+00:00",
"version": "v3"
}
}{
"success": false,
"data": null,
"error": {
"code": "BUSINESS_026",
"message": "Call recording is not available",
"details": null,
"doc_url": "https://docs.sent.dm/reference/api/error-catalog"
},
"meta": {
"request_id": "req_7X9zKp2jDw",
"timestamp": "2026-10-06T09:10:22.7132283+00:00",
"version": "v3"
}
}{
"success": false,
"data": null,
"error": {
"code": "RESOURCE_015",
"message": "Call not found",
"details": null,
"doc_url": "https://docs.sent.dm/reference/api/error-catalog"
},
"meta": {
"request_id": "req_7X9zKp2jDw",
"timestamp": "2026-10-06T09:10:22.7132288+00:00",
"version": "v3"
}
}{
"success": false,
"data": null,
"error": {
"code": "CONFLICT_008",
"message": "Call is no longer active",
"details": null,
"doc_url": "https://docs.sent.dm/reference/api/error-catalog"
},
"meta": {
"request_id": "req_7X9zKp2jDw",
"timestamp": "2026-10-06T09:10:22.7132291+00:00",
"version": "v3"
}
}{
"success": false,
"data": null,
"error": {
"code": "INTERNAL_001",
"message": "An unexpected error occurred while changing the recording",
"details": null,
"doc_url": "https://docs.sent.dm/reference/api/error-catalog"
},
"meta": {
"request_id": "req_7X9zKp2jDw",
"timestamp": "2026-10-06T09:10:22.7132302+00:00",
"version": "v3"
}
}Hang up a call POST
Ends one of your live calls. The call then ends the way any other call does: its status moves to completed and call.completed is sent once the disconnect is reported. A call that has already ended answers 409, and so does a call with no phone leg, such as one between two app users.
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.