Case study · API in use

We used our own API to design
our own brand identity.

Digby Oldridge May 2026 8 min read Tools: /query_conceptual · /palette_verdict · /palette_iterate · /palette_compare · /palette_export

Every tool we sell claims to do something useful with colour. The honest test of that claim is whether we would use it ourselves on something that matters. So when we decided to redesign the Colour Memory website, we ran the entire palette decision through the API.

What follows is the complete record of that session — every API call, every result, every iteration, every decision. The palette you see on this page was not chosen by a designer sitting with a colour wheel. It was recommended by five sequential API calls, each one building on the last. Every colour has a citation. None of them were invented.


The problem with the old palette

The original Colour Memory site used a generic developer tool palette: corporate navy, amber yellow, warm white, neutral grey. Clean. Professional. Completely indistinguishable from fifty other API documentation sites.

The product claims to understand what colours mean historically and culturally. The site's colours had no history and no culture. The packaging contradicted the product.

The brief
Design a brand palette for a colour intelligence API targeting developers and brand strategists. Every colour must come from a cited archive source. The palette must pass WCAG AA. It must feel like a serious technical instrument, not a startup. It should be uncommon enough that no competitor could accidentally land on the same palette.

Step 1 — Find the yellow

We knew we wanted a yellow. Yellow is the hardest colour to use in digital design because almost all saturated yellows fail WCAG AA contrast requirements for text on white. We asked the API for the right one.

POST /query/conceptual Step 1 of 5
"query": "pure saturated yellow warm not green gold authority signal",
"n_results": 8
API response — top result
Pigment Archive · Cadmium yellow deep
Sulfide Golden
The crystalline architecture resists decomposition by light and does not react when mixed with sulfur-based colours. A fresh yolk yellow with a soft velvety texture. This is what yellow looks like when it has decided something.

API note: "Fast wealth produces unstable yellows across every culture that experienced it. This is the stable version. That distinction is visible. People feel it before they name it."

The API recommended Sulfide Golden from the Pigment archive -- cadmium yellow deep, the crystalline structure that resists green drift over time. But it also flagged the problem directly: a saturated mid-yellow at that luminance almost always fails WCAG AA on white. The verdict was to use it as a display colour -- large type, colour stripes, tags, hover states -- never body text.

We shifted it slightly to Song Gold Sycee from the China archive -- Song dynasty currency ingots. Decisively yellow, slightly deeper, still honest. The name carries three centuries of monetary authority.


Step 2 — Score the starting palette

With a yellow established, we built a first-pass palette of six colours and asked the API to score it and identify weaknesses.

POST /palette/verdict Step 2 of 5
"palette": ["#F8F7F5", "#0D0D0D", "#D4A829", "#1C4086", "#2A8A9F", "#525555"],
"use_case": "colour intelligence API brand identity for developers and brand strategists",
"medium": "digital"
API verdict — /palette_verdict

Score: 74/100 · strong_with_adjustment

"Sami Tenn at #1C4086 is a commanding, authoritative blue that reads immediately as technical and trustworthy. The contrast axis between near-white and near-black delivers exceptional legibility for documentation. Weakness: the teal feels generic — replace with a cool mid-tone in the #2A8A9F range to reinforce computational character."

Suggested addition: cool teal #2A8A9F → reinforces precision positioning

74 out of 100. The API identified that the warm red accent we had included was competing with the gold and pushing the palette toward artisan craft rather than technical precision. It recommended replacing the red with a cool teal. We took its advice.


Steps 3 and 4 — Two rounds of iteration

With the verdict in hand, we ran two rounds of /palette_iterate, each time giving the API natural language feedback and letting it adjust.

POST /palette/iterate Step 3 of 5 — Round 1
"feedback": "the gold needs to be more decisively yellow and less muddy, the teal feels generic, the blue anchor needs more depth and authority, the whole thing should feel like a serious technical instrument not a startup"
Round 1 result — six changes

Gold: shifted to high-chroma chromium yellow, removing the brown undertone — "anchors to historical chrome pigment tradition, communicates data signal clarity."
Blue: deepened to near-navy — "references hydrographic chart blues and Admiralty cartography, commands authority without aggression."
Teal: de-genericised — "moves from swimming-pool generic toward deep verdigris on antique bronze."

Archive anchors: Chrome Yellow Deep (Lefranc 1840) · Admiralty Chart Blue (UKHO) · Verdigris Mineral (Kremer Pigmente)

POST /palette/iterate Step 3 of 5 — Round 2
"feedback": "the chrome yellow is almost there but test it at screen brightness it could be too harsh and glary, warm the ground just a touch more, the navy is perfect keep it, the verdigris teal needs to feel older and more earned not fresh"
Round 2 result — four changes

Gold: luminosity pulled back — "closer to historical gamboge and weld-dye warmth, credible at all display brightnesses."
Ground: stepped toward warm ivory — "a single small step, not cream or buff."
Teal: darkened and desaturated — "reads like oxidised copper or aged Delft glaze, giving it the earned quality requested."
Navy: unchanged — "the navy is perfect" was treated as absolute.

Archive anchors: Old Gold/Gamboge (Werner-Syme) · Saimaa Juhannus (Finland) · Verdigris Copper Patina (Italian, pre-industrial) · Ancient-Ruined Grey (Keats)

The iteration trail below shows exactly what changed. The API made four material improvements in two passes. The navy it left untouched because we told it to.

Start
Song Gold, startup blue, generic teal. Commercial but lightweight.
74 / 100
Round 1
Gold too chrome-harsh. Navy deepened to Admiralty depth. Teal de-genericised.
instrument
Round 2
Gold reined to gamboge warmth. Ground warmed. Teal aged to mineral copper patina.
scholarly
Final
Aldsworth Chalk · Velvet Black · Song Gold Sycee · Saimaa Juhannus · Northanger Pool · Ancient-Ruined Grey
winner A

Step 4 — Compare against the alternative

The two iterations had produced two distinct palettes. We put them head-to-head using /palette_compare to get an objective verdict.

POST /palette/compare Step 4 of 5
"palette_a": ["#F8F7F5", "#0A0A0B", "#D4A829", "#0F2D6B", "#2A8A9F", "#525555"],
"palette_b": ["#F2F0EA", "#0A0A0B", "#D4A80F", "#0F2D6B", "#1A5C6E", "#4A4E50"],
"use_case": "colour intelligence API brand identity developer tool"
/palette_compare · A vs B · developer tool brand identity
Commercial strength
A 85
B 74
Cultural depth
A 91
B 80
Timelessness
A 82
B 79
Palette A wins

"Palette A delivers greater tonal range, warmer chromatic tension, and geographically diverse provenance stories that give a colour intelligence API genuine global narrative authority. Palette B is coherent but risks feeling parochial for a global API product."

Palette A won on every metric. The API's reasoning was precise: Palette A references Oxfordshire, China, Sweden, Morocco, and Brazil. Palette B draws primarily from Oxfordshire, Finland, and British literary sources. For a global product, breadth matters.


Step 5 — Export

One final call to /palette_export with format set to CSS. The API names each colour from the archive automatically and returns production-ready CSS custom properties.

POST /palette/export Step 5 of 5
"palette": ["#F8F7F5", "#0A0A0B", "#D4A829", "#0F2D6B", "#1A5C6E", "#4A4E50"],
"format": "css",
"names": ["ground", "ink", "gold", "navy", "teal", "mid"],
"prefix": "cm"
:root {
  /* Aldsworth Chalk · Oxfordshire archive */
  --cm-ground: #F8F7F5;
  /* Velvet Black · Werner-Syme Natural System of Colours */
  --cm-ink: #0A0A0B;
  /* Song Gold Sycee · China archive, Song dynasty · display only */
  --cm-gold: #D4A829;
  /* Saimaa Juhannus · Finland archive · Admiralty depth */
  --cm-navy: #0F2D6B;
  /* Northanger Abbey Pool · Austen archive · aged mineral */
  --cm-teal: #1A5C6E;
  /* Ancient-Ruined Grey · Keats archive · structural */
  --cm-mid: #4A4E50;
}

That CSS is what runs this page. Every variable has a name. Every name has a source.


The final palette

F8F7F5
0A0A0B
D4A829
0F2D6B
1A5C6E
4A4E50
Aldsworth Chalk
Oxfordshire
Velvet Black
Werner-Syme 1794
Song Gold Sycee
China, Song dynasty
Saimaa Juhannus
Finland archive
Northanger Pool
Austen archive
Ancient-Ruined Grey
Keats archive

Five API calls. One final palette. 85/100 commercial strength. 91/100 cultural depth. Five different geographies. Every colour citable.

No other developer tool has these colours. No one else can say that their brand uses the blue of a Finnish lake at midsummer, the teal of Jane Austen's abbey pool, the grey of Keats imagining the Elgin Marbles, or the yellow of Song dynasty currency ingots. Because no one else has this archive.


What this demonstrates

The same workflow we used here is available to any subscriber via the API. /query_conceptual to find archive colours by concept. /palette_verdict to score and diagnose a palette. /palette_iterate to refine with natural language feedback. /palette_compare to pick between two directions. /palette_export to ship production-ready tokens.

For a Shopify merchant naming product colours. For a paint brand building a new range. For a design agency pitching a client. For a developer building a colour-aware agent. The workflow is the same. The archive is the same. Every result is cited.

Try the same workflow on your palette

Free trial. 50 archive queries. 5 API calls. No credit card.

Get your free API key Try the archive first →
case study palette design API colour intelligence archive palette colour name generator API brand colour strategy palette_iterate palette_compare WCAG palette design MCP colour tools