---
title: "Vanderpoel Pairing"
method: POST
path: "/vanderpoel/pairing"
---

# Vanderpoel Pairing

`POST /vanderpoel/pairing`

## Request

- Base URL: `https://api.colourmemory.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.colourmemory.com/vanderpoel/pairing`
- Auth: none declared

Emily Noyes Vanderpoel's documented "good" dyad/triad hue groupings
(Color Problems, 1902, Plate XXXVI "Good Dyads or Pairs" and Plate
XXXVII "Good Triads"), served straight from the build artefacts
vanderpoel/vanderpoel_dyads.json and vanderpoel_triads.json.

Given a hex: snaps it to the nearest of Vanderpoel's eleven real
hue-family labels, resolves that hex against the archive, and checks
whether the label is a member of any documented dyad or triad. Each
OTHER member is returned with its own nearest real archive match
(CIEDE2000, same machinery colour_harmonies uses), so a caller gets a
named archive colour with provenance rather than a bare 1902 label
string.

Unlike hay_contrast, this carries no proportional ratio -- only
Vanderpoel's own categorical "good" editorial judgement, printed
verbatim on the plates. Member names are sourced from a transcriber's
digitisation_alt_text (an accessibility description of the plate
image), not verified printed captions -- every response says so in
member_source_caveat, and each grouping additionally carries its own
record's wording of that caveat.

Returns groupings: null (not an empty list, not a substituted weaker
answer) when there is nothing documented -- for a near-neutral input,
where hue is not meaningfully defined and Vanderpoel's hue-family
judgements do not apply, or where the nearest label is a member of no
dyad or triad. With today's 11-label / 10-grouping dataset every label
IS in at least one grouping, so in practice the near-neutral case is
the one that fires. Silence is the honest answer, not a forced match --
same principle as hay_contrast's covered:false.

Example:
    {"hex": "#CC1A14"}

## Headers

- `x-api-key` string, nullable
- `origin` string, nullable

## Request body

- VanderpoelPairingRequest
  - `hex` string, required
  - `n_per_member` integer

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/colourmemory/apis/colour-memory-api.md) · [All operations](https://skmtc.dev/colourmemory/apis/colour-memory-api/llms.txt) · [OpenAPI document](https://skmtc.dev/colourmemory/apis/colour-memory-api/revisions/4ba028f64042?raw)
