Skip to content
Lucent ImagingLucent Imaging icon
API reference

Catalogue

What you may order, and the material identifiers a quote line may reference. Read it, cache it briefly, and build your own picker from it.

Retrieve the catalogue

GET
/catalogue
price:read
120/min

Carries no prices. Price a basket by POSTing it to /quotes, which runs the same pricer the storefront does - totalling client-side would miss tier discounts, the volume ladder, rush, shipping and the minimum top-up.

Response

FieldTypeNotes
products
required
array of object
products[].slug
required
string
products[].name
required
string
products[].description
required
string
products[].category
required
string | null
products[].requiresArtwork
required
boolean
media
required
array of object (map)
canvasMedia
required
array of object (map)
everydayArtMedia
required
array of object (map)
sizes
required
array of object (map)
mouldings
required
array of object (map)
canvasMouldings
required
array of object (map)
matboards
required
array of object (map)
glazing
required
array of object (map)
backing
required
array of object (map)
qualityTiers
required
array of object (map)
sleeves
required
array of object (map)

Status codes

200

The catalogue. Cached privately for 60s.

400

The request was rejected. Branch on error.code.

401

Missing, malformed, revoked, expired, or belonging to a disabled account - deliberately indistinguishable.

403

The key authenticated but lacks the required scope.

429

Rate limited. Honour Retry-After.

curl -s "https://lucentimaging.com.au/api/print/v1/catalogue" \
  -H "Authorization: Bearer $LUCENT_KEY"

The response is cached privately for 60 seconds. It is drawn from the same lists our own pickers use, so a material the studio withdraws disappears from both at once - which is also why you should re-read it periodically rather than hard-coding identifiers.

Sections

Each key in data is an array. Which sections matter depends on what you are ordering: a paper print needs media and nothing else, while framing draws on mouldings, matboards, glazing, backing and qualityTiers.

products

What you may order. A product absent from this list cannot be quoted.

FieldNotes
slug

Pass this as a line's productSlug.

name

Display name, as the studio calls it.

description

One-line summary of what the product is.

category

Grouping label, or null where the registry leaves it unset.

requiresArtwork

When true, every line for this product must carry an imageUrl from POST /uploads. A line without one is refused with ARTWORK_REQUIRED.

media

Fine-art and photographic stocks for paper prints.

FieldNotes
id

Pass as variantSelections.mediaId.

name

Internal label - what the studio says on a job sheet.

clientTitle

Customer-facing title where staff set one, else null.

description

Longer description of the stock, or null.

imageUrl

Swatch or sample image, or null.

storefrontTier

"basic" house stock, or "advanced" museum/archival.

surfaceType

"canvas" stock is orderable only on canvas-printing lines.

gramsPerSqm

Approximate GSM, for your own spec sheets. Null where unpublished.

maxPrintWidthMm

Widest printable dimension in mm, checked against the print's SHORT edge. Null means no per-stock limit.

canvasMedia

Canvas stocks. A separate, exclusive pool - a canvas line naming a paper id is refused with PRODUCT_UNAVAILABLE.

FieldNotes
id

Pass as variantSelections.mediaId.

name

Internal label - what the studio says on a job sheet.

clientTitle

Customer-facing title where staff set one, else null.

description

Longer description of the stock, or null.

imageUrl

Swatch or sample image, or null.

storefrontTier

"basic" house stock, or "advanced" museum/archival.

surfaceType

"canvas" stock is orderable only on canvas-printing lines.

gramsPerSqm

Approximate GSM, for your own spec sheets. Null where unpublished.

maxPrintWidthMm

Widest printable dimension in mm, checked against the print's SHORT edge. Null means no per-stock limit.

everydayArtMedia

The Everyday Art pool. Exclusive again: it does not overlap the other two.

FieldNotes
id

Pass as variantSelections.mediaId.

name

Internal label - what the studio says on a job sheet.

clientTitle

Customer-facing title where staff set one, else null.

description

Longer description of the stock, or null.

imageUrl

Swatch or sample image, or null.

storefrontTier

"basic" house stock, or "advanced" museum/archival.

surfaceType

"canvas" stock is orderable only on canvas-printing lines.

gramsPerSqm

Approximate GSM, for your own spec sheets. Null where unpublished.

maxPrintWidthMm

Widest printable dimension in mm, checked against the print's SHORT edge. Null means no per-stock limit.

sizes

Named sizes the storefront pickers offer. Lines carry explicit `artworkWidthMm` and `artworkHeightMm`, so this is a convenience list rather than a constraint.

FieldNotes
id

Size identifier.

label

Human label, e.g. "A2".

sizeCategory

Grouping the storefront pickers use.

widthMm

Width in whole millimetres.

heightMm

Height in whole millimetres.

mouldings

Frame profiles.

FieldNotes
id

Pass as variantSelections.mouldingId.

name

Internal label.

clientTitle

Customer-facing title where staff set one, else null.

widthMm

Face width of the profile, mm.

depthMm

Rebate depth, mm. Null where unpublished.

maxLengthMm

Longest stick available, mm. Null means no published limit.

colour

Colour name, or null.

colourHex

Colour as a hex triplet, or null.

imageUrl

Profile image, or null.

canvasFloatSuitable

Suitable as a canvas float frame. canvasMouldings is the strict subset where this is true; the flag stays on the row so a caller merging both lists can still tell them apart.

qualityTierIds

Quality tiers this profile belongs to. Null means unrestricted.

canvasMouldings

The strict subset of mouldings usable as a canvas float frame.

FieldNotes
id

Pass as variantSelections.mouldingId.

name

Internal label.

clientTitle

Customer-facing title where staff set one, else null.

widthMm

Face width of the profile, mm.

depthMm

Rebate depth, mm. Null where unpublished.

maxLengthMm

Longest stick available, mm. Null means no published limit.

colour

Colour name, or null.

colourHex

Colour as a hex triplet, or null.

imageUrl

Profile image, or null.

canvasFloatSuitable

Suitable as a canvas float frame. canvasMouldings is the strict subset where this is true; the flag stays on the row so a caller merging both lists can still tell them apart.

qualityTierIds

Quality tiers this profile belongs to. Null means unrestricted.

matboards

Window mount boards.

FieldNotes
id

Pass as variantSelections.matColorId - note the spelling, it is not matboardId.

name

Internal label.

clientTitle

Customer-facing title where staff set one, else null.

colour

Surface colour name, or null.

colourHex

Surface colour as a hex triplet, or null.

coreColour

The bevel core revealed when the window is cut, or null.

coreColourHex

Core colour as a hex triplet, or null.

isAcidFree

Acid-free board.

isMuseumGrade

Museum-grade cotton board.

qualityTierIds

Quality tiers this board belongs to. Null means unrestricted.

glazing

Glass and acrylic.

FieldNotes
id

Pass as variantSelections.glazingId.

name

Internal label.

clientTitle

Customer-facing title where staff set one, else null.

description

Longer description, or null.

imageUrl

Sample image, or null.

isUvProtective

Filters UV.

isAntiReflective

Anti-reflective coating.

isAcrylic

Acrylic rather than glass - the usual choice for a large or posted piece.

qualityTierIds

Quality tiers this glazing belongs to. Null means unrestricted.

backing

Backing boards.

FieldNotes
id

Pass as variantSelections.backingId.

name

Internal label.

clientTitle

Customer-facing title where staff set one, else null.

description

Longer description, or null.

imageUrl

Sample image, or null.

isAcidFree

Acid-free backing.

qualityTierIds

Quality tiers this backing belongs to. Null means unrestricted.

qualityTiers

Tiers filter which mouldings, matboards, glazing and backing may be combined. Where a material carries `qualityTierIds`, it is valid only inside those tiers.

FieldNotes
id

Pass as variantSelections.qualityTierId.

name

Display name.

slug

Stable slug for the tier.

description

What the tier means, or null.

imageUrl

Illustrative image, or null.

sleeves

Clear sleeve sizes for unframed prints.

FieldNotes
sizeCode

Pass as variantSelections.sleeve.

widthMm

Sleeve width, mm.

heightMm

Sleeve height, mm.