> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/null-fields-are-provider-dependent.md).

# Why are so many data fields null?

Null or empty fields almost always mean the **provider's API does not expose that metric** (even if it appears in their consumer app), not a Terra error. Terra cannot request extra metrics from a provider: new fields appear only once the provider adds them to their API, after which Terra standardises and surfaces them.

Common examples:

* Scores and strain are provider-dependent (Apple does not expose them).
* Oura records HRV only during sleep, so daily `avg_hrv_sdnn` is never populated (`rmssd` appears in sleep payloads).
* WHOOP does not expose detailed HR samples, so `total_stress_score` is null.
* `duration_asleep_state_seconds` can be null even with stage breakdowns, in which case asleep duration is effectively the sum of the stages.
* `device_data.serial_number` is usually empty because manufacturers rarely expose it.
* Sleep stages are supported via `hypnogram_samples`, but extra biometrics depend on what the integration pulls.

To see exactly which fields a provider populates, **use the Payload Simulator** on the [dashboard](https://github.com/tryterra/api-faqs/blob/main/dashboard/README.md) or check the [provider data-availability documentation](https://docs.tryterra.co/reference/health-and-fitness-api/supported-integrations). Where a received payload differs from the docs, the payload is the source of truth. Unsupported fields can be logged as feature requests for the integration team.
