Spren API
Spren API is RESTful and partially async. It communicates with JSON request and response bodies. Authorization is in the header.
- https://test.api.spren.com
- https://prod.api.spren.com
Header | Notes | Example |
X-API-KEY | Your API key for authorization | X-API-KEY: <API key> |
Content-Type | JSON, if request body present | Content-Type: application/json |
POST /submit/sdkData
- POST /submit/deviceData
- GET /results/{guid}
- GET /populationComparison
- POST /submit/userData
- POST /submit/bodyComp
- POST /results/bodyComp/{guid}
readiness and ansBalance require 2 readings on 2 separate days within 10 days or value will be null This will occur for a user's first reading OR after their first reading if they have not performed a reading in the last 10 days, and when this occurs an errorDescription of "baseline not set" is returned. See GET /results/{guid} below for more details.
JSON Key | Description | Type | JSON Data Type | Return Values |
hr | Heart rate | Biomarker | number | Floating point, unrestricted range |
hrvScore | HRV score | Biomarker | number | Floating point, 0-100 |
rmssd | Root mean square of successive differences between normal heartbeats | Biomarker | number | Floating point, unrestricted range |
breathingRate | Breathing/respiration rate | Biomarker | number | Floating point, unrestricted range |
readiness* | Morning readiness | Insight | number | Int, 0-10 |
ansBalance* | ANS balance | Insight | number | Int, 1-5 |
signalQuality | Signal quality | Other | number | Int, 1-3 |
bodyFat | Body fat percentage | Biomarker | number | Floating point, unrestricted range |
leanMass | Lean mass (kg) | Biomarker | number | Floating point, unrestricted range |
fatMass | Fat mass (kg) | Biomarker | number | Floating point, unrestricted range |
androidFat | Android fat (kg) | Biomarker | number | Floating point, unrestricted range |
gynoidFat | Gynoid fat (kg) | Biomarker | number | Floating point, unrestricted range |
androidByGynoid | Android : gynoid fat ratio | Biomarker | number | Floating point, unrestricted range |
*require 2 readings on 2 separate days within 10 days or value will be null
POST /submit/sdkData
POST /submit/deviceData
While we accept interbeat intervals (IBIs) from any device, the following devices have been tested
- Apple Watch
- Polar H7, H9, and H10
- Garmin HRM Dual and HRM Pro
- Suunto Smart Belt
- 4iiii Viiiiva
- Zephyr HxM
- Cardiosport TP3
- Ambiotex smart shirt with cardio-monitor
- BlueLeza HRM Blue
GET /results/{guid}
For certain insights, a minimum number of readings are required. See the Biomarkers/Insights section.
Status/Value
For each biomarker or insight, a status/value JSON object is returned
State Permutations
status | Description | value (for calculated Biomarker/Insight) | errorDescription |
pending | Calculation is in progress | null | null |
complete | Calculation is complete | number, see Biomarkers/Insights section below for precision and range | null |
error | Calculation has errored | null | string, error encountered |
GET /populationComparison
Types in Response
Gender
- male
- female
- other
Age Range
- age-18-25
- age-26-35
- age-36-45
- age-46-55
- age-56-65
- age-66-1000
Mean/Range Object, Result Object
POST /submit/userData
POST /submit/bodyComp
Important Parameters Explained
Parameter JSON Key | Required | Description |
age | yes | User age in years |
gender | yes | Gender assigned at birth, "male" or "female" |
vigorousDays | yes | The number of days in the last 7 days that a user has exercised vigorously |
pushUps | no, improves accuracy | The maximum number of pushups a user can perform * For women, use a modified position where knees rest on the ground |
GET /results/bodyComp/{guid}
Status/Value
For each biomarker, a status/value JSON object is returned
State Permutations
status | Description | value (for calculated Biomarker) | errorDescription |
pending | Calculation is in progress | null | null |
complete | Calculation is complete | number, see Biomarkers/Insights section for precision and range | null |
error | Calculation has errored | null | string, error encountered |