Skip to main content
This guide walks you through the complete flow: creating an end user, registering a device, uploading audio, and getting a transcript. By the end, you’ll understand how to integrate Bota into your application.

Prerequisites

A Bota account with API access — Sign up here
Your project API key from the dashboard
You’ll need your API key (sk_live_...) from the dashboard.

Step 1: Create an End User

End users represent the people who wear your devices. They don’t log into Bota — they exist in your project to associate recordings with the right person.
Response:
The external_id lets you link Bota end users to users in your system. Store a mapping between external_id and the Bota id for lookups.

Step 2: Register a Device

Register the wearable device using its serial number. The serial number is printed on the device or packaging.
Response:

Step 3: Bind Device to User

Associate the device with the end user. A device can only be bound to one user at a time.
The device status changes from unbound to bound, and all future recordings are automatically associated with this end user.

Step 4: Create a Recording

When the device captures audio, create a recording entry in Bota. This returns a recording ID you’ll use for upload and transcription.
Response:

Step 5: Upload Audio

Upload audio in three steps: get a pre-signed URL, upload the file, then mark complete.

5a. Get Upload URL

Response:

5b. Upload to S3

Upload directly to the pre-signed URL. This bypasses the Bota API for faster uploads.

5c. Mark Upload Complete

Tell Bota the upload finished. This triggers validation and updates the recording status.
The recording status changes from pending to uploaded.

Step 6: Transcribe

Start an async transcription job. Transcription typically takes 10-30% of the audio duration.
Response:

Step 7: Get Results

Poll the transcription endpoint until status is completed, or use webhooks for real-time notifications.

Option A: Polling

Configure a webhook endpoint to receive notifications when transcription completes. See the Webhooks Guide for setup instructions.

Transcription Result

Common Integration Patterns

Your mobile app handles Bluetooth pairing and audio sync using our SDK. Your backend handles Bota API calls.
  1. User logs into your app (your auth)
  2. App connects through the Bota App SDK and verifies the device’s exact serial
  3. App requests upload URL from your backend
  4. Your backend calls Bota API with secret key
  5. SDK uploads audio to scoped storage; the host completion callback waits for backend acknowledgement before native cleanup or device confirmation. Restart recovery needs the documented scoped host integration.
  6. After verified upload completion, your backend creates a transcription with POST /v1/transcriptions if automatic transcription is disabled
  7. Webhook notifies your backend when complete
Start with the independent examples. The connection samples are read-only. The repository’s legacy app/backend pair has compatibility and local-only authentication limits; a target-complete recording-sync replacement is not yet available.
Lazy (Recommended): Create Bota EndUser on first device pairing. Simpler, no unused records.Eager: Create Bota EndUser at signup. Faster first device pairing, but requires cleanup if user never pairs.
When a user leaves or device changes hands:
  1. Unbind the device: POST /devices/{id}/unbind
  2. Optionally delete old recordings
  3. Bind to new user: POST /devices/{id}/bind
Device tokens are automatically rotated on unbind.

What’s Next?

Client SDKs

React Native SDK for mobile app integration

Set Up Webhooks

Get real-time notifications instead of polling

Authentication Deep Dive

Learn about API key types and security best practices

API Reference

Explore the complete API documentation