Fetch one user's daily summary data (v2)
curl --request GET \
--url https://web-api.soxai.site/api/v2/DailyInfoData/{query_uid} \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.soxai.site/api/v2/DailyInfoData/{query_uid}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://web-api.soxai.site/api/v2/DailyInfoData/{query_uid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));[
{
"_time": "2025-02-21T00:00:00+00:00",
"uid": "user123",
"ML_ver": "2.0.0",
"fw_ver": 1022,
"qol_score": 54,
"activity_score": 30,
"health_score": 93,
"health_hr_day_mean": 55,
"health_hr_day_max": 78,
"health_hr_day_min": 47,
"health_hrv_day_mean": 65,
"health_temperature": 33.5,
"sleep_score": 68,
"sleep_total_sleep_time": 420,
"sleep_time_in_bed": 480,
"sleep_hr_mean": 53,
"sleep_hr_min": 43,
"sleep_hr_max": 65,
"sleep_hrv_mean": 46,
"sleep_hrv_min": 28,
"sleep_hrv_max": 78,
"sleep_spo2_mean": 97.5,
"sleep_spo2_min": 95,
"sleep_spo2_max": 99,
"sleep_start_time_true": "2025-02-20T23:00:00+09:00",
"sleep_end_time_true": "2025-02-21T07:00:00+09:00"
}
]{
"error": "bad-request",
"error_msg": "The range of start_day and end_day should not exceed 31 days."
}{
"error": "http-error",
"error_msg": "Invalid authentication credentials. <reason>"
}{
"error": "forbidden",
"error_msg": "Not enough permission"
}{
"error": "not-found",
"error_msg": "User '<uid>' not found"
}{
"error": "unprocessable-entity",
"error_msg": "body.<field>: <validation message>"
}{
"error": "rate-limited",
"error_msg": "Rate limit exceeded. Retry after <n> seconds."
}{
"error": "internal-server-error",
"error_msg": "Failed to fetch data: <error_message>"
}Data (v2)
Fetch one user's daily summary data (v2)
Fetch daily info data (SX_Daily_Prod) with standardized field names.
Parameters
query_uid(path, required) - the user whose records are read.start_day/end_day(query, optional) -YYYY-MM-DD, both inclusive. An ISO 8601 value with an explicit time is also accepted; a time-valuedend_dayremains the exclusive end instant. Omit both for the last 30 days. Each day’s record is stamped at 00:00:00Z of its date, so astart_daywith a time after midnight UTC does not include that day.format(query, optional) -json(default) orcsv.
Response
200withformat=jsonreturns an array of daily summary records, one per day, with standardized field names.200withformat=csvreturns the same rows as a file download.- A range holding no rows is still a
200: the array is empty.
Errors
| Status | Condition |
|---|---|
| 400 | start_day or end_day is neither YYYY-MM-DD nor an ISO 8601 datetime, end_day is earlier than start_day, or the range exceeds the per-user limit |
| 404 | No user holds that query_uid |
Response fields
SX_Daily_Prod (v2 output)
| Field | Unit | Description |
|---|---|---|
_time | datetime | Time: Data timestamp |
uid | string | User ID: User identifier |
ML_ver | string | ML Version: Version of the ML model in effect at 23:59:59 of the local day the record describes |
fw_ver | string | Firmware Version: Ring firmware version, taken from the raw data of the same local day |
qol_score | pt | QoL Score: Overall index of physical and mental wellness |
activity_score | pt | Activity Score: Index of physical activity |
activity_ree_calories | kcal | Activity - Basal Metabolic Calories: Minimum energy expenditure required to sustain life |
activity_calories | kcal | Activity - Calories Burned: Calories burned through activity |
activity_steps | step | Activity - Steps: Number of steps in a day |
activity_mets | METs | Activity - METs: Physical activity intensity for the day, in multiples of the resting metabolic rate |
activity_metsh | Activity - MET Hours: Activity - MET Hours. Unit and value semantics are not specified in the supplied schema. | |
activity_metsh_mvpa | Activity - MVPA MET Hours: Activity - MVPA MET Hours. Unit and value semantics are not specified in the supplied schema. | |
health_score | pt | Health Score: Overall index of physical health, ranging from 0 to 100 |
health_hr_day_mean | bpm | Health - Average Daytime Heart Rate: Average daytime heart rate over a day |
health_hr_day_max | bpm | Health - Maximum Daytime Heart Rate: Maximum daytime heart rate over a day |
health_hr_day_min | bpm | Health - Minimum Daytime Heart Rate: Minimum daytime heart rate over a day |
health_hrv_day_mean | ms | Health - Average Daytime Heart Rate Variability: Daily average heart rate variability (RMSSD) |
health_hrv_day_max | ms | Health - Maximum Daytime Heart Rate Variability: Daily maximum heart rate variability (RMSSD) |
health_hrv_day_min | ms | Health - Minimum Daytime Heart Rate Variability: Daily minimum heart rate variability (RMSSD) |
health_spo2 | % | Health - Average Blood Oxygen Saturation: Daily average blood oxygen saturation |
health_spo2_max | % | Health - Maximum Blood Oxygen Saturation: Daily maximum blood oxygen saturation |
health_spo2_min | % | Health - Minimum Blood Oxygen Saturation: Daily minimum blood oxygen saturation |
health_stress | pt | Health - Average Stress Level: Daily average stress level |
health_stress_max | pt | Health - Maximum Stress Level: Daily maximum stress level |
health_stress_min | pt | Health - Minimum Stress Level: Daily minimum stress level |
health_temperature | °C | Health - Average Skin Temperature: Daily average skin temperature |
health_temperature_max | °C | Health - Maximum Skin Temperature: Daily maximum skin temperature |
health_temperature_min | °C | Health - Minimum Skin Temperature: Daily minimum skin temperature |
health_bodytemperature | °C | Health - Body Temperature: Always null. Body temperature is not yet stored in the database |
health_bodytemperature_max | °C | Health - Body Temperature Max: Always null. Body temperature is not yet stored in the database |
health_bodytemperature_min | °C | Health - Body Temperature Min: Always null. Body temperature is not yet stored in the database |
sleep_score | pt | Sleep Score: Overall index of sleep quality |
sleep_time_in_bed | mins | Sleep - Total Sleep Time Including Latency: Total sleep duration including sleep latency |
sleep_total_sleep_time | mins | Sleep - Sleep Time Excluding Awake Time: Sleep duration excluding time spent awake |
sleep_awake_time | mins | Sleep - Awake Time Including Latency: Awake time including sleep latency |
sleep_rem_sleep_time | mins | Sleep - REM Sleep Time: Total time spent in the REM sleep stage |
sleep_light_sleep_time | mins | Sleep - Light Sleep Time: Total time spent in the light sleep stage |
sleep_deep_sleep_time | mins | Sleep - Deep Sleep Time: Total time spent in the deep sleep stage |
sleep_nap_time | mins | Sleep - Nap Time: Total duration of daytime sleep episodes lasting at least 15 consecutive minutes |
sleep_latency | mins | Sleep - Sleep Latency: Time taken to fall asleep |
sleep_efficiency | % | Sleep - Sleep Efficiency Including Latency: Sleep efficiency including sleep latency |
sleep_start_time_true | datetime | Sleep - Start Time: ISO 8601 form of sleep_start_time, with utc_offset_mins applied. Falls back to 540 (JST) when the record carries no offset |
sleep_end_time_true | datetime | Sleep - End Time: ISO 8601 form of sleep_end_time, with utc_offset_mins applied. Falls back to 540 (JST) when the record carries no offset |
sleep_hr_mean | bpm | Sleep - Average Heart Rate: Average heart rate during sleep |
sleep_hr_min | bpm | Sleep - Minimum Heart Rate: Minimum heart rate during sleep |
sleep_hr_max | bpm | Sleep - Heart Rate Max: Highest sleep_hr_mean among the detail epochs inside the sleep period. Filled only when the daily series carries no value |
sleep_hrv_mean | ms | Sleep - Average Heart Rate Variability: Average heart rate variability during sleep |
sleep_hrv_min | ms | Sleep - Heart Rate Variability Min: Lowest sleep_hrv_mean among the detail epochs inside the sleep period. Filled only when the daily series carries no value |
sleep_hrv_max | ms | Sleep - Heart Rate Variability Max: Highest sleep_hrv_mean among the detail epochs inside the sleep period. Filled only when the daily series carries no value |
sleep_spo2_mean | % | Sleep - Average Blood Oxygen Saturation: Average blood oxygen saturation during sleep |
sleep_spo2_min | % | Sleep - Minimum Blood Oxygen Saturation: Minimum blood oxygen saturation during sleep |
sleep_spo2_max | % | Sleep - Maximum Blood Oxygen Saturation: Maximum blood oxygen saturation during sleep |
sleep_debt | mins | Sleep - Sleep Debt: Accumulated sleep debt |
sleep_ahi_class | index | Sleep - Maximum AHI: Maximum apnea-hypopnea index |
sleep_respiration_rate_mean | breath/min | Sleep - Average Respiratory Rate: Average respiratory rate during sleep |
utc_offset_mins | mins | UTC Offset: Time difference from UTC in minutes |
Authorization
- Scheme:
Authorization: Bearer <idToken>orsoxai-api-key: <api key>. - Accepted roles:
PartnerAdmin,Admin,OrgAdmin - No role is required when
{query_uid}is the caller’s own uid. - Otherwise
PartnerAdminreaches only uids in its own company andOrgAdminonly uids in its own org; a caller holding both is confined to the intersection. - Denials: a
PartnerAdminreaching outside its company receives403 PartnerAdmin can fetch only the user's data that belongs to your company; anOrgAdminreaching outside its org receives403 OrgAdmin can fetch only the user's data that belongs to your org; anyone else receives403 Not enough permission.
GET
/
api
/
v2
/
DailyInfoData
/
{query_uid}
Fetch one user's daily summary data (v2)
curl --request GET \
--url https://web-api.soxai.site/api/v2/DailyInfoData/{query_uid} \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.soxai.site/api/v2/DailyInfoData/{query_uid}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://web-api.soxai.site/api/v2/DailyInfoData/{query_uid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));[
{
"_time": "2025-02-21T00:00:00+00:00",
"uid": "user123",
"ML_ver": "2.0.0",
"fw_ver": 1022,
"qol_score": 54,
"activity_score": 30,
"health_score": 93,
"health_hr_day_mean": 55,
"health_hr_day_max": 78,
"health_hr_day_min": 47,
"health_hrv_day_mean": 65,
"health_temperature": 33.5,
"sleep_score": 68,
"sleep_total_sleep_time": 420,
"sleep_time_in_bed": 480,
"sleep_hr_mean": 53,
"sleep_hr_min": 43,
"sleep_hr_max": 65,
"sleep_hrv_mean": 46,
"sleep_hrv_min": 28,
"sleep_hrv_max": 78,
"sleep_spo2_mean": 97.5,
"sleep_spo2_min": 95,
"sleep_spo2_max": 99,
"sleep_start_time_true": "2025-02-20T23:00:00+09:00",
"sleep_end_time_true": "2025-02-21T07:00:00+09:00"
}
]{
"error": "bad-request",
"error_msg": "The range of start_day and end_day should not exceed 31 days."
}{
"error": "http-error",
"error_msg": "Invalid authentication credentials. <reason>"
}{
"error": "forbidden",
"error_msg": "Not enough permission"
}{
"error": "not-found",
"error_msg": "User '<uid>' not found"
}{
"error": "unprocessable-entity",
"error_msg": "body.<field>: <validation message>"
}{
"error": "rate-limited",
"error_msg": "Rate limit exceeded. Retry after <n> seconds."
}{
"error": "internal-server-error",
"error_msg": "Failed to fetch data: <error_message>"
}Authorizations
HTTPBearerSoxaiApiKey
Query Parameters
Response
Daily info data fetched successfully with renamed fields. A json request always answers with an array, empty when the range holds no rows; format=csv answers with a file download.