Printago API
PATCH
/v1/settings/store
Update store settings
Request Body
Settings to update
UpdateStoreSettingsRequest
automaticQueueMatchingoptional
boolean
currencyoptional
string
currencySymboloptional
string
defaultFallbackFilamentSystemProfileIdoptional
number
defaultFallbackFilamentUserProfileIdoptional
string
defaultPrinterSystemProfileIdoptional
number
defaultPrinterUserProfileIdoptional
string
defaultProcessSystemProfileIdoptional
number
defaultProcessUserProfileIdoptional
string
experimentalFeaturesoptional
object
financial-trackingoptional
boolean
generalSettingsoptional
object
amsSlotSelectionStrategyoptional
any
Controls which slot the queue matcher assigns when a job's material is
loaded in multiple slots on the same printer. Absent is treated as
`lowest-index` (left-to-right), so existing stores get deterministic
left-to-right assignment without any configuration.
autoConfirmMacroRunoptional
boolean
When true, the Run Macro dialog's "printer is clear" safety checkbox
starts checked and re-confirms itself as the macro/printer selection
changes, so operators who run macros constantly don't have to tick it
every time. The server-side digest check (stale-preview 409) still
applies. Absent/false = the checkbox must be ticked manually.
autoMatchMaterialsNewPartoptional
boolean
enableCompletionSnapshotoptional
boolean
When true, Fuse captures a single fresh JPEG near the end of each print
(last layer / 95% progress / FINISH transition, in that order) and
uploads it as the print-job's `cameraThumbnailUri`. Independent from
`enableTimelapse` — a store can have completion snapshots without
paying the timelapse encode cost, or vice versa. New stores default to
true via createDefaultSettings.
enableTelemetryCaptureoptional
boolean
Per-attempt print telemetry capture: the gateway archives a downsampled
series (temperatures/progress/layer timings) at print end, and Fuse
uploads its full-fidelity flight recording. Absent is treated as ON —
unlike the camera toggles, telemetry defaults on and stores opt out.
Artifacts land under the permanent `telemetry/` storage prefix and are
linked from print history.
enableTimelapseoptional
boolean
When true, the cloud renders a timelapse video for each completed print
by stitching together the snapshot history captured by Fuse during the
print. New stores default to true via createDefaultSettings so the
feature is on out of the box; stores that don't want the encode cost
can toggle it off in store settings.
fabmaticIgnoredErrorCodesoptional
object[]
Error codes the store wants ignored when deciding whether a printer
error should turn off FabMatic (continuous printing). Codes are matched
format-insensitively (case, dashes, underscores and leading zeros are
ignored) against the printer's health `errors` and the print `printError`
code. (Health `warnings` never turn FabMatic off, so they are not part of
this decision.) If every error present on a finished/errored print matches
an entry here, FabMatic stays enabled and the queue keeps advancing.
Absent/empty means no codes are ignored (current behaviour).
Codes vary in length and format across printer brands: print errors are
often 8 hex chars ("0500-400E"/"0500400E"/decimal "83902478") while health
codes can be 16 hex chars ("0582040000010045"). Separators are optional and
ignored when matching.
coderequired
string
noteoptional
string
plateMergingoptional
object
Plate merging (combining compatible pending jobs onto one build plate).
Absent means DEFAULT_PLATE_MERGING_SETTINGS (automatic merging off;
manual merging is always available, gated only by queue.manage).
automaticMergingrequired
boolean
When true, the matcher merges compatible queued jobs onto the assigned
printer's plate at match time (scope-limited by mergeScope).
holdReleaseSaturationPercentoptional
number
Early release for the hold: once the batch that would merge covers at
least this percent of the usable plate area (plate minus edge margins),
waiting adds latency but little value, so the job assigns immediately.
1-100. Optional: absent means the default.
maxPartsPerPlaterequired
number
Upper bound on parts per merged plate (slicer/UI sanity bound).
mergeHoldMinutesoptional
number
When > 0 (and automaticMerging is on), a merge-eligible pending job is
held back from being assigned to a printer for up to this many minutes
after it was queued, so jobs arriving shortly after it can batch onto one
plate instead of fanning out across idle printers. 0 = off (jobs assign
immediately). The window is anchored to each job's own creation time, so
a steady trickle of arrivals can never extend a job's hold. Manual
"Match queue now" runs and direct printer assignments bypass holds.
Optional: absent on settings saved before the field existed.
mergeScoperequired
any
Which jobs automatic merging may combine: 'same-order' only merges jobs
from the same order (null orderId matches null — non-commerce jobs merge
with each other); 'any' merges anything compatible. Manual merging is
never restricted by this.
partSpacingMmrequired
number
Minimum clearance between placed parts, mm.
plateMarginMmrequired
number
Keep-out margin from the plate edge, mm.
processPoliciesoptional
Record<string, string>
Construct a type with a set of properties K of type T
slicerCompatibilityoptional
any
How slicer engine/version differences gate merging and drive which slicer
the merged plate is sliced with. Absent means DEFAULT_SLICER_COMPATIBILITY
("allow-upgrades"). See {@link SlicerCompatibilityMode }.
showGettingStartedChecklistoptional
boolean
Getting Started checklist visibility. Absent means "default by store
age": stores created on or after GETTING_STARTED_RELEASE_DATE default
on, older stores off (see isGettingStartedEnabled).
thumbnailStyleoptional
any
Projection and shading the thumbnail renderer uses. Absent means
DEFAULT_THUMBNAIL_STYLE ("orthographic"). Applies to renders from the
moment it is saved — thumbnails already rendered keep their look until
something re-renders them.
processLowPriorityJobsoptional
boolean
repairSlicerProfileValuesoptional
boolean
sliceroptional
string
Example Request
application/json
{
"processLowPriorityJobs": true,
"automaticQueueMatching": true,
"repairSlicerProfileValues": true,
"experimentalFeatures": {
"financial-tracking": true
},
"generalSettings": {
"autoMatchMaterialsNewPart": true,
"enableTimelapse": true,
"enableCompletionSnapshot": true,
"enableTelemetryCapture": true,
"fabmaticIgnoredErrorCodes": [
{
"code": "string",
"note": "string"
}
],
"plateMerging": {
"automaticMerging": true,
"partSpacingMm": 1,
"plateMarginMm": 1,
"maxPartsPerPlate": 1,
"mergeHoldMinutes": 1,
"holdReleaseSaturationPercent": 1,
"processPolicies": {}
},
"showGettingStartedChecklist": true,
"autoConfirmMacroRun": true
}
}
Response Schema
GetStoreSettingsResponse
automaticQueueMatchingrequired
boolean
When false, every background QueueRun event short-circuits inside
`matchPrintersAndJobs` and the auto-matcher does not assign jobs. The
queue page surfaces a "Match queue now" button that bypasses this gate
by passing `manual: true` to the matcher. Defaults to true so existing
stores keep their current behaviour.
createdAtrequired
string
format: date-time
currencyrequired
string
currencySymbolrequired
string
defaultFallbackFilamentSystemProfileIdrequired
number
defaultFallbackFilamentUserProfileIdrequired
string
defaultPrinterSystemProfileIdrequired
number
defaultPrinterUserProfileIdrequired
string
defaultProcessSystemProfileIdrequired
number
defaultProcessUserProfileIdrequired
string
experimentalFeaturesrequired
object
generalSettingsrequired
object
idrequired
string
processLowPriorityJobsrequired
boolean
repairSlicerProfileValuesrequired
boolean
When true (the default), the cloud slicer clamps out-of-range / sentinel
numeric values in the target slicer's printer/process/filament profiles (and
the 3MF's embedded config) into the range that exact slicer build accepts,
reproducing the desktop GUI's silent value tolerance so headless slices don't
abort with CLI_INVALID_VALUES_IN_3MF (-18). Turn off to hand the profiles to
the CLI verbatim. See packages/builders/slicers config-param-repair.
slicerrequired
string
storeIdrequired
string
updatedAtrequired
string
format: date-time
Example Response
200 OK — application/json
{
"id": "string",
"storeId": "string",
"createdAt": "2026-08-24T03:58:56.116Z",
"updatedAt": "2026-08-24T03:58:56.116Z",
"processLowPriorityJobs": true,
"automaticQueueMatching": true,
"repairSlicerProfileValues": true
}