---
title: "Serve a stored table whole — labelled rows × columns with provenance"
method: GET
path: "/v1/table/{dataset_id}"
tags: ["Stored tables"]
---

# Serve a stored table whole — labelled rows × columns with provenance

`GET /v1/table/{dataset_id}`

## Request

- Base URL: `https://api.stackdata.io`
- URL: `https://api.stackdata.io/v1/table/{dataset_id}`
- Auth: one of:
  - none
  - API key in header `X-API-Key`

The front door for STORED families — corpora we hold ourselves because the
source publishes archives, not APIs (China population censuses 1953–2020,
economic censuses 2008/2018, Statistical Yearbooks 2004–2013; 14k+ tables).

Labels are keyed by the **source language** (`zh` for the censuses, `en` for
the English-edition yearbooks) with a machine-translation overlay where the
source is Chinese — the original always ships, figures never pass through a
model. Blank cells stay explicit nulls: an NBS blank means "no value" or
"too small to display", and both differ from zero. Provenance reaches the
original file (source URL, raw sha256, and for 2020-census tables the JPG
the site actually links).

Over-quota anonymous callers get x402 terms (402) and can pay per table;
the priced unit is the table render.

## Path parameters

- `dataset_id` string, required

## Response `200`

The table: dataset, columns, rows, translation coverage, billing, provenance.

## Other responses

- `402`: x402 payment terms (anonymous over-quota).
- `404`: No stored table under that id — absent is not an empty success.

---

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