Printago API
GET
/v1/customizer/configs/{id}
Get customizer config
Get one customizer config by id.
Path Parameters
id
required
string
Response Schema
CustomizerConfig
configJsonrequired
object
The configuration blob stored in `customizer_configs.config_json`.
The shape is intentionally permissive — exact fields are owned by the
customizer React app.
allowShapesoptional
boolean
When true (default), customers can add primitive shapes (rect, circle,
triangle, line) alongside text + uploaded SVGs. Set false on simpler
products where only text customization is desired.
backgroundSvgoptional
object
Uploaded background/mask SVG describing the printable surface.
`widthMm` / `heightMm` are the real-world dimensions inferred at
upload time — preferred over reading the raw `viewBox` as mm,
because viewBox-only SVGs (no explicit width/height) carry user
units, not millimetres. The customizer canvas should size off
`widthMm` / `heightMm` so it matches what OpenSCAD reads
downstream.
heightMmoptional
number
Real-world height in millimetres. Optional for backward compat with pre-inference uploads.
sourceBboxoptional
object
Natural position of the source DXF model in its own Y-up coord
system. Set on the DXF intake path; absent for direct SVG uploads.
Surfaced to the customer-app so every per-config export (background
+ layers) uses the same `${x} ${y} ${width} ${height}` viewBox and
overlays in OpenSCAD without any merchant translate.
heightrequired
number
widthrequired
number
xrequired
number
yrequired
number
sourcePathoptional
string
Original uploaded filename / path. Used to detect DXF vs SVG intake in the admin UI.
storagePathrequired
string
viewBoxrequired
string
Raw `viewBox` string copied from the uploaded SVG (e.g. `-95 -55 189 127`).
widthMmoptional
number
Real-world width in millimetres. Optional for backward compat with pre-inference uploads.
colorsoptional
object[]
Available colors the customer can pick from. Each entry stores a hex
value, optional merchant-defined display alias (e.g. "Jet" instead of
"#000000"), and optional pointer back to the material variant the color
was imported from.
aliasoptional
string
Optional display alias shown to customers.
sourceMaterialVariantIdoptional
string
When auto-imported from a material variant, the source variant id.
valuerequired
string
Hex code, e.g. `#FF0000`. The 8-char `#RRGGBBAA` form is also accepted.
colorsEnabledoptional
boolean
Toggle hiding the customer-facing color pickers entirely. Defaults to true.
constraintsoptional
Record<string, any>
Construct a type with a set of properties K of type T
defaultsoptional
Record<string, any>
Construct a type with a set of properties K of type T
enabledFontsoptional
object[]
Subset of the store font pool enabled for this SKU.
aliasoptional
string
familyrequired
string
sourcerequired
any
finishesoptional
string[]
Available finishes (e.g. `matte`, `gloss`).
instructionsTextoptional
string
Instructional text shown beneath the canvas.
maskPathoptional
string
SVG path describing the printable mask.
outlineoptional
object
Per-config outline defaults. Each text / SVG / shape layer can opt
into an outline (rendered as a separate `<path stroke=... fill="none">`
element in the exported SVG so downstream pipelines can color-code
or extrude it as a distinct part).
defaultColoroptional
string
Default stroke color used by new layers.
defaultWidthMmoptional
number
Default stroke width in millimeters.
enabledByDefaultoptional
boolean
When true, new layers start with their outline turned on.
minWidthMmoptional
number
Floor on the per-layer outline width a customer can set, in
millimeters. Customers can still DISABLE the outline entirely
with the per-layer toggle — this minimum only applies when the
outline is on. Typical: 0.4mm (one FDM nozzle pass).
shapesWarningoptional
string
Optional warning text shown under the shape-add row in the customer
app. Shapes don't currently respect z-order — overlapping geometries
may not output the way the customer expects, so a heads-up nudge is
useful. Empty / undefined hides the warning entirely. Only renders
when `allowShapes !== false`.
subtitleoptional
string
One-line subtitle / tagline rendered under the title.
texturesoptional
object
Per-config build-plate texture configuration. The actual list of available
textures lives at the store level (`store_custom_textures` + the two
built-ins `smooth`/`carbon`); this block only carries the merchant's
per-config overrides — section label, default selection, and any hidden
texture ids for this specific config.
defaultIdoptional
string
Id of the texture pre-selected on first load.
hiddenIdsoptional
string[]
Ids the merchant has hidden in this specific config.
labeloptional
string
Section label rendered in the customer UI (e.g. "Texture", "Finish").
themeoptional
object
Merchant theme colors driving the customer-facing UI. All three are
optional; the React app falls back to its built-in defaults
(`#121212` for heading + button, `#1262C9` for accent).
accentColoroptional
string
Selection rings, links, focus, "negative" buttons.
buttonColoroptional
string
Background of primary action buttons (Add Text, Add to Cart).
headingColoroptional
string
Title + section heading color.
titleoptional
string
Page title shown above the customizer canvas.
viewBoxoptional
string
createdAtrequired
string
format: date-time
idrequired
string
pattern: ^[a-z0-9]{24}$
namerequired
string
Human-readable label for this configuration (e.g. "Motorcycle Plate Frames").
publishedrequired
boolean
shopifyVariantIdrequired
string
skuIdrequired
string
skuIdsrequired
string[]
Resolved list of SKU IDs attached to this config via the join table.
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
updatedAtrequired
string
format: date-time
Example Response
200 OK — application/json
{
"configJson": {
"viewBox": "string",
"maskPath": "string",
"colors": [
{
"value": "string",
"alias": "string",
"sourceMaterialVariantId": "string"
}
],
"finishes": [
"string"
],
"constraints": {},
"defaults": {},
"enabledFonts": [
{
"family": "string",
"alias": "string"
}
],
"title": "string",
"subtitle": "string",
"instructionsText": "string",
"theme": {
"headingColor": "string",
"buttonColor": "string",
"accentColor": "string"
},
"backgroundSvg": {
"storagePath": "string",
"viewBox": "string",
"widthMm": 1,
"heightMm": 1,
"sourceBbox": {
"x": 1,
"y": 1,
"width": 1,
"height": 1
},
"sourcePath": "string"
},
"colorsEnabled": true,
"allowShapes": true,
"shapesWarning": "string",
"outline": {
"enabledByDefault": true,
"defaultColor": "string",
"defaultWidthMm": 1,
"minWidthMm": 1
},
"textures": {
"label": "string",
"defaultId": "string",
"hiddenIds": [
"string"
]
}
},
"published": true,
"skuIds": [
"string"
],
"id": "string",
"storeId": "string",
"createdAt": "2026-08-24T03:58:55.294Z",
"updatedAt": "2026-08-24T03:58:55.294Z"
}