---
title: "WHO GHO indicator data rows with country, year, sex, age, and region filters"
method: GET
path: "/api/v1/health/who/data/{code}"
tags: ["Health"]
---

# WHO GHO indicator data rows with country, year, sex, age, and region filters

`GET /api/v1/health/who/data/{code}`

Fetch data rows for a World Health Organization Global Health Observatory (WHO GHO) indicator, with filters on country (ISO 3166-1 alpha-3), year range, sex, age group, and region. Each row carries the spatial dimension, temporal dimension, up to three disaggregation axes (`Dim1` / `Dim2` / `Dim3`), and both machine-readable (`NumericValue`, `Low`, `High`) and display-friendly (`Value`) forms. Upstream caps `$top` at 1000 rows per request; this endpoint mirrors that ceiling.

## Path parameters

- `code` string, required — Indicator code (e.g. `WHOSIS_000001` for life expectancy, `MDG_0000000007` for under-5 mortality).

## Query parameters

- `country` string, nullable — ISO 3166-1 alpha-3 country code to filter `SpatialDim`. Omit to return all countries plus regional and global aggregates.
- `year_start` integer, nullable — Inclusive lower bound on year of observation (maps to `TimeDim ge year_start`).
- `year_end` integer, nullable — Inclusive upper bound on year of observation (maps to `TimeDim le year_end`).
- `sex` string, nullable — Sex filter. Accepts `both`, `female`, `male`, `all`, or a raw `SEX_*` code (`SEX_BTSX`, `SEX_FMLE`, `SEX_MLE`, `SEX_NOA`).
- `age_group` string, nullable — AGEGROUP dimension value code to filter `Dim2`. See `/api/v1/health/who/dimension/AGEGROUP/values`.
- `region` string, nullable — WHO region code to filter `ParentLocationCode` (`AFR`, `AMR`, `EMR`, `EUR`, `SEAR`, `WPR`).
- `limit` integer — Maximum rows per page (1 to 1000). Matches upstream `$top` ceiling.
- `offset` integer — Row offset into the filtered result set (0-indexed).

## Response `200`

Indicator data rows matching the filter plus pagination echo and filter summary.

- EnvelopeWhoGhoDataPayload
  - `data` WhoGhoDataPayload, required — Indicator data rows with pagination echo.
    - `code` string, required — Indicator code that was queried.
    - `rows` WhoGhoDataRow[], required — Data rows matching the filter. Pagination uses `limit` / `offset`; upstream caps `$top` at 1000.
      - `Id` integer, nullable — Upstream-assigned row identifier. Stable within a WHO release, may change across releases.
      - `IndicatorCode` string, nullable — Indicator code this row belongs to.
      - `SpatialDimType` string, nullable — Type of spatial dimension (`COUNTRY`, `REGION`, `UNSDGREGION`, `WORLDBANKINCOMEGROUP`, `GLOBAL`).
      - `SpatialDim` string, nullable — Spatial dimension value (ISO3 for `COUNTRY`, `AFR`/`AMR`/... for `REGION`, `GLOBAL` for world totals).
      - `ParentLocationCode` string, nullable — WHO region code the country belongs to (null for non-country rows).
      - `ParentLocation` string, nullable — WHO region name (null for non-country rows).
      - `TimeDimType` string, nullable — Type of time axis (`YEAR` for annual indicators).
      - `TimeDim` integer, nullable — Year of observation (integer, e.g. `2022`).
      - `Dim1Type` string, nullable — Code for the first disaggregation axis (e.g. `SEX`, `AGEGROUP`, `WEALTHQUINTILE`).
      - `Dim1` string, nullable — Value of the first disaggregation axis (e.g. `SEX_BTSX`, `AGEGROUP_YEARSUNDER5`).
      - `Dim2Type` string, nullable — Code for the second disaggregation axis. Null when the indicator has no secondary axis.
      - `Dim2` string, nullable — Value of the second disaggregation axis. Null when the indicator has no secondary axis.
      - `Dim3Type` string, nullable — Code for the third disaggregation axis. Null when the indicator has no tertiary axis.
      - `Dim3` string, nullable — Value of the third disaggregation axis. Null when the indicator has no tertiary axis.
      - `DataSourceDimType` string, nullable — Type of data-source dimension when the row attributes a specific source.
      - `DataSourceDim` string, nullable — Data-source code when attributed.
      - `Value` string, nullable — Pre-formatted display string, typically point estimate with confidence interval (e.g. `80.3 [80.2-80.3]`).
      - `NumericValue` number, nullable — Machine-readable numeric value (Edm.Decimal with up to 9 decimal places).
      - `Low` number, nullable — Lower bound of the confidence interval when the indicator is a modelled estimate.
      - `High` number, nullable — Upper bound of the confidence interval when the indicator is a modelled estimate.
      - `Comments` string, nullable — Free-text notes attached to the observation, when published by WHO.
      - `Date` string, nullable — ISO 8601 publication timestamp (e.g. `2024-08-02T09:43:39.193+02:00`). Sugra uses `max(Date)` for `meta.data_time`.
      - `TimeDimensionValue` string, nullable — String mirror of `TimeDim` (e.g. `2008`).
      - `TimeDimensionBegin` string, nullable — ISO 8601 start of the observation period (Geneva time offset).
      - `TimeDimensionEnd` string, nullable — ISO 8601 end of the observation period (Geneva time offset).
    - `count` integer, required — Number of rows returned on this page.
    - `limit` integer, required — Rows per page requested (max 1000, matches upstream ceiling).
    - `offset` integer, required — Row offset into the filtered result set.
    - `filters` object, nullable — Echo of the filter parameters applied (country, year range, sex, age group, region).
  - `meta` SugraMeta, required — Metadata attached to every /api/v1/* response envelope.
    - `endpoint` string, required — Requested endpoint path.
    - `data_time` string, required — ISO 8601 UTC timestamp of the source data, not of the request.
    - `response_time` string, required — ISO 8601 UTC timestamp when this response was produced.
    - `provider` string, required — API name and version.
    - `source` string, nullable — Identifier of the primary upstream source used for this response.
    - `attribution` string, nullable — Human-readable attribution mandated by an upstream source (e.g. a securities regulator or self-regulatory organization). Present only on responses whose source requires the owner and source to be clearly identified. Do not remove or alter it when using the response.
    - `fallback_used` boolean, nullable — True when the primary source failed and a fallback produced the data.
    - `fallback_chain` string[], nullable — Ordered list of sources attempted, in the order they were tried.
    - `cached` boolean, nullable — True when this response was served from the internal cache.
    - `stale` boolean, nullable — True when the cached response was returned after the upstream rate-limited or errored. Clients can use this to detect degraded data.

## Other responses

- `401` — Missing or invalid `x-api-key` header.
- `422` — Validation Error
- `429` — Daily rate limit exceeded. Check `X-RateLimit-Reset` for the next window.
- `503` — Upstream source is temporarily unavailable. Retry after a short delay.

---

[API](https://skmtc.net/sugra/apis/sugra-api.md) · [All operations](https://skmtc.net/sugra/apis/sugra-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sugra/sugra-api/versions/dcf7427e6897/schema)
