---
title: Data Logs
---


<!-- {% use-cases items="Dashboards, Research, Analytics/BI" /%} -->

## Introduction

Raw health data, unfiltered. Data Logs provide granular, timestamped samples directly from HealthKit and Health Connect—ideal for research, clinical studies, and custom analytics.

{% callout title="Need processed data instead?" %}
Most use cases are better served by [Biomarkers](/docs/products/biomarkers)—deduplicated, aggregated, and ready to use. Use Data Logs only when you need the raw samples.
{% /callout %}

---

## Key Features

{% cards smCols=2 %}

{% card title="Raw & Unfiltered" description="Direct access to granular health samples for research and analysis" /%}
{% card title="Multi-Source" description="Data from HealthKit, Health Connect, and wearables in one stream" /%}
{% card title="Real-time Streaming" description="Receive data as it's recorded via webhooks" /%}
{% card title="Research-Grade" description="Timestamped, source-attributed records for clinical use" /%}
{% card title="Complete Provenance" description="Know exactly which device and app recorded each sample" /%}
{% card title="Flexible Filtering" description="Filter by log type, data type, or time range" /%}

{% /cards %}

---

## List of Data Logs

Below are the key data types captured in Data Logs, categorized by their respective health aspects. The logs can be streamed via [webhooks](/docs/connect/webhooks) for real-time data reception.

### Activity Logs

| Data Type      | Unit   | Description                    | Requires Wearable |
| -------------- | ------ | ------------------------------ | ----------------- |
| exercise_time  | minute | Duration of physical exercise. | No                |
| floors_climbed | count  | Number of floors climbed.      | No                |
| stand_time     | minute | Time spent standing.           | No                |
| steps          | count  | Total steps taken.             | No                |

### Blood Logs

| Data Type                | Unit  | Description                  | Requires Wearable |
| ------------------------ | ----- | ---------------------------- | ----------------- |
| blood_glucose            | mg/dL | Glucose levels in the blood. | Yes               |
| blood_pressure_diastolic | mmHg  | Diastolic blood pressure.    | Yes               |
| blood_pressure_systolic  | mmHg  | Systolic blood pressure.     | Yes               |

### Body Logs

| Data Type       | Unit    | Description               | Requires Wearable |
| --------------- | ------- | ------------------------- | ----------------- |
| body_fat        | percent | Percentage of body fat.   | Yes               |
| body_mass_index | count   | Body Mass Index (BMI).    | No                |
| lean_body_mass  | kg      | Weight of lean body mass. | Yes               |
| weight          | kg      | Total body weight.        | No                |

### Device Logs

| Data Type   | Unit    | Description                        | Requires Wearable |
| ----------- | ------- | ---------------------------------- | ----------------- |
| device_lock | boolean | Indicates if the device is locked. | No                |

### Energy Logs

| Data Type            | Unit   | Description                       | Requires Wearable |
| -------------------- | ------ | --------------------------------- | ----------------- |
| active_energy_burned | kcal   | Calories burned through activity. | No                |
| basal_energy_burned  | kcal   | Calories burned at rest.          | No                |
| time_in_daylight     | minute | Time spent in natural daylight.   | No                |

### Exercise Logs

| Data Type                | Unit   | Description                                                                                                                        | Requires Wearable |
| ------------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| exercise*session*\*      | minute | Duration spent doing specified exercise type. [See all supported exercise types](/docs/get-started/data-dictionary/exercise-types) | No                |
| exercise_session_biking  | minute | Duration spent cycling or biking                                                                                                   | No                |
| exercise_session_running | minute | Duration spent running or jogging                                                                                                  | No                |
| exercise_session_walking | minute | Duration spent walking for exercise                                                                                                | No                |

### Heart Logs

| Data Type                   | Unit | Description                                | Requires Wearable |
| --------------------------- | ---- | ------------------------------------------ | ----------------- |
| heart_rate                  | bpm  | Beats per minute.                          | Yes               |
| heart_rate_variability      | ms   | Variation in intervals between heartbeats. | Yes               |
| heart_rate_variability_sdnn | ms   | Standard deviation of NN intervals.        | Yes               |
| resting_heart_rate          | bpm  | Heart rate at rest.                        | Yes               |
| walking_heart_rate_average  | bpm  | Average heart rate while walking.          | Yes               |

### Oxygen Logs

| Data Type         | Unit      | Description                                         | Requires Wearable |
| ----------------- | --------- | --------------------------------------------------- | ----------------- |
| oxygen_saturation | percent   | Percentage of oxygen-saturated hemoglobin.          | Yes               |
| respiratory_rate  | bps       | Breaths per second.                                 | Yes               |
| vo2_max           | ml/kg/min | Maximum rate of oxygen consumption during exercise. | Yes               |

### Sleep Logs

| Data Type            | Unit   | Description                              | Requires Wearable |
| -------------------- | ------ | ---------------------------------------- | ----------------- |
| sleep_stage_awake    | minute | Duration in awake stage.                 | Yes               |
| sleep_stage_deep     | minute | Duration in deep sleep stage.            | Yes               |
| sleep_stage_in_bed   | minute | Duration in bed, not necessarily asleep. | No                |
| sleep_stage_light    | minute | Duration in light sleep stage.           | Yes               |
| sleep_stage_rem      | minute | Duration in REM sleep stage.             | Yes               |
| sleep_stage_sleeping | minute | Duration spent asleep/sleeping.          | No                |

### Temperature Logs

| Data Type                  | Unit | Description                                    | Requires Wearable |
| -------------------------- | ---- | ---------------------------------------------- | ----------------- |
| basal_body_temperature     | degC | Body temperature at rest.                      | Yes               |
| sleeping_wrist_temperature | degC | Temperature measured at the wrist during sleep | Yes               |

Browse our [comprehensive data dictionary](/docs/get-started/data-dictionary) to view all available outputs beyond just data logs.

## Output Schema for Data Logs

When you receive data from Data Logs, it comes in a structured format.

{% api-example %}

{% api-panel %}
{% api-property field="logType" type="string" description="Log category: activity, sleep, heart, body, energy, etc." /%}
{% api-property field="dataType" type="string" description="Specific data type (e.g., steps, heart_rate)" /%}
{% api-property field="externalId" type="string" description="The identifier for the profile that sent the log" /%}
{% api-property field="receivedAtUtc" type="datetime" description="UTC timestamp when the log was received" /%}
{% api-property field="dataLogs" type="DataLog[]" description="Array of individual data samples" /%}
{% /api-panel %}

```json {% title="Example Response" %}
[
	{
		"logType": "activity",
		"dataType": "steps",
		"externalId": "ext-789",
		"receivedAtUtc": "2023-06-26T12:34:56+00:00",
		"dataLogs": [
			{
				"id": "123e4567-e89b-12d3-a456-426614174003",
				"parentId": null,
				"value": 10000,
				"unit": "count",
				"source": "iPhone X",
				"recordingMethod": "RECORDING_METHOD_AUTOMATICALLY_RECORDED",
				"deviceType": "iPhone13,2",
				"startDateTime": "2023-06-25T00:00:00+00:00",
				"endDateTime": "2023-06-25T23:59:59+00:00",
				"additionalProperties": {}
			}
		]
	}
]
```

{% /api-example %}

{% api-panel badge="Object" name="DataLog" description="Each entry in the dataLogs array contains:" %}
{% api-property field="id" type="UUID" description="Unique identifier for this sample" /%}
{% api-property field="parentId" type="UUID" nullable=true description="Parent record ID for hierarchical data" /%}
{% api-property field="value" type="float" description="The recorded measurement value" /%}
{% api-property field="unit" type="string" description="Unit of measurement (e.g., count, bpm)" /%}
{% api-property field="source" type="string" description="Device or app that recorded the data" /%}
{% api-property field="recordingMethod" type="string" description="How the data was captured (automatic, manual, etc.)" /%}
{% api-property field="deviceType" type="string" description="Device model identifier" /%}
{% api-property field="startDateTime" type="datetime" description="When the measurement started (ISO 8601)" /%}
{% api-property field="endDateTime" type="datetime" description="When the measurement ended (ISO 8601)" /%}
{% api-property field="additionalProperties" type="object" description="Extra metadata specific to certain log types" /%}
{% /api-panel %}

---

## FAQ

{% faq %}

{% faq-item question="What's the difference between Data Logs and Biomarkers?" %}
Data Logs are raw samples with full provenance. Biomarkers are processed, deduplicated, and aggregated—ready for most use cases.
{% /faq-item %}

{% faq-item question="How do I receive Data Logs?" %}
Subscribe to Data Log webhooks in the dashboard. Logs are streamed in real-time as they're recorded.
{% /faq-item %}

{% faq-item question="Can I filter by data type?" %}
Yes. Configure your webhook to receive only specific log types (e.g., only sleep or heart data).
{% /faq-item %}

{% /faq %}

---

## Getting Started

Data Logs are delivered exclusively via webhooks for real-time streaming.

{% action-cards %}

{% action-card icon="bell" href="/docs/connect/webhooks" title="Webhooks" description="Stream raw health samples as they're recorded" /%}

{% action-card icon="app-window" href="https://app.sahha.ai/dashboard/webhooks" target="_blank" title="Dashboard" description="Configure webhook endpoints and select log types" /%}

{% /action-cards %}

---

## Support

For help with Data Logs, reach out in the [Slack community](https://join.slack.com/t/sahhacommunity/shared_invite/zt-1w0fmfbvk-qUwQ83tJgXyjT9XSxJvKIw) or contact [support@sahha.ai](mailto:support@sahha.ai).
