For the complete documentation index, see llms.txt. This page is also available as Markdown.

July Update 2026

Check out what we've been doing at Terra over the month of July 2026!

Backend 💾

Features

  • Models API is live! List available models with GET /v2/models and run one on any of your users with GET /v2/models/run. Two models are generally available: Sleep Window (a personalised sleep-schedule recommendation) and Health Terrain. Runs are metered from your plan's credits

  • Sleep Window works with any device that records sleep — no per-provider restrictions

  • Strength training per set — activities now carry the sets performed, starting with Fitbod and Hevy

  • New integration: Sensor Bio is out (Biostrap's successor) — existing Biostrap connections keep working; Biostrap is now deprecated

  • Realtime streaming tokens are now reusable — one token covers the connection and any reconnects until it expires

  • Planned workouts created on the provider side (e.g. by a coach) now include full details — title, description, planned metrics and structured steps — plus start_date / end_date query params

  • Fitbit nutrition now arrives by webhook

  • Huawei: 12 additional read scopes, including body temperature, reproductive health, heart health and emotion data

  • New trigger_method field on laps distinguishes automatic distance splits from manual laps

  • Synthetic users now produce their first payloads within seconds of creation, and can be shaped like a specific provider with up to 30 days of history

  • Google Health sleep now includes nightly temperature deviation

Bugs

  • Fixed a bug where Garmin daily step / distance / calorie totals could be overwritten with partial mid-day sums

  • Fixed a bug where Garmin activity details were not delivered to destinations configured for FIT format

  • Fixed a bug where Garmin sleep latency was delivered in milliseconds instead of seconds

  • Fixed a bug where speed/pace targets on planned workouts did not render on COROS watches

  • Fixed a bug where Pixel Watch activities from Fitbit were typed as "Other"

  • Fixed a bug where sleep efficiency was on a 0–100 scale instead of 0–1 for Huawei and Somnofy

  • Fixed a bug where Health Connect sleep undercounted asleep time

  • Fixed a bug where Clue cycle, period and phase lengths were off by one day

  • Fixed a bug where Ultrahuman and Google blood glucose values were missing from body payloads

  • Fixed a bug where Runkeeper activity start times were in the wrong timezone

  • Fixed a bug where TrainerRoad activities stopped being fetched after TrainerRoad retired an endpoint

  • Fixed a bug where MyFitnessPal edits and deletions did not propagate, and nutrition could be duplicated on day boundaries

  • Fixed a bug where Withings connections were dropped when Withings rate-limited our requests

  • Fixed a bug where MongoDB destinations did not receive authentication payloads

  • Fixed a bug where failed widget connect flows dead-ended instead of redirecting to the failure page

Changes

  • The fitbit_v2 provider is now named google_health; the old name is no longer accepted

  • Very large activities now deliver to object-store destinations (S3, GCS, Azure Blob, Supabase, SQL) without a size limit

  • Data requests to providers that are rate-limiting are now retried automatically instead of failing

  • Planned Workouts and the Streaming API are now self-serve add-ons — activate them from the dashboard; see pricing

  • Large-payload notifications to webhook, Kafka and SQS destinations now include the payload_reference ID


SDKs

iOS

  • Background-delivered activities now respect the ignored-sources filter

Android

  • Health Connect sync no longer errors when the app holds only a subset of Health Connect permissions

Realtime Streaming SDKs (iOS, Android, React Native, Flutter)

  • Device connection status now streams to Terra, powering live connection status on the dashboard

  • Background streaming on Android now continues with the screen locked

  • Automatic websocket reconnection

  • ⚠️ ACCELERATION now streams gravity-compensated linear acceleration in m/s² on both platforms (previously raw g readings on iOS)

  • terra-rt-react no longer pulls in the full health SDK — apps that also use terra-react must now declare it themselves

  • Stability fixes for streams stopping unexpectedly and device scans getting stuck

React Native & Flutter

  • HealthKit permission screen control is now exposed in React Native

  • Flutter's Android init methods now return real success flags


Dashboard

  • Models is live for everyone — explore Sleep Window and Health Terrain, see how many of your users can run each model, and try them in the playground

  • Synthetic Users is out — create demo users that generate and send realistic data on a schedule

  • Status page is out — provider health at a glance, with email and Microsoft Teams notifications

  • Pair your own device for streaming — scan a QR code with the new Terra Grip app (App Store and Google Play) to stream live data from a real wearable

  • Set up your AI agent — install the Terra agent skill and docs MCP from the dashboard header

  • New What's new feed in the header

  • Planned Workouts joined Plans & Pricing as a self-serve add-on

  • Filter payload history by destination, provider and data type, and search webhook history by summary ID


Landing Page

  • Streaming API and Planned Workouts pricing published on https://tryterra.co/pricing

  • New clinical privacy notice and US consents & disclosures pages for the lab-testing product

  • Example apps added to the navbar


Blood Biomarkers 🩸

  • Lab-report results now have a structured shape — source / biomarker / measurement / interpretation — with panels modelled at report level

  • Interpretation flags are now coded and normalised, even when the report doesn't print one

  • Improved extraction quality for dense or scanned reports

  • Lab Reports endpoints and the lab_report webhook event are now in the public OpenAPI spec

Last updated

Was this helpful?