Prerequisites
A Bota account with API access — Sign up here
Your project API key from the dashboard
- Test key (
sk_test_...) — Use in sandbox for development - Live key (
sk_live_...) — Use in production
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.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.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.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.Step 5: Upload Audio
Upload audio in three steps: get a pre-signed URL, upload the file, then mark complete.5a. Get Upload URL
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.pending to uploaded.
Step 6: Transcribe
Start an async transcription job. Transcription typically takes 10-30% of the audio duration.Step 7: Get Results
Poll the transcription endpoint until status iscompleted, or use webhooks for real-time notifications.
Option A: Polling
Option B: Webhooks (Recommended)
Configure a webhook endpoint to receive notifications when transcription completes. See the Webhooks Guide for setup instructions.Transcription Result
Common Integration Patterns
Mobile App Integration
Mobile App Integration
Your mobile app handles BLE pairing and audio sync using our SDK. Your backend handles Bota API calls.
- User logs into your app (your auth)
- App pairs with device via Bluetooth using the React Native SDK
- App requests upload URL from your backend
- Your backend calls Bota API with secret key
- SDK uploads audio directly to S3 with retry logic
- Your backend triggers transcription
- Webhook notifies your backend when complete
Lazy vs Eager EndUser Creation
Lazy vs Eager EndUser Creation
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.
Handling Device Reassignment
Handling Device Reassignment
When a user leaves or device changes hands:
- Unbind the device:
POST /devices/{id}/unbind - Optionally delete old recordings
- Bind to new user:
POST /devices/{id}/bind

