Everything lives under /v1. The interactive reference
(GET /v1/docs) and the OpenAPI spec (GET /v1/openapi.yaml) are
served by the API itself. The tables below are generated from the API's own route
table, so they list every endpoint the service actually exposes. Auth shows
the credential required: None means the endpoint is public and unmetered.
Every endpoint the service exposes — 64 of them — generated from the
API's own catalogue, which the test suite refuses to let drift from the router.
Auth shows the credential required; None means the endpoint is
public and unmetered.
| Method | Path | Auth | Summary |
GET | /v1 | None | Index of every endpoint, with the current version. |
GET | /v1/health | None | Liveness probe. Always cheap, never touches storage. |
GET | /v1/ready | None | Readiness probe — reports whether each backing store is bound. |
GET | /v1/methods/:tool | x-api-key | The algorithms a given tool supports. |
GET | /v1/formats | None | Every export format, across every exportable resource. |
GET | /v1/tiers | None | Rate limit and monthly quota for each tier. |
GET | /v1/metrics | None | Prometheus exposition of process-level counters. |
GET | /v1/status | None | Human-readable status page. |
GET | /v1/catalog | None | This catalogue as JSON — every endpoint with its parameters and examples. |
GET | /v1/docs | None | Interactive reference (Redoc). |
GET | /v1/openapi.yaml | None | The OpenAPI 3.1 document. |
GET | /v1/graphql | None | GraphQL playground. |
POST | /v1/graphql | x-api-key | Run a GraphQL query against the same resolvers as the REST surface. |
POST | /v1/color/convert | x-api-key | Convert one colour between the common spaces. |
POST | /v1/color/contrast | x-api-key | WCAG contrast ratio between two colours, with pass/fail at each level. |
GET | /v1/science/spaces | x-api-key | Every colour space the platform knows, with provenance. |
GET | /v1/science/spaces/:key | x-api-key | One colour space in full, including its conversion matrices. |
POST | /v1/science/convert | x-api-key | Convert a colour into any registry space, or several at once. |
POST | /v1/science/dossier | x-api-key | One colour rendered in every space at once, plus its colour temperature. |
POST | /v1/science/delta-e | x-api-key | Perceptual difference between two colours. |
POST | /v1/science/temperature | x-api-key | Correlated colour temperature from a colour, or the colour of a temperature. |
GET | /v1/science/illuminants | x-api-key | Standard reference illuminants with their chromaticities. |
GET | /v1/science/metrics | x-api-key | The difference formulae, their options, and when to use each. |
POST | /v1/palette/generate | x-api-key | Generate a palette from a seed colour. |
POST | /v1/palette/evaluate | x-api-key | Score a palette for harmony, contrast and accessibility. |
POST | /v1/palette/export | x-api-key | Render a palette into a design-tool format (ASE, GPL, ACO, …). |
POST | /v1/palette/from-image | x-api-key | Extract a palette from an uploaded image. |
POST | /v1/palette/png | x-api-key | Render a palette as a PNG swatch sheet. |
POST | /v1/harmony/generate | x-api-key | Build a harmony set (complementary, triadic, analogous, …) from a base colour. |
POST | /v1/harmony/classify | x-api-key | Identify which harmony an existing set of colours follows. |
POST | /v1/harmony/export | x-api-key | Export a harmony set. |
POST | /v1/gradient/generate | x-api-key | Interpolate a gradient between stops, in a chosen space. |
POST | /v1/gradient/export | x-api-key | Export a gradient as CSS, SVG or a design-tool format. |
POST | /v1/gradient/png | x-api-key | Render a gradient as a PNG. |
POST | /v1/shade/scale | x-api-key | Build a tint/shade scale from one colour. |
POST | /v1/shade/export | x-api-key | Export a shade scale. |
POST | /v1/tokens/generate | x-api-key | Turn one seed colour into a complete, contrast-checked token system. |
POST | /v1/tokens/export | x-api-key | Render a token deck for a specific platform. |
GET | /v1/tokens/formats | x-api-key | The ten token export targets. |
POST | /v1/accessibility/check | x-api-key | Check a foreground/background pair against WCAG 2.2 and APCA. |
POST | /v1/accessibility/recommend | x-api-key | Suggest the nearest accessible alternative to a failing pair. |
POST | /v1/accessibility/from-image | x-api-key | Audit the colour contrast present in an image. |
GET | /v1/vision/models | x-api-key | The colour-vision deficiency models available. |
POST | /v1/vision/simulate | x-api-key | Simulate how a colour appears under a vision deficiency. |
POST | /v1/vision/simulate-image | x-api-key | Simulate a vision deficiency across a whole image. |
POST | /v1/ishihara/plate | x-api-key | Generate an Ishihara test plate as structured data. |
POST | /v1/ishihara/png | x-api-key | Render an Ishihara plate as a PNG. |
GET | /v1/usage | x-api-key | Durable per-day, per-endpoint history for your key. |
GET | /v1/usage/me | x-api-key | Your tier, limits and month-to-date quota consumption. |
GET | /v1/usage/live | x-api-key | The last 100 individual calls, with rolling latency and error stats. |
GET | /v1/usage/stream | x-api-key | The same live feed, pushed over Server-Sent Events. |
GET | /v1/jobs | x-api-key | The async job types this deployment can run. |
POST | /v1/jobs/:type | x-api-key | Queue a long-running job and get an id back immediately. |
GET | /v1/jobs/id/:id | x-api-key | Poll one job. |
GET | /v1/jobs/id/:id/stream | x-api-key | Follow a job to completion over SSE instead of polling. |
GET | /v1/webhooks/events | None | Event types you can subscribe to. |
GET | /v1/webhooks | x-api-key | List your webhook subscriptions. |
POST | /v1/webhooks | x-api-key | Subscribe a URL to one or more events. |
GET | /v1/webhooks/:id | x-api-key | Fetch one subscription. |
DELETE | /v1/webhooks/:id | x-api-key | Revoke a subscription. |
GET | /v1/admin/keys | x-admin-key | List issued API keys. |
POST | /v1/admin/keys | x-admin-key | Issue a key. The secret is shown once and stored only as a hash. |
GET | /v1/admin/keys/:id | x-admin-key | Fetch one key record (never the secret). |
DELETE | /v1/admin/keys/:id | x-admin-key | Revoke a key immediately. |
Discovery
GET
/v1
No key
Index of every endpoint, with the current version.
Returns version string, endpoints string[]
Example
curl "https://api.auricartisan.com/v1"
GET
/v1/health
No key
Liveness probe. Always cheap, never touches storage.
Returns ok boolean, time ISO-8601
Example
curl "https://api.auricartisan.com/v1/health"
GET
/v1/ready
No key
Readiness probe — reports whether each backing store is bound.
Use this in a deploy gate. /v1/health says the process is up; this says it can actually serve.
Returns ready boolean, checks object
Example
curl "https://api.auricartisan.com/v1/ready"
GET
/v1/methods/:tool
The algorithms a given tool supports.
Parameters
| Name | Type | Required | Description |
tool | path | Yes | e.g. palette, harmony, vision. |
Example
curl "https://api.auricartisan.com/v1/methods/harmony" \
-H "x-api-key: $AURIC_API_KEY"
GET
/v1/formats
No key
Every export format, across every exportable resource.
Example
curl "https://api.auricartisan.com/v1/formats"
GET
/v1/tiers
No key
Rate limit and monthly quota for each tier.
Example
curl "https://api.auricartisan.com/v1/tiers"
GET
/v1/metrics
No key
Prometheus exposition of process-level counters.
Example
curl "https://api.auricartisan.com/v1/metrics"
GET
/v1/status
No key
Human-readable status page.
Example
curl "https://api.auricartisan.com/v1/status"
GET
/v1/catalog
No key
This catalogue as JSON — every endpoint with its parameters and examples.
Machine-readable and generated from the same source as the OpenAPI spec, so a client can build its own reference or validate coverage.
Example
curl "https://api.auricartisan.com/v1/catalog"
GET
/v1/docs
No key
Interactive reference (Redoc).
Example
curl "https://api.auricartisan.com/v1/docs"
GET
/v1/openapi.yaml
No key
The OpenAPI 3.1 document.
Example
curl "https://api.auricartisan.com/v1/openapi.yaml"
Colour
POST
/v1/color/convert
Convert one colour between the common spaces.
For the full 63-space registry with white-point control, use /v1/science/convert.
Request body
| Name | Type | Required | Description |
color | color | Yes | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
to | string | No | A single target space. Omit to get every common space at once. |
Example
curl -X POST "https://api.auricartisan.com/v1/color/convert" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"color":"#c9a227","to":"lab"}'
POST
/v1/color/contrast
WCAG contrast ratio between two colours, with pass/fail at each level.
Request body
| Name | Type | Required | Description |
foreground | color | Yes | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
background | color | Yes | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
Returns ratio number, aa boolean, aaa boolean, aa_large boolean
Example
curl -X POST "https://api.auricartisan.com/v1/color/contrast" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"foreground":"#767676","background":"#ffffff"}'
Colour science
GET
/v1/science/spaces
Every colour space the platform knows, with provenance.
Sixty-three spaces across RGB working spaces, CIE spaces, perceptual and appearance models, HDR containers, print and video. Ask for full=true to get primaries, transfer curves and the XYZ matrices.
Parameters
| Name | Type | Required | Description |
category | query | No | Filter: rgb, cie, perceptual, cylindrical, appearance, hdr, print, video, order, opponent. |
full | query | No | true to include matrices, primaries and transfer functions. |
Example
curl "https://api.auricartisan.com/v1/science/spaces?category=perceptual" \
-H "x-api-key: $AURIC_API_KEY"
GET
/v1/science/spaces/:key
One colour space in full, including its conversion matrices.
Parameters
| Name | Type | Required | Description |
key | path | Yes | e.g. oklch, display-p3, acescct. |
Errors UNKNOWN_SPACE (404) — No space with that key. The response suggests near matches.
Example
curl "https://api.auricartisan.com/v1/science/spaces/oklch" \
-H "x-api-key: $AURIC_API_KEY"
POST
/v1/science/convert
Convert a colour into any registry space, or several at once.
Request body
| Name | Type | Required | Description |
color | color | Yes | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
to | string | string[] | Yes | One space key, or an array of them. |
white_point | string | No | Reference white, default D65. |
Example
curl -X POST "https://api.auricartisan.com/v1/science/convert" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"color":"#c9a227","to":["lab","oklch","display-p3"]}'
POST
/v1/science/dossier
One colour rendered in every space at once, plus its colour temperature.
The full lab readout. Expensive relative to convert — reach for it when you want everything, not when you want three spaces.
Request body
| Name | Type | Required | Description |
color | color | Yes | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
white_point | string | No | Reference white, default D65. |
category | string | No | Restrict to one category. |
Example
curl -X POST "https://api.auricartisan.com/v1/science/dossier" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"color":"#c9a227"}'
POST
/v1/science/delta-e
Perceptual difference between two colours.
Returns CIE76, CIE94, CIEDE2000 and CMC together, with a plain-language band. CIEDE2000 is the headline figure and is verified against the Sharma reference set.
Request body
| Name | Type | Required | Description |
from | color | Yes | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
to | color | Yes | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
metric | string | No | ciede2000 (default headline), cie94, cie76, cmc, or all. |
application | string | No | CIE94 only: graphic (default) or textile. |
l | number | No | CMC lightness weight, default 2. |
c | number | No | CMC chroma weight, default 1. |
Returns delta_e number, band string, metrics object
Example
curl -X POST "https://api.auricartisan.com/v1/science/delta-e" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"from":"#c9a227","to":"#d3af37"}'
POST
/v1/science/temperature
Correlated colour temperature from a colour, or the colour of a temperature.
Send color to measure, or kelvin to render. Always returns Duv alongside the CCT — beyond about ±0.05 the colour is too far from the Planckian locus for a temperature to describe it, and meaningful says so.
Request body
| Name | Type | Required | Description |
color | color | No | Measure this colour. Mutually exclusive with kelvin. |
kelvin | number | No | Render this temperature, 1667–25000 K. |
Returns cct_kelvin number, duv number, meaningful boolean, tint string
Example
curl -X POST "https://api.auricartisan.com/v1/science/temperature" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"color":"#fff5e1"}'
GET
/v1/science/illuminants
Standard reference illuminants with their chromaticities.
Example
curl "https://api.auricartisan.com/v1/science/illuminants" \
-H "x-api-key: $AURIC_API_KEY"
GET
/v1/science/metrics
The difference formulae, their options, and when to use each.
Example
curl "https://api.auricartisan.com/v1/science/metrics" \
-H "x-api-key: $AURIC_API_KEY"
Palettes
POST
/v1/palette/generate
Generate a palette from a seed colour.
Request body
| Name | Type | Required | Description |
seed | color | No | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
count | integer | No | How many colours. |
method | string | No | See /v1/methods/palette. |
Example
curl -X POST "https://api.auricartisan.com/v1/palette/generate" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"seed":"#c9a227","count":5}'
POST
/v1/palette/evaluate
Score a palette for harmony, contrast and accessibility.
Request body
| Name | Type | Required | Description |
colors | color[] | Yes | The palette to assess. |
Example
curl -X POST "https://api.auricartisan.com/v1/palette/evaluate" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"colors":["#c9a227","#1d2a3e","#fffcf7"]}'
POST
/v1/palette/export
Render a palette into a design-tool format (ASE, GPL, ACO, …).
Request body
| Name | Type | Required | Description |
colors | color[] | Yes | The palette to render. |
format | string | Yes | See /v1/formats. |
Example
curl -X POST "https://api.auricartisan.com/v1/palette/export" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"colors":["#c9a227","#1d2a3e"],"format":"ase"}'
POST
/v1/palette/from-image
Extract a palette from an uploaded image.
Request body
| Name | Type | Required | Description |
image | string | Yes | Base64 or data URL. |
count | integer | No | Colours to extract. |
Example
curl -X POST "https://api.auricartisan.com/v1/palette/from-image" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{}'
POST
/v1/palette/png
Render a palette as a PNG swatch sheet.
Request body
| Name | Type | Required | Description |
colors | color[] | Yes | The palette to draw. |
Returns image/png
Example
curl -X POST "https://api.auricartisan.com/v1/palette/png" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{}'
Harmony
POST
/v1/harmony/generate
Build a harmony set (complementary, triadic, analogous, …) from a base colour.
Request body
| Name | Type | Required | Description |
color | color | Yes | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
scheme | string | No | See /v1/methods/harmony. |
Example
curl -X POST "https://api.auricartisan.com/v1/harmony/generate" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"color":"#c9a227","scheme":"triadic"}'
POST
/v1/harmony/classify
Identify which harmony an existing set of colours follows.
Request body
| Name | Type | Required | Description |
colors | color[] | Yes | The colours to classify. |
Example
curl -X POST "https://api.auricartisan.com/v1/harmony/classify" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{}'
POST
/v1/harmony/export
Export a harmony set.
Request body
| Name | Type | Required | Description |
colors | color[] | Yes | The harmony set to render. |
format | string | Yes | See /v1/formats. |
Example
curl -X POST "https://api.auricartisan.com/v1/harmony/export" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{}'
Gradients
POST
/v1/gradient/generate
Interpolate a gradient between stops, in a chosen space.
Request body
| Name | Type | Required | Description |
stops | color[] | Yes | Two or more colours. |
steps | integer | No | Samples to return. |
space | string | No | Interpolation space — oklab avoids the grey dip that srgb produces. |
Example
curl -X POST "https://api.auricartisan.com/v1/gradient/generate" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"stops":["#c9a227","#1d2a3e"],"steps":7,"space":"oklab"}'
POST
/v1/gradient/export
Export a gradient as CSS, SVG or a design-tool format.
Request body
| Name | Type | Required | Description |
stops | color[] | Yes | The gradient stops. |
format | string | Yes | See /v1/formats. |
Example
curl -X POST "https://api.auricartisan.com/v1/gradient/export" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{}'
POST
/v1/gradient/png
Render a gradient as a PNG.
Request body
| Name | Type | Required | Description |
stops | color[] | Yes | The gradient stops. |
Returns image/png
Example
curl -X POST "https://api.auricartisan.com/v1/gradient/png" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{}'
Shades
POST
/v1/shade/scale
Build a tint/shade scale from one colour.
Request body
| Name | Type | Required | Description |
color | color | Yes | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
steps | integer | No | Steps in the scale. |
Example
curl -X POST "https://api.auricartisan.com/v1/shade/scale" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"color":"#c9a227","steps":9}'
POST
/v1/shade/export
Export a shade scale.
Request body
| Name | Type | Required | Description |
color | color | Yes | Base colour of the scale. |
format | string | Yes | See /v1/formats. |
Example
curl -X POST "https://api.auricartisan.com/v1/shade/export" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{}'
Design tokens
POST
/v1/tokens/generate
Turn one seed colour into a complete, contrast-checked token system.
Ramps are stepped in OKLCH so every hue is perceptually even, chroma follows a gamut-aware envelope so the light and dark ends stay distinct, and the foreground roles are measured rather than assumed — --color-on-primary is whichever of white or ink actually clears 4.5:1.
Request body
| Name | Type | Required | Description |
seed | color | Yes | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
name | string | No | System name used in file headers. |
harmony | string | No | analogous (default), complementary, triadic, mono. |
include | string[] | No | Any of color, space, radius, type. Defaults to all. |
dark | boolean | No | Include dark-mode roles. Default true. |
Returns meta object, contrast array, out_of_gamut string[], tokens array
Example
curl -X POST "https://api.auricartisan.com/v1/tokens/generate" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"seed":"#c9a227","name":"Auric","harmony":"analogous"}'
POST
/v1/tokens/export
Render a token deck for a specific platform.
Ten targets, from CSS custom properties to Jetpack Compose. Pass raw: true to get the file itself rather than a JSON envelope.
Request body
| Name | Type | Required | Description |
tokens | array | Yes | Objects of { name, value, group? } — the tokens array from generate, or your own. |
format | string | Yes | See /v1/tokens/formats. |
name | string | No | System name for the file header. |
raw | boolean | No | true returns the file with a download disposition. |
Example
curl -X POST "https://api.auricartisan.com/v1/tokens/export" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"format":"css","tokens":[{"name":"--color-primary","value":"#c9a227"}]}'
GET
/v1/tokens/formats
The ten token export targets.
Example
curl "https://api.auricartisan.com/v1/tokens/formats" \
-H "x-api-key: $AURIC_API_KEY"
Accessibility
POST
/v1/accessibility/check
Check a foreground/background pair against WCAG 2.2 and APCA.
Request body
| Name | Type | Required | Description |
foreground | color | Yes | Text colour. |
background | color | Yes | Surface behind the text. |
font_size | number | No | Enables large-text thresholds. |
Example
curl -X POST "https://api.auricartisan.com/v1/accessibility/check" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"foreground":"#767676","background":"#ffffff"}'
POST
/v1/accessibility/recommend
Suggest the nearest accessible alternative to a failing pair.
Keeps hue, moves lightness — so the fix still looks like the brand.
Request body
| Name | Type | Required | Description |
foreground | color | Yes | Text colour to adjust. |
background | color | Yes | Surface it sits on. |
target | string | No | AA (default) or AAA. |
Example
curl -X POST "https://api.auricartisan.com/v1/accessibility/recommend" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"foreground":"#c9a227","background":"#ffffff","target":"AA"}'
POST
/v1/accessibility/from-image
Audit the colour contrast present in an image.
Request body
| Name | Type | Required | Description |
image | string | Yes | Base64 or data URL. |
Example
curl -X POST "https://api.auricartisan.com/v1/accessibility/from-image" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{}'
Vision
GET
/v1/vision/models
The colour-vision deficiency models available.
Example
curl "https://api.auricartisan.com/v1/vision/models" \
-H "x-api-key: $AURIC_API_KEY"
POST
/v1/vision/simulate
Simulate how a colour appears under a vision deficiency.
Request body
| Name | Type | Required | Description |
color | color | Yes | A colour as #rrggbb, #rgb, rgb(r,g,b), [r,g,b], or {r,g,b}. |
model | string | No | deuteranopia, protanopia, tritanopia, … |
severity | number | No | 0–1, for anomalous trichromacy. |
Example
curl -X POST "https://api.auricartisan.com/v1/vision/simulate" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"color":"#c9a227","model":"deuteranopia"}'
POST
/v1/vision/simulate-image
Simulate a vision deficiency across a whole image.
Request body
| Name | Type | Required | Description |
image | string | Yes | Base64 or data URL. |
model | string | Yes | Deficiency to simulate. |
Returns image/png
Example
curl -X POST "https://api.auricartisan.com/v1/vision/simulate-image" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{}'
Ishihara
POST
/v1/ishihara/plate
Generate an Ishihara test plate as structured data.
Request body
| Name | Type | Required | Description |
value | string | No | Digits to hide in the plate. |
model | string | No | Deficiency the plate should discriminate. |
Example
curl -X POST "https://api.auricartisan.com/v1/ishihara/plate" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"value":"74","model":"deuteranopia"}'
POST
/v1/ishihara/png
Render an Ishihara plate as a PNG.
Request body
| Name | Type | Required | Description |
value | string | No | Digits to hide in the plate. |
Returns image/png
Example
curl -X POST "https://api.auricartisan.com/v1/ishihara/png" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{}'
Usage
GET
/v1/usage
Durable per-day, per-endpoint history for your key.
Parameters
| Name | Type | Required | Description |
since | query | No | Earliest day to include, YYYY-MM-DD. Defaults to seven days back. |
Example
curl "https://api.auricartisan.com/v1/usage" \
-H "x-api-key: $AURIC_API_KEY"
GET
/v1/usage/me
Your tier, limits and month-to-date quota consumption.
Example
curl "https://api.auricartisan.com/v1/usage/me" \
-H "x-api-key: $AURIC_API_KEY"
GET
/v1/usage/live
The last 100 individual calls, with rolling latency and error stats.
Answers "what is happening right now" where /v1/usage answers "how much have I used". Pass the returned cursor back as since to poll incrementally.
Parameters
| Name | Type | Required | Description |
limit | query | No | 1–100, default 50. |
since | query | No | Sequence number from a previous cursor. |
Returns cursor number, stats object, events array
Example
curl "https://api.auricartisan.com/v1/usage/live" \
-H "x-api-key: $AURIC_API_KEY"
GET
/v1/usage/stream
SSE
The same live feed, pushed over Server-Sent Events.
Emits hello on connect with current stats, usage per request, and heartbeat every 15 s. Connections are capped at 10 minutes; EventSource reconnects on its own.
Example
curl "https://api.auricartisan.com/v1/usage/stream" \
-H "x-api-key: $AURIC_API_KEY"
Jobs
GET
/v1/jobs
The async job types this deployment can run.
Example
curl "https://api.auricartisan.com/v1/jobs" \
-H "x-api-key: $AURIC_API_KEY"
POST
/v1/jobs/:type
Queue a long-running job and get an id back immediately.
The body is the parameter set for the chosen job type, so its shape varies — GET /v1/jobs documents what each type accepts. Poll /v1/jobs/id/:id or follow /v1/jobs/id/:id/stream.
Parameters
| Name | Type | Required | Description |
type | path | Yes | From GET /v1/jobs. |
Example
curl -X POST "https://api.auricartisan.com/v1/jobs/palette-batch" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"count":500}'
GET
/v1/jobs/id/:id
Poll one job.
Parameters
| Name | Type | Required | Description |
id | path | Yes | |
Example
curl "https://api.auricartisan.com/v1/jobs/id/<id>" \
-H "x-api-key: $AURIC_API_KEY"
GET
/v1/jobs/id/:id/stream
SSE
Follow a job to completion over SSE instead of polling.
Parameters
| Name | Type | Required | Description |
id | path | Yes | |
Example
curl "https://api.auricartisan.com/v1/jobs/id/<id>/stream" \
-H "x-api-key: $AURIC_API_KEY"
Webhooks
GET
/v1/webhooks/events
No key
Event types you can subscribe to.
Public: it is a static list of event names, useful for deciding whether the API fits before you buy.
Example
curl "https://api.auricartisan.com/v1/webhooks/events"
GET
/v1/webhooks
List your webhook subscriptions.
Example
curl "https://api.auricartisan.com/v1/webhooks" \
-H "x-api-key: $AURIC_API_KEY"
POST
/v1/webhooks
Subscribe a URL to one or more events.
Deliveries are signed; verify the signature header before trusting a payload.
Request body
| Name | Type | Required | Description |
url | string | Yes | HTTPS endpoint to deliver to. |
events | string[] | Yes | From /v1/webhooks/events. |
Example
curl -X POST "https://api.auricartisan.com/v1/webhooks" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"url":"https://example.com/hook","events":["job.succeeded"]}'
GET
/v1/webhooks/:id
Fetch one subscription.
Parameters
| Name | Type | Required | Description |
id | path | Yes | |
Example
curl "https://api.auricartisan.com/v1/webhooks/<id>" \
-H "x-api-key: $AURIC_API_KEY"
DELETE
/v1/webhooks/:id
Revoke a subscription.
Parameters
| Name | Type | Required | Description |
id | path | Yes | |
Example
curl -X DELETE "https://api.auricartisan.com/v1/webhooks/<id>" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{}'
GraphQL
GET
/v1/graphql
No key
GraphQL playground.
Example
curl "https://api.auricartisan.com/v1/graphql"
POST
/v1/graphql
Run a GraphQL query against the same resolvers as the REST surface.
Useful when one round trip should answer several questions — convert a colour, check its contrast and simulate it at once.
Request body
| Name | Type | Required | Description |
query | string | Yes | The GraphQL document. |
variables | object | No | Variable values. |
Example
curl -X POST "https://api.auricartisan.com/v1/graphql" \
-H "x-api-key: $AURIC_API_KEY" \
-H "content-type: application/json" \
-d '{"query":"{ contrast(foreground: \"#000\", background: \"#fff\") { ratio wcag_aa } }"}'
Admin
GET
/v1/admin/keys
Admin
List issued API keys.
Example
curl "https://api.auricartisan.com/v1/admin/keys" \
-H "x-admin-key: $AURIC_ADMIN_KEY"
POST
/v1/admin/keys
Admin
Issue a key. The secret is shown once and stored only as a hash.
Request body
| Name | Type | Required | Description |
tier | string | No | One of free, pro, enterprise. |
label | string | No | Who this key is for. |
Example
curl -X POST "https://api.auricartisan.com/v1/admin/keys" \
-H "x-admin-key: $AURIC_ADMIN_KEY" \
-H "content-type: application/json" \
-d '{}'
GET
/v1/admin/keys/:id
Admin
Fetch one key record (never the secret).
Parameters
| Name | Type | Required | Description |
id | path | Yes | |
Example
curl "https://api.auricartisan.com/v1/admin/keys/<id>" \
-H "x-admin-key: $AURIC_ADMIN_KEY"
DELETE
/v1/admin/keys/:id
Admin
Revoke a key immediately.
Parameters
| Name | Type | Required | Description |
id | path | Yes | |
Example
curl -X DELETE "https://api.auricartisan.com/v1/admin/keys/<id>" \
-H "x-admin-key: $AURIC_ADMIN_KEY" \
-H "content-type: application/json" \
-d '{}'
Errors returned by any endpoint
| Code | Status | When |
UNAUTHENTICATED | 401 | No key, or a key that is not recognised. |
FORBIDDEN | 403 | Valid key without rights for this route (for example a non-admin key on /v1/admin/*). |
NOT_FOUND | 404 | No route matches. GET /v1 lists them all. |
METHOD_NOT_ALLOWED | 405 | Right path, wrong verb. The Allow header lists what is accepted. |
INVALID_INPUT | 400 | A field failed validation. The message names the field. |
INVALID_JSON | 400 | The body is not parseable JSON. |
RATE_LIMITED | 429 | Per-minute rate limit exceeded. Retry-After says when to try again. |
QUOTA_EXCEEDED | 429 | Monthly quota exhausted. x-quota-reset gives the reset time. |
INTERNAL | 500 | Unhandled server error. Quote the request_id when reporting it. |