Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: BodyTrace RPM Data Observations API
description: HTTP API for BodyTrace cellular-connected remote patient monitoring (RPM) devices - blood pressure monitors, body-weight scales, and pulse oximeters.
version: '1.0'
contact:
name: BodyTrace
url: https://www.bodytrace.com
license:
name: Proprietary
url: https://www.bodytrace.com
servers:
- url: https://us.data.bodytrace.com/1
description: BodyTrace US data region
- url: https://eu.data.bodytrace.com/1
description: BodyTrace EU data region (region assigned by BodyTrace)
security:
- basicAuth: []
tags:
- name: Observations
description: Confirmed pull surface for device readings (data values).
paths:
/device/{imei}/datavalues:
parameters:
- $ref: '#/components/parameters/Imei'
get:
operationId: getDeviceDataValues
tags:
- Observations
summary: Get device data values (readings)
description: Retrieve the latest and historical readings for a device by IMEI. Use the `names` query parameter to select which values to return - for example `values/weight`, `values/systolic`, `values/diastolic`, `values/pulse`, `batteryVoltage`, and `signalStrength` - and optionally bound the results with a time range. This is the confirmed, publicly documented BodyTrace pull endpoint.
x-endpoint-status: confirmed
parameters:
- name: names
in: query
required: false
description: Comma-separated list of value names to return, e.g. `batteryVoltage,signalStrength,values/weight,values/unit`. For blood pressure use `values/systolic,values/diastolic,values/pulse`.
schema:
type: string
example: batteryVoltage,signalStrength,values/weight,values/unit
- name: from
in: query
required: false
description: Start of the time window, epoch milliseconds (UTC).
schema:
type: integer
format: int64
- name: to
in: query
required: false
description: End of the time window, epoch milliseconds (UTC).
schema:
type: integer
format: int64
- name: limit
in: query
required: false
description: Maximum number of readings to return.
schema:
type: integer
responses:
'200':
description: The requested device readings.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DataValue'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
responses:
NotFound:
description: The device or resource was not found / not registered.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Missing or invalid HTTP Basic credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
Imei:
name: imei
in: path
required: true
description: The device IMEI (serial). BodyTrace documents this as the IMEI without leading zeros and without the final check digit.
schema:
type: string
example: '357872040012345'
schemas:
Error:
type: object
properties:
error:
type: object
properties:
code:
type: string
message:
type: string
Values:
type: object
description: Measurement payload. The populated fields depend on the device type. A scale reports weight/tare; a blood pressure monitor reports systolic/diastolic/pulse; a pulse oximeter reports spo2/pulse. An empty values object indicates a heartbeat / connectivity message.
properties:
unit:
type: integer
description: Unit setting for the measurement (device-defined).
weight:
type: integer
description: Body weight in grams (scale).
tare:
type: integer
description: Tare / calibration offset in grams (scale).
systolic:
type: integer
description: Systolic blood pressure in mmHg (BP monitor).
diastolic:
type: integer
description: Diastolic blood pressure in mmHg (BP monitor).
pulse:
type: integer
description: Pulse in beats per minute (BP monitor / pulse oximeter).
spo2:
type: integer
description: Blood oxygen saturation as a percentage (pulse oximeter).
additionalProperties: true
DataValue:
type: object
description: A single reading returned by the data values endpoint.
properties:
ts:
type: integer
format: int64
description: Measurement timestamp, epoch milliseconds (UTC).
batteryVoltage:
type: integer
description: Battery voltage in millivolts.
signalStrength:
type: integer
description: Cellular signal strength.
rssi:
type: integer
description: Signal strength in negative dBm (raw radio metric).
values:
$ref: '#/components/schemas/Values'
securitySchemes:
basicAuth:
type: http
scheme: basic
description: HTTP Basic authentication using the username and password issued by BodyTrace for your account. The same credential model secures the customer-hosted push endpoint (you define the username/password BodyTrace uses when POSTing measurements to you).