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 Data Messages 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: Data Messages
description: Modeled surface for raw per-transmission device messages.
paths:
/device/{imei}/datamessages:
parameters:
- $ref: '#/components/parameters/Imei'
get:
operationId: getDeviceDataMessages
tags:
- Data Messages
summary: Get raw device data messages
description: Retrieve the raw, per-transmission messages a device has sent over the cellular network for a given IMEI and time range. Each message mirrors the payload BodyTrace devices emit (deviceId, ts, batteryVoltage, rssi, and a values object). MODELED - the message payload shape is confirmed from BodyTrace's documented device messages, but this read/query surface is gated behind partner credentials; verify path and parameters against your onboarding docs.
x-endpoint-status: modeled
parameters:
- 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 messages to return.
schema:
type: integer
responses:
'200':
description: A list of raw device messages.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DeviceMessage'
'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
DeviceMessage:
type: object
description: A raw per-transmission device message, matching the JSON BodyTrace devices emit over cellular.
properties:
deviceId:
type: string
description: The device IMEI (without leading zeros and final digit).
ts:
type: integer
format: int64
description: Timestamp, epoch milliseconds (UTC).
batteryVoltage:
type: integer
description: Battery voltage in millivolts (functional range ~4700-6000).
rssi:
type: integer
description: Signal strength in negative dBm.
values:
$ref: '#/components/schemas/Values'
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
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).