Skip to main content

Mobile SDKs

Mobile SDKs handle BLE device communication, audio transfer, and upload to Bota’s API.

React Native

The official React Native SDK for integrating Bota devices into your mobile app.
npm install @bota-dev/react-native-sdk

npm Package

@bota-dev/react-native-sdk

GitHub

Source code and documentation
Features:
  • Device discovery and BLE connection
  • Automatic reconnection by serial number
  • Device provisioning with tokens
  • Recording transfer from device (batch sync)
  • Streaming sync — upload audio via BLE while device is still recording
  • Background upload queue with retry
  • Battery and storage monitoring
  • WiFi network scanning and configuration (for WiFi-capable devices)
Peer Dependencies:
  • react >= 18.0.0
  • react-native >= 0.72.0
  • react-native-ble-plx ^3.0.0
  • @react-native-async-storage/async-storage ^1.21.0
  • react-native-wifi-reborn >= 4.0.0 (optional — for WiFi scanning)
Quick Start:
import { BotaClient } from '@bota-dev/react-native-sdk';

// Initialize
BotaClient.configure({ logLevel: 'info' });

// Scan for devices
BotaClient.devices.startScan();
BotaClient.devices.on('deviceDiscovered', (device) => {
  console.log('Found:', device.name);
});

// Connect and provision
const connected = await BotaClient.devices.connect(device);
await BotaClient.devices.provision(connected, deviceToken, 'production');

// Reconnect to a previously paired device
const device = await BotaClient.devices.reconnect(serialNumber);

// Batch sync completed recordings
for await (const progress of BotaClient.recordings.syncRecording(connected, recording, uploadInfo)) {
  console.log('Progress:', progress.stage, progress.progress);
}

// Stream the current in-progress recording (live upload via BLE)
const session = BotaClient.recordings.startStreamingSync(connected, recordingUuid, uploadInfoProvider);
session.on('chunk', (p) => console.log(`Streaming: ${p.bytesReceived} bytes`));
session.on('completed', (result) => console.log('Done:', result.recordingId));
session.on('disconnected', () => console.log('BLE dropped, batch sync will recover'));
Streaming sync uploads audio from the device while it’s still recording. If BLE disconnects, the recording is safe on the device’s SD card and batch sync picks it up later. See the Streaming Upload guide for details.

iOS (Coming Soon)

Native Swift SDK for iOS apps.

Android (Coming Soon)

Native Kotlin SDK for Android apps.

Server SDKs

Server SDKs for backend integration with the Bota API.

Node.js / TypeScript (Coming Soon)

Python (Coming Soon)

Go (Coming Soon)

Example Apps

Complete example applications demonstrating SDK integration.

Examples Repository

Full working examples including React Native app with device pairing, recording sync, and backend integration.

Using the OpenAPI Spec

Until official server SDKs are published, you can generate clients from our OpenAPI specification:
# Download the spec
curl -O https://docs.bota.dev/api-reference/openapi.json

# Generate using openapi-generator
openapi-generator generate -i openapi.json -g typescript-fetch -o ./bota-client
Tools like openapi-generator or Speakeasy work well with our spec.