---
title: "Dataset Detail"
method: GET
path: "/api/v1/geographies/{geography_id}/datasets/{dataset}"
tags: ["geographies"]
---

# Dataset Detail

`GET /api/v1/geographies/{geography_id}/datasets/{dataset}`

## Request

- Base URL: `https://statsmapped.com`
- URL: `https://statsmapped.com/api/v1/geographies/{geography_id}/datasets/{dataset}`
- Auth: none declared

Everything the deep-dive view needs about ONE dataset for ONE area.

`dataset` is either a series `group_key` (e.g. 'crime:louth-cavan-monaghan') or a
plain `series_key` for ungrouped series.

Returns the underlying series with full history, the glossary, the caveats and the
computed summary — so the reader can see what was counted, what it means, what to be
careful of, and check the numbers themselves.

`history_months` trims the returned history (0 = everything) -- converted to this
dataset's own PERIOD count via `_history_points_for_months()` before slicing, not
used as a raw row count. Property runs to 258 months; crime to 5 quarters.

## Path parameters

- `geography_id` string, required
- `dataset` string, required

## Query parameters

- `history_months` integer

## Response `200`

Successful Response

- DatasetDetailResponse
  - `country` string
  - `geography` GeographyRef, required
    - `country` string
    - `id` string, required
    - `level` string, required
    - `name` string, required
    - `identifiers` object, nullable
  - `canonical_geography_id` string, required
  - `dataset` DatasetGroup, required: dataset_detail()'s `dataset` object -- one series/group with full history per facet. Left loose (extra="allow") on the facet/summary fields dataset_detail() computes conditionally (`summary`, `latest_value`, `year_on_year_pct` all depend on which of the three headline shapes this group turned out to be).
    - `country` string
    - `dataset` string, required
    - `readable_slug` string, required
    - `stat_key` string, nullable
    - `name` string, required
    - `unit` string, nullable
    - `periodicity` string, nullable
    - `geo_match` string, required
    - `geo_level` string, nullable
    - `geo_name` string, nullable
    - `relation_note` string, nullable
    - `facets` object[], required
    - `latest_period` string, nullable
    - `data_refreshed_at` string, nullable
    - `latest_value` number, nullable
    - `year_on_year_pct` number, nullable
    - `summary` string, nullable
  - `caveats` Caveat[]
    - `country` string
    - `kind` string, required
    - `severity` string, required
    - `label` string, required
    - `body` string, required
    - `source_url` string, nullable
    - `origin` string, required
    - `interpretive` boolean
    - `stats` CaveatStats
      - `country` string
      - `median` number, required
      - `n` integer, required
      - `modified_z` number, required
      - `peer_basis` string, required
  - `glossary` GlossaryEntry[]
    - `country` string
    - `term` string, required
    - `definition` string, required
    - `source_url` string, nullable
  - `sources` SourceLink[]
    - `country` string
    - `label` string, required
    - `url` string, required
    - `note` string, nullable
  - `publisher` string, nullable
  - `permalink` string, nullable
  - `license` string, nullable
  - `licence_class` string, nullable
  - `licence_restrictions` string[]
  - `attribution` string, nullable
  - `receipt` string, nullable
  - `licence_record` object, nullable
  - `index_note` string, nullable

## Other responses

- `400`: Bad request
- `401`: Missing or invalid credentials
- `403`: Not authorized for this request
- `404`: Not found
- `422`: Validation error
- `429`: Rate limited

---

[API](https://skmtc.dev/statsmapped/apis/statsmapped-api.md) · [All operations](https://skmtc.dev/statsmapped/apis/statsmapped-api/llms.txt) · [OpenAPI document](https://skmtc.dev/statsmapped/apis/statsmapped-api/revisions/7c5b264d05b7?raw)
