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
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
| Field | Type | Notes |
|---|---|---|
| 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 |
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 |
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.
| Field | Notes |
|---|---|
| slug | Pass this as a line's |
| 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 |
media
Fine-art and photographic stocks for paper prints.
| Field | Notes |
|---|---|
| id | Pass as |
| 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 |
|
| surfaceType |
|
| 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.
| Field | Notes |
|---|---|
| id | Pass as |
| 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 |
|
| surfaceType |
|
| 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.
| Field | Notes |
|---|---|
| id | Pass as |
| 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 |
|
| surfaceType |
|
| 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.
| Field | Notes |
|---|---|
| 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.
| Field | Notes |
|---|---|
| id | Pass as |
| 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. |
| qualityTierIds | Quality tiers this profile belongs to. Null means unrestricted. |
canvasMouldings
The strict subset of mouldings usable as a canvas float frame.
| Field | Notes |
|---|---|
| id | Pass as |
| 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. |
| qualityTierIds | Quality tiers this profile belongs to. Null means unrestricted. |
matboards
Window mount boards.
| Field | Notes |
|---|---|
| id | Pass as |
| 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.
| Field | Notes |
|---|---|
| id | Pass as |
| 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.
| Field | Notes |
|---|---|
| id | Pass as |
| 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.
| Field | Notes |
|---|---|
| id | Pass as |
| 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.
| Field | Notes |
|---|---|
| sizeCode | Pass as |
| widthMm | Sleeve width, mm. |
| heightMm | Sleeve height, mm. |