Skip to main content
POST
/
recordings
curl -X POST https://api.bota.dev/v1/recordings \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "device_id": "dev_abc123",
    "started_at": "2025-01-15T09:00:00Z",
    "ended_at": "2025-01-15T09:30:00Z",
    "metadata": {
      "meeting_type": "interview",
      "location": "office"
    }
  }'
{
  "id": "rec_abc123",
  "device_id": "dev_abc123",
  "end_user_id": "eu_xyz789",
  "status": "pending",
  "duration_ms": null,
  "file_size_bytes": null,
  "mime_type": null,
  "started_at": "2025-01-15T09:00:00Z",
  "ended_at": "2025-01-15T09:30:00Z",
  "transcription_id": null,
  "metadata": {
    "meeting_type": "interview",
    "location": "office"
  },
  "created_at": "2025-01-15T10:00:00Z",
  "uploaded_at": null
}
Create a recording to represent a captured conversation. After creation, use the upload endpoints to upload the audio file.
device_id
string
required
ID of the device that captured (or will capture) the recording.
end_user_id
string
ID of the end user. Defaults to the device’s currently bound user if not specified.
started_at
string
ISO 8601 timestamp of when the recording started (device time).
ended_at
string
ISO 8601 timestamp of when the recording ended (device time).
metadata
object
Arbitrary key-value metadata (e.g., meeting type, location).
curl -X POST https://api.bota.dev/v1/recordings \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "device_id": "dev_abc123",
    "started_at": "2025-01-15T09:00:00Z",
    "ended_at": "2025-01-15T09:30:00Z",
    "metadata": {
      "meeting_type": "interview",
      "location": "office"
    }
  }'
{
  "id": "rec_abc123",
  "device_id": "dev_abc123",
  "end_user_id": "eu_xyz789",
  "status": "pending",
  "duration_ms": null,
  "file_size_bytes": null,
  "mime_type": null,
  "started_at": "2025-01-15T09:00:00Z",
  "ended_at": "2025-01-15T09:30:00Z",
  "transcription_id": null,
  "metadata": {
    "meeting_type": "interview",
    "location": "office"
  },
  "created_at": "2025-01-15T10:00:00Z",
  "uploaded_at": null
}

Recording Status

StatusDescription
pendingRecording created, awaiting audio upload
uploadedAudio uploaded, ready for transcription
processingTranscription in progress
completedTranscription complete
failedProcessing failed

Next Steps

After creating a recording:
  1. Get an upload URL
  2. Upload audio to the pre-signed S3 URL
  3. Mark upload complete
  4. Trigger transcription