Skip to main content

October 4, 2026 — Project firmware release policies

Firmware release selection is independent per project and model. Shared artifacts retain their identity; a sibling project’s choice no longer authorizes downloads or updates. Operators explicitly select versions in each project. Versioned target policies preserve explicit stopped decisions and reject unknown targeting semantics. See Firmware Updates.

October 4, 2026 — Platform firmware release selection

The initial organization/model selection gate below was superseded by project policies above. It required an explicit organization/model release selection before an OTA service publication becomes available to users or devices. Operators can release an available version or stop it; newer upstream publications do not change the selection. Existing imported versions require an explicit decision after the rollout. See Firmware Updates.

October 4, 2026 — Model-based firmware catalogue

OTA catalogue integration uses stable model IDs without requiring hardware revision. Existing fw_* API IDs remain organization-scoped; service state and compatibility are rechecked before delivery. Download metadata adds version; service releases add release_sequence and allow_downgrade. Production checks verified internal/external project discovery, exact target versions, download hashes and cross-project access denial. Physical installation and full firmware-integrity qualification remain separate. Stay up to date with the latest improvements, new features, and bug fixes across the Bota platform.

October 4, 2026 — Device command documentation corrections

  • Clarified that factory reset uses the dedicated Reset Device endpoint, while ordinary command creation accepts only start/stop recording and trigger upload.
  • Corrected offline command admission and documented the reset binding-generation fence and durable completion boundary.

October 3, 2026 — App SDK beta.12 encrypted-v2 recovery fixes

  • Synchronized beta.12 publication, public native consumers and exact Flutter archive verification passed in the release workflow.
  • App SDK beta.12 fixes Android’s manifest/EOF handling after accepting a checkpoint whose ciphertext is already complete, which previously failed with unexpected_event.
  • Android and Apple receivers now validate packet numbering per resumed transport attempt for both partial and complete checkpoints. Full-file and manifest hashes, EOF sequence and the exact signed receipt remain required before device cleanup.
  • Rebuild and release the native application to install these fixes. Existing v2 backend proxies keep their current API contract; legacy-only integrations still need the v2 routes and scoped recovery wiring.
  • Publication polling remains bounded. Apps must trigger the next sync after an unfinished attempt, including on reconnect/restart. SDK publication does not enable firmware rollout or qualify every physical interruption case. One Android Demo restart test recovered an already-published retained recording with its original cloud identity/hash/receipt and cleared local recovery state and the device pending count. Apple hardware and broader interruption cases remain unverified; this test did not measure PUT counts. See Client SDKs.

October 2, 2026 — Encrypted v2 recovery and App SDK beta.11

  • Published React Native App SDK beta.11 adds createEncryptedUploadV2Backend for iOS/Android: configured customer backend, fresh scoped app credentials, native session journaling, manifest replay and verification polling. Native app rebuild and reconnect/scope wiring are required. The synchronized five-platform release passed publication and public consumer checks.
  • Direct firmware retries transient completion failures with capped backoff, retaining work while another upload or Bluetooth temporarily blocks it.
  • Recovery replays the saved manifest before another PUT. The backend adds 409 encrypted_upload_v2_staging_missing only for confirmed object absence, recovers completed queue jobs whose database sessions still need processing, and logs terminal verification failures with session/owner identifiers.
  • Verification remains asynchronous; device deletion still requires a valid, durably accepted signed receipt. The backend fix is deployed in dev, gamma and production. Firmware retry source is merged; fleet rollout and physical interruption checks remain separate. See Encrypted Upload v2.

October 2, 2026 — Recording download and transcript-search examples

  • Added a Node.js recording download example for original stored bytes, with scoped metadata checks, bounded downloads, credential isolation and no local file overwrite.
  • Added a Node.js transcript-search example for timestamped excerpts, a configured end user, optional recording selection and ownership checks. It does not generate an answer or create an Ask session.

October 2, 2026 — Paginated recording-list example

  • Added a Node.js recording-list example using the public API, an optional end-user filter and bounded cursor pagination. It prints selected metadata without fetching audio or modifying recordings.
  • Corrected the pagination guide’s JavaScript loop so its page variable remains in scope, and added HTTP failure, timeout and non-advancing-cursor checks.

October 2, 2026 — Summary and recording-catalog examples

  • Added an independent Node.js summary example for a completed transcription. It retains creation intent and the summary ID, then resumes with status reads instead of blindly creating another job.
  • Clarified same-template summary replacement and recovery. A new create request can replace an existing result; polling a saved ID is the continuation path. This documents existing behavior, not a new API guarantee.
  • Added a native Android recording-catalog example using public App SDK beta.10. It verifies the physical serial and lists legacy and encrypted-v2 metadata. It does not transfer audio, confirm deletion, bind devices or control recording. Build and physical evidence remain separate in each example’s README.

October 2, 2026 — Android encrypted recording-sync example

  • Added a React Native recording-sync example using public App SDK beta.10 on Android for an already-provisioned Bota device and encrypted upload v2. Upload material stays native; the local backend authenticates the app and enforces one configured project, end user, device and binding.
  • Durable cloud identity and session records preserve uncertainty across restart. Unknown session creation stops for reconciliation; it does not start a second upload owner. Transcription is a separate action after verified publication.
  • Local automated checks are documented separately from native builds, live API and physical transfer/deletion acceptance. This bounded example excludes first binding, reset, recording control and automatic direct-upload fallback, and does not replace the legacy app/backend. See Example Apps.

October 1, 2026 ? Backend-authorized firmware updates

  • Restored backend-authorized Bluetooth OTA grants and documented both firmware delivery paths. Apps retain the current firmware version alongside the available release.

October 1, 2026 — App SDK beta.10 release and example adoption

  • Published synchronized Apple, Android, React Native, Web and Flutter beta.10 using the preserved release artifacts. CocoaPods registration and CDN readiness, public native/Flutter consumers, and Flutter archive verification passed in the release workflow. Earlier CocoaPods publication timeouts are resolved for this release. See the publication record. Beta.10 is now the synchronized installation baseline and remains a prerelease; npm beta advances while latest remains beta.0.
  • All five independent connection examples adopt exact public beta.10 dependencies. Flutter passes locked installation, analysis and six UI lifecycle tests. Example native builds and physical acceptance are tracked separately in the acceptance review.
  • Beta.10 closes the exact Android session after explicit disconnect timeout or cancellation without a platform callback, clears stale connection/presence state and preserves replacement work. This does not establish a fix for the separate beta.9 Flutter GATT 8/133 failures or add automatic reconnect.
  • On Samsung SM-A166U1 / Android 16 / Bota Pin firmware 1.0.19, the public beta.10 RN lab passed three automatic radio-loss clears, three first explicit reconnects with fresh status, and graceful disconnect/reconnect. This is foreground evidence for one pair; a missing callback was not physically induced. See the acceptance review for artifacts, historical Flutter results and remaining checks, and Client SDKs for installation guidance.

September 30, 2026 — Upload integrity diagnostics and recovery

  • Failed whole-file verification returns 409 upload_integrity_failed; 425 remains retryable verification pending. Optional upload_attempt_id and client_version help correlate client attempts with worker diagnostics.
  • Portal displays integrity failures explicitly and retains the source until server confirmation. Web sync waits for verification with a bounded deadline and can repair a failed upload using a fresh URL for the same recording.

September 30, 2026 — Upload completion retries

  • Fixed a false 409 on identical upload-complete retries caused by comparing the stored byte count as a string with the request’s numeric byte count. SHA-bearing requests still return 425 until verification and 200 afterward; genuinely conflicting completion fields still return 409.
Bookmark this page to stay updated on the latest changes.

September 30, 2026 — App SDK 2.0.0-beta.9 Android adapter-off recovery

  • Published synchronized Apple, Android, React Native, Web and Flutter beta.9 from the preserved main-CI artifacts. Public consumers and Flutter archive verification passed in the release workflow. npm beta advances; latest remains beta.0.
  • Android radio shutdown now closes the exact native session and settles pending operations even without a GATT disconnect callback. Native, RN and Flutter listeners receive loss; old cleanup preserves replacement connections.
  • All five independent connection examples pin beta.9 and passed hosted builds. On the tested Samsung/firmware 1.0.19 pair, both mobile apps cleared stale state on all three radio losses. RN passed three first reconnects; Flutter passed two, then recovered the third after GATT 8/133 with a fresh scan in the same session. First-attempt reliability remains partial. The acceptance review retains exact artifacts, failures, recovery and physical coverage limits.
  • Rebuild native apps, restore Bluetooth, scan and reconnect explicitly. This adds no automatic reconnect loop or upload-ownership change. See Client SDKs.

September 29, 2026 — App SDK 2.0.0-beta.8 Bluetooth-loss recovery

  • Published synchronized Apple, Android, React Native, Web and Flutter beta.8 packages from the preserved main-CI artifacts. Public consumers and the Flutter archive are checked by the release workflow.
  • Confirmed Android link loss now invalidates verified connection/presence state and reaches native, React Native and Flutter connection listeners without a status subscription. Apps can clear stale selection immediately.
  • Rebuild native apps, restore Bluetooth, then reconnect explicitly. This release does not add an automatic reconnect loop or change upload ownership.
  • Phone recovery remains partial: Kotlin passed the tested radio-off/reconnect cycle; React Native reconnect hit GATT 133, and Flutter missed an adapter-off notification. These remaining native recovery gaps are recorded in the acceptance review and require a follow-up SDK release.
  • Independent device examples pin beta.8; their acceptance review separates native builds from physical-device results. npm beta advances; latest stays at beta.0. See Client SDKs.

September 29, 2026 — Independent API and App SDK examples

  • Added independent Node.js/Python upload-and-transcribe examples and a Node.js webhook receiver with signature verification and durable receipt deduplication.
  • Added focused React Native, Swift/macOS, Kotlin/Android, Flutter/Android, and Web connection/status examples consuming published App SDK beta.7 packages.
  • API success paths are live-verified with synthetic speech. Each example records automated/native-build evidence separately from physical-device acceptance.
  • The legacy app/backend remains local-only; target recording-sync replacement is still blocked on public integration gaps. See Example Apps for setup and limits.

September 29, 2026 — Standalone React Native SDK retirement

  • Ended maintenance of @bota.dev/react-native-sdk. Existing versions and source history remain available; new work uses @bota.dev/react-native-app-sdk.
  • The successor is currently 2.0.0-beta.7, a prerelease. Update imports and host integration, then rebuild native binaries. Retirement does not promote the SDK to stable or establish physical iPhone acceptance.
  • Demo, Bota One and the public React Native example already use App SDK. See Client SDKs for the migration guide and compatibility limits.

September 28, 2026 — App SDK 2.0.0-beta.7 and mobile migration

  • Published the synchronized Apple, Android, React Native, Web and Flutter packages at 2.0.0-beta.7. Exact public native consumers and the published Flutter archive are verified by the release workflow.
  • React Native presence compatibility, fresh scoped observations and shared upload recovery were introduced in beta.6. Backend completion acknowledgement gates native cleanup and device confirmation, including recovered uploads.
  • Beta.7 repairs Flutter publication staging. Bota One 1.0.7 and Demo 1.0.10 retain their verified beta.6 runtime; Android/iOS preview and production binaries and store submissions passed. Store approval/listing and physical iPhone acceptance remain separate.
  • The standalone React Native package remains available pending its separate sunset. New RN/Web beta tags advance to beta.7; latest remains beta.0. See Client SDKs for exact-version migration.

August 2026

2026-08-19

Bota One Device Integration Contract
  • Documented pk_d delivery during bind and the nonce-bound BLE deprovision grant used by the released Bota One integration.
  • Documented optional one-time cert delivery used by the demo mTLS integration, including secret-handling and compatibility requirements.
  • Added the deprovision grant endpoint to the public API reference and clarified that deprovision is not factory reset.
  • Corrected WiFi setup to match the current SDK/firmware contract and corrected already-unbound behavior to 400 Bad Request.

2026-08-12

Project-Scoped End User Lookup
  • GET /v1/end-users accepts an exact external_id filter and returns zero or one end user in the standard collection response.
  • External-ID lookup is scoped to the authenticated project. Empty results do not reveal whether an end user exists in another project.

2026-08-09

Lifetime Device Serial Identity
  • Device serial numbers remain reserved after soft deletion; attempting to register the same serial as a new device returns 409 Conflict.
  • Same-organization project moves preserve the existing dev_* identity rather than deleting and recreating the device.
  • Registration now has a database concurrency guard so simultaneous requests cannot create duplicate device identities.

July 2026

2026-07-30

API Reference Contract Corrections
  • Aligned recording, upload, transcription, summary, and webhook examples with the current /v1 backend contract.
  • Corrected transcription creation to POST /v1/transcriptions and download URL generation to GET /v1/recordings/{id}/download-url.
  • Marked dashboard-only or not-yet-mounted endpoints as unavailable in the public /v1 API.

2026-07-26

Authenticated Factory Reset Close-Loop
  • POST /v1/devices/{id}/reset now returns 202 Accepted with a durable, idempotent factory_reset command.
  • The device stays bound until it deletes every locally stored recording and acknowledges the exact command; only then does Bota unbind it, revoke its token, and clear device configuration.
  • Cloud recordings, transcriptions, summaries, and manufacturing identity are preserved. Lost acknowledgement responses can be retried safely.
  • Reset completion credentials and project-key finalization require devices:write; read-only command responses omit the credential.
  • This entry covers the backend API contract. The physical wipe requires the compatible firmware and relay releases before it can complete.

2026-07-24

Webhook Signature Documentation Correction
  • Corrected webhook verification examples to match the delivered v1=<digest> signature format.
  • Documented that version 1 signs <timestamp>.<raw-request-body>, not the body alone.
  • Added raw-body handling, constant-time comparison, and a five-minute timestamp tolerance to the Node.js and Python examples.

2026-07-18

Heartbeat Channel Control
  • Device settings can independently enable or disable direct WiFi and cellular heartbeats without changing upload routing.
  • Bluetooth heartbeat relay remains enabled and direct routing stays fixed as WiFi, then cellular.
  • Disabling both direct paths requires a Bluetooth connection to re-enable one later.

2026-07-15

Project-Scoped Device Lookup
  • GET /v1/devices now accepts an exact serial_number filter and returns zero or one device in the standard collection response.
  • Serial-number lookup is scoped to the authenticated project. Empty results do not reveal whether a device exists in another project.
  • POST /v1/devices remains create-only and returns 409 Conflict for duplicate serial numbers.

March 2026

2026-03-11

Auto-Processing & Hierarchical Configuration
  • Auto-Transcription — Automatically transcribe recordings when upload completes. Configurable ASR provider per organization, project, end user, or device.
  • Auto-Summary — Automatically generate summaries when transcription completes. Configurable LLM provider and template (general notes, sales call, clinical SOAP, legal memo).
  • Hierarchical Configuration — New processing config section joins connection and upload. Set defaults at the organization level and override at project, end user, or device level with deep-merge inheritance.
  • Config API Endpoints — GET/PUT/DELETE config endpoints available for all entity levels (organizations, projects, end users, devices).
See the Auto-Processing Guide and Hierarchical Configuration Guide for details.

January 2025

2025-01-15

API v1 General Availability We’re excited to announce the general availability of the Bota API v1. This release includes:
  • End User Management — Create, list, and manage EndUsers with external_id mapping
  • Device Management — Register devices, bind to EndUsers, and track fleet status
  • Recording Pipeline — Create recordings, upload audio via pre-signed URLs, and track processing status
  • Transcription — Async transcription with speaker diarization and timestamps
  • Summarization — AI-powered summary generation from transcripts
  • Webhooks — Real-time notifications for all processing events

2025-01-10

Documentation Site Launch
  • Launched docs.bota.dev with comprehensive API reference
  • Added quickstart guide for rapid integration
  • Published hardware guides for Bota Pin and Bota Note

Versioning Policy

The Bota API uses date-based versioning. The current version is 2025-01-15. When we make breaking changes, we:
  1. Release a new API version
  2. Provide a migration guide
  3. Support the previous version for at least 12 months
  4. Send deprecation notices via email and webhooks
See API Versioning for details on version headers and migration strategies.

Deprecations

No deprecations at this time.

SDK Releases


Stay Updated

API Status

Subscribe to incident and maintenance notifications

Support

Contact us for questions or feedback