SMAO API Documentation
Public APICalls & recordings

Permanently delete the call recording

Irreversible. Erases every audio artifact of the call from object storage — the master recording, both channel recordings, the playback transcode and the waveform data — and reports success only after the deletion has been verified. The call itself is kept: transcript, analyses, notes, metadata and diagnostics are untouched, and the call keeps appearing in GET /calls.

Afterwards recording.available on the call is false and GET /calls/{call_id}/recording returns 404.

Requires an API key whose role carries the call_logs.call_recording delete permission; keys without it receive 403. Repeating the call on an already-erased recording succeeds without changing anything, and a call that never had a recording returns 404. A call that is still running, or whose recording is still being processed, is rejected with 409 — retry once the call has ended. A 500 means the audio was not fully removed and nothing was changed; the recording stays downloadable and the call is safe to retry.

DELETE
/calls/{call_id}/recording
AuthorizationBearer <token>

API key in the Authorization: Bearer <key> header. Keys are created in the SMAO dashboard (Settings → API Keys).

In: header

Path Parameters

call_idstring
Match^[a-f0-9]{24}$

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X DELETE "https://api.smao.ai/api/v1/calls/65f8fa6f1a9d8e0012ab34cd/recording"
{
  "data": {}
}
{
  "error": {
    "code": "validation_failed",
    "message": "Validation failed"
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "Missing API key"
  }
}
{
  "error": {
    "code": "subscription_required",
    "message": "This feature is not available in your current subscription. Please upgrade to a higher plan"
  }
}
{
  "error": {
    "code": "forbidden",
    "message": "No permission"
  }
}
{
  "error": {
    "code": "not_found",
    "message": "Not found"
  }
}
{
  "error": {
    "code": "conflict",
    "message": "Group is assigned to an assistant"
  }
}
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded"
  }
}
{
  "error": {
    "code": "internal_error",
    "message": "An unexpected error occurred."
  }
}