---
title: "List Sizes"
method: GET
path: "/api/product-sizes"
tags: ["Product Sizes"]
---

# List Sizes

`GET /api/product-sizes`

## Request

- Base URL: `https://data.getplace.io` (the document declares no server; this is the origin it was published from)
- URL: `https://data.getplace.io/api/product-sizes`
- Auth: OAuth 2
  - Password
  - Token URL: `/api/auth/login`

Every stated size, or one chain's.

The client loads this once and holds it in memory: the badge resolver runs
synchronously during render — inside a memo, on every cell of a grid — and
cannot await anything.

`normalized_name` is re-derived on the way out — see the module docstring.
The browser keys its dictionary on whatever this returns and looks it up
with normName(), the twin of norm_name(), so the server owning the key is
what keeps a row written under an older rule reachable.

## Query parameters

- `chain_id` integer, nullable

## Response `200`

Successful Response

- SizeEntryResponse[]
  - `chain_id` integer, required
  - `product_name` string, required
  - `normalized_name` string, required
  - `platform` string
  - `shelf` string
  - `amount` number, nullable
  - `unit` string, nullable
  - `no_size` boolean, required
  - `source_note` string, nullable
  - `updated_at` string, date-time, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/getplace/apis/getplace-insights-api.md) - [All operations](https://skmtc.dev/getplace/apis/getplace-insights-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getplace/apis/getplace-insights-api/revisions/0f337387603f?raw)
