---
title: "The canonical form vocabulary — the structural primitive"
method: GET
path: "/api/forms"
tags: ["marketing-feeds"]
---

# The canonical form vocabulary — the structural primitive

`GET /api/forms`

## Request

- Base URL: `https://peopleanalyst.com`
- URL: `https://peopleanalyst.com/api/forms`
- Auth: none declared

7 data shapes and the 33 canonical forms they resolve to. The form is why one engine reads compensation, attrition, funnels and survey data without a per-domain rewrite: the domain is in the metric tag, the structure is here. 'oftenMeans' is a labelled heuristic, never a conclusion.

## Query parameters

- `shape` 'series' | 'groups' | 'distribution' | 'pairs' | 'funnel' | 'composition' | 'dist_over_time'

## Response `200`

{ contract, note, shapes, count, forms: FormRender[] }

- object

---

[API](https://skmtc.dev/peopleanalyst/apis/peopleanalyst-public-feeds.md) · [All operations](https://skmtc.dev/peopleanalyst/apis/peopleanalyst-public-feeds/llms.txt) · [OpenAPI document](https://skmtc.dev/peopleanalyst/apis/peopleanalyst-public-feeds/revisions/f369fadcfd61?raw)
