Base URL
All API requests are made to:Test and live environments are completely isolated. Data created in sandbox does not exist in production.
Authentication
Authenticate requests using Bearer tokens in theAuthorization header:
API Key Types
| Type | Prefix | Lifespan | Use Case |
|---|---|---|---|
| Secret Key | sk_live_, sk_test_ | Long-lived | Server-side API access |
| Restricted Key | rk_live_, rk_test_ | Long-lived | Limited-scope server access |
| Device Token | dtok_ | Hours/days | Device authentication |
| Upload Token | up_ | Minutes | Single file upload |
Request Format
Headers
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer token: Bearer sk_live_... |
Content-Type | For POST/PUT | application/json |
Idempotency-Key | Recommended | Unique key for safe retries |
Bota-Version | Optional | API version date (e.g., 2025-01-15) |
Request Body
Send JSON in the request body for POST and PUT requests:Response Format
All responses return JSON with consistent structure.Success Response
List Response
List endpoints return paginated results:Error Response
HTTP Status Codes
| Code | Description |
|---|---|
200 | Success |
201 | Created |
204 | No content (successful deletion) |
400 | Bad request — invalid parameters |
401 | Unauthorized — invalid or missing API key |
403 | Forbidden — insufficient permissions |
404 | Not found |
409 | Conflict — resource already exists |
422 | Unprocessable — validation error |
429 | Rate limited |
500 | Server error |
Pagination
List endpoints support cursor-based pagination:| Parameter | Type | Description |
|---|---|---|
limit | integer | Items per page (default: 20, max: 100) |
cursor | string | Cursor from previous response |
Rate Limits
The API enforces rate limits to ensure fair usage:| Limit | Value |
|---|---|
| Requests per second | 100 |
| Requests per minute | 1,000 |
| Concurrent uploads | 10 |
Idempotency
For safe retries, include anIdempotency-Key header on POST requests:
Versioning
The API uses date-based versioning. Specify a version to pin your integration:Environments
| Environment | Base URL | API Keys | Purpose |
|---|---|---|---|
| Production | api.bota.dev | sk_live_* | Live data, billed usage |
| Sandbox | api.sandbox.bota.dev | sk_test_* | Testing, simulated processing |
- Transcriptions complete instantly with simulated results
- No billing or usage charges
- Data may be cleared periodically
Core Resources
The API is organized around these resources:End Users
People who wear devices. Create, list, and delete end users with external ID mapping.
Devices
Physical wearables. Register devices, bind to users, track fleet status.
Recordings
Captured conversations. Create entries, upload audio, track processing status.
Uploads
Audio file ingestion. Get pre-signed URLs for direct S3 upload.
Transcriptions
Speech-to-text processing. Start jobs, get results with speaker diarization.
Summaries
AI-generated summaries. Create summaries from transcriptions.
Webhooks
Event notifications. Register endpoints for real-time updates.
SDKs & Tools
OpenAPI Spec
Download the OpenAPI 3.0 specification for code generation
Postman Collection
Import our Postman collection for interactive testing
- Node.js / TypeScript
- Python
- Go

