---
title: "TerriData Series by Territory"
method: POST
path: "/co/terridata/series/v1"
tags: ["Colombia", "DNP TerriData"]
---

# TerriData Series by Territory

`POST /co/terridata/series/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/co/terridata/series/v1`
- Auth: HTTP bearer

Colombia's territorial statistics (DNP TerriData) for one territory, by its five-digit DANE code (`05001` Medellín, `05000` Antioquia, `01001` Colombia): every indicator's yearly values with unit and producing agency, optionally narrowed to one indicator code, one dimension or words in the indicator's name. `found: false` when the panel holds nothing for that territory. Served by Croma (`as_of` says how current the data is).

**Dataset endpoint**: answers from the whole source in milliseconds and carries `as_of`.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `territory_code` string, required: Five-digit DANE code of the territory: a municipality (`05001` Medellín, `11001` Bogotá), a department (its two digits plus `000`, e.g. `05000` Antioquia) or `01001` for Colombia as a whole.
  - `indicator_code` string: Optional nine-digit indicator code, as the indicator search returns it. Empty returns every indicator of the territory.
  - `dimension_code` '' | '11' | '12' | '13' | '14' | '15' | '16' | '19' | '20' | '22' | '25' | '26' | '27' | '28' | '29' | '30' | '31' | '01' | '02' | '03' | '04' | '05' | '06' | '07' | '08': Optional two-digit dimension: `14` poverty, `04` education, `05` health, `16` labour market, `07` public finance, `12` economy, `06` safety, `03` housing and public services, `02` demographics. Empty searches every dimension.
  - `query` string: Optional words to find in the indicator's name, in Spanish, e.g. `pobreza multidimensional`, `cobertura neta`, `homicidios`.
  - `page` integer: 1-based page number for paginated results.
  - `per_page` integer: Results per page (1-100).

## Response `200`

Successful response

- TerridataSeriesResponse
  - `data` TerridataSeriesData, required
    - `as_of` string, nullable, required
    - `found` boolean, required: False when the panel holds nothing for that territory (and indicator).
    - `territory_code` string, required
    - `territory_name` string, nullable, required
    - `territory_level` 'country' | 'department' | 'municipality', nullable, required
    - `indicator_code` string, nullable, required
    - `dimension_code` string, nullable, required
    - `query` string, required
    - `total` integer, required
    - `total_is_exact` boolean, required: False when there are more than 1000 matches and `total` is a floor.
    - `page` integer, required
    - `per_page` integer, required
    - `total_pages` integer, required
    - `count` integer, required
    - `series` object[], required
      - `series_id` string, required: `<territory_code>-<indicator_code>`, the stable key.
      - `territory_code` string, required: Five-digit DANE code of the territory: a municipality, a department (`DD000`) or `01001` for Colombia.
      - `territory_name` string, required
      - `territory_level` 'country' | 'department' | 'municipality', required: `country`, `department` or `municipality`.
      - `department_code` string, required: Two-digit DANE code of the territory's department; `01` for Colombia.
      - `department_name` string, required
      - `indicator_code` string, required: Nine-digit indicator code; its first two digits are the dimension.
      - `indicator` string, required: The indicator's name, in Spanish.
      - `dimension_code` string, required: Two-digit dimension code.
      - `dimension` string, required: The dimension's name, in Spanish (`Pobreza`, `Educación`, ...).
      - `subcategory` string, nullable, required: The subcategory inside the dimension, in Spanish.
      - `unit` string, nullable, required: The unit of measure, in Spanish (`Porcentaje`, `Número`, `Pesos corrientes`, ...).
      - `data_source` string, nullable, required: The agency that produced the figure (`DANE`, `MEN`, `DNP`, ...).
      - `first_year` integer, required: The earliest year with a value.
      - `last_year` integer, required: The latest year with a value.
      - `latest_value` number, nullable, required: The value of the latest year (and month), when numeric.
      - `latest_text` string, nullable, required: The value of the latest year (and month), when text.
      - `observations` object[], required: Every value of the series, oldest first.
        - `year` integer, required: The year the value describes.
        - `month` integer, nullable, required: The month the value describes, `1` to `12`, when the indicator is monthly or measured at a cut-off; null for a description that has no period.
        - `value` number, nullable, required: The numeric value, in the series' `unit`.
        - `text` string, nullable, required: The value when it is text, e.g. a category or a name.

## Other responses

- `400`: Invalid request body
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream source returned an error

---

[API](https://skmtc.dev/usecroma/apis/croma-marketplace-api.md) · [All operations](https://skmtc.dev/usecroma/apis/croma-marketplace-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usecroma/apis/croma-marketplace-api/revisions/df016cdb29d7?raw)
