Skip to main content

Recordings

The Recordings module manages audio files for IVR prompts, announcements, and other PBX audio.

Purpose

Use this module to:

  • Upload audio files to MinIO storage
  • Reference external audio URLs
  • Manage file metadata
  • Generate secure download links

Recording Types

TypeStorageAccess
UploadMinIO bucket (recordings/{org_id}/{random}_{name}.{ext})Encrypted token or HMAC-signed URL
RemoteExternal URL referenceDirect URL

Upload Security

The upload pipeline validates every file:

  1. Size validation (configurable, default 5 MB)
  2. MIME whitelist (audio/mpeg, audio/wav)
  3. Extension whitelist (.mp3, .wav)
  4. Binary file signature verification
  5. Script injection detection
  6. Filename sanitization

Permissions

Recordings are generally Owner/Admin-only.

ActionOwnerPBX AdminPBX UserReporter
View recordingsYesYesNoNo
Create recordingsYesYesNoNo
Update recordingsYesYesNoNo
Delete recordingsYesYesNoNo

UI Workflow

Upload a Recording

  1. Navigate to Recordings in the sidebar
  2. Click Upload Recording
  3. Enter a name
  4. Choose the file or enter a remote URL
  5. Save

Use a Recording in an IVR Menu

  1. Open the IVR menu editor
  2. Select Recording as the audio source
  3. Choose the uploaded recording from the dropdown
  4. Save the menu

Key Data Fields

recordings Table

ColumnTypeNotes
idbigintPrimary key
organization_idFKTenant scope
namestringDisplay name
typeenumupload, remote
file_pathstring nullableMinIO path
original_urlstring nullableRemote URL
mime_typestring nullable
sizeinteger nullableBytes
durationinteger nullableSeconds
MethodEndpointPurpose
GET/POST/PUT/DELETE/v1/recordings[/{recording}]Standard CRUD
GET/v1/recordings/{recording}/downloadGenerate access token
GET/v1/recordings/secure-downloadServe file via token
GET/storage/recordings/{path}Public HMAC-signed access (for Cloudonix)

See the OPBX REST API reference for full schemas.