List your brand kits
Returns the caller's brand kits, most recently updated first. Every kit carries its `contrast` report, recomputed on read, so a client can render the per-swatch badge without running the maths itself.
Returns the caller's brand kits, most recently updated first. Every kit carries its contrast report, recomputed on read, so a client can render the per-swatch badge without running the maths itself.
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/brand/kits"{ "kits": [ { "id": "string", "name": "string", "tagline": "string", "voice": [ "string" ], "palette": { "primary": "string", "primaryForeground": "string", "secondary": "string", "secondaryForeground": "string", "accent": "string", "accentForeground": "string", "background": "string", "foreground": "string", "muted": "string", "border": "string", "destructive": "string" }, "fonts": { "heading": { "family": "string", "weights": [ 100 ] }, "body": { "family": "string", "weights": [ 100 ] } }, "logoAssetIds": [ "string" ], "contrast": { "passes": true, "pairs": [ { "foreground": "string", "background": "string", "ratio": 0, "level": "aa", "message": "string" } ], "failures": [ { "foreground": "string", "background": "string", "ratio": 0, "level": "aa", "message": "string" } ] }, "createdAt": "string", "updatedAt": "string" } ]}Update the caller's profile PATCH
Updates the per-caller profile. Both fields are optional; a caller can update one without touching the other. `displayName` is trimmed and capped to 80 characters; an empty string is treated as `null` and clears the saved value. `avatarId` is the 1-based index of the chosen Putty brand avatar (`avatar-1.png` … `avatar-20.png`); values outside the range are rejected with a 400.
Create a brand kit POST
Saves a brand kit. The palette is contrast-checked server-side against WCAG AA for its text pairs and a failing palette is refused with a 422 that names the offending pair — the check cannot be skipped by calling the API directly. Font families must come from the committed allowlist; a family outside it is a 400.