Printago API
GET /v1/sku-builds/{id}

Get a specific SKU build by ID

Requires: queue.view

Path Parameters

id required
string
- SKU build identifier

Response Schema

SkuBuildWithRelation
createdAtrequired
string
format: date-time
idrequired
string
pattern: ^[a-z0-9]{24}$
orderIdrequired
string
orderItemIdrequired
string
partBuildsrequired
object[]
assignmentCompletedAtrequired
string
assignmentStartedAtrequired
string
createdAtrequired
string
format: date-time
dismissedrequired
boolean
extensionsoptional
object
idrequired
string
pattern: ^[a-z0-9]{24}$
labelrequired
string
linkedPartIdrequired
string
materialAssignmentsrequired
Record<string, object[]>
numPartsPerSkuoptional
number
orderIdrequired
string
orderItemIdrequired
string
outputFilesrequired
string[]
parameterOverridesrequired
object[]
namerequired
string
typerequired
any
valueoptional
number | string | boolean
partCopyrequired
object
arrangeableoptional
boolean
createdAtrequired
string
descriptionrequired
string
fileHashesrequired
string[]
fileUrisrequired
string[]
folderIdoptional
string
gcodePlateUrisoptional
Record<string, string>
idrequired
string
pattern: ^[a-z0-9]{24}$
materialsrequired
object[]
meshErroroptional
string
Why tessellating this source failed. Set with `meshUri` cleared, so a file that cannot be meshed is stated once instead of re-converting on every print forever. Replacing the source moves `fileHashes[0]` off this hash, which retires the error without anything having to clear it.
meshSourceHashoptional
string
`fileHashes[0]` of the source the mesh state describes — the file `meshUri` was tessellated from, or the one `meshError` failed on.
meshUrioptional
string
Tessellated mesh derived from a boundary-representation source (STEP). The slicer CLI only reads meshes, so this — not `fileUris[0]` — is what the print and estimation paths feed it.
metadataoptional
object
namerequired
string
overriddenProcessProfileIdrequired
string
parametersrequired
object[]
acceptedContentTypesoptional
string[]
File-parameter-only fields (populated when `type === PartParameterVariableType.File`). Kept optional on the shared interface so scalar-parameter call sites do not need union-narrowing. See `FilePartParameter` for the strict shape. `acceptedContentTypes` is intentionally an OPEN `string[]` (not a narrow union). The customizer emits SVG, but Etsy attachments and direct API order ingestion can carry ANY mime type (PNG / JPG / PDF / AI / etc). Builders enforce kind constraints; the shared type stays open.
defaultoptional
number | string | boolean
defaultUrioptional
string
Optional fallback file URI (e.g. a known SVG in storage).
descriptionoptional
string
maxoptional
number
minoptional
number
multipleoptional
boolean
Whether the slot accepts >1 file. Reserved for forward compat — the Phase 5 resolver assumes single-file per slot for v1.
namerequired
string
optionsoptional
object[]
stepoptional
number
typerequired
any
valueoptional
number | string | boolean
printTagsrequired
object
filament.typeoptional
string
printer.idoptional
string
printer.modelNameoptional
string
printer.nozzleDiameteroptional
string
printer.provideroptional
string
user.tagsoptional
string
slicerOverrideoptional
string
slicingEstimateoptional
object
sourceoptional
any
Which integration created this part. Set only by the cloud-storage providers today; null on every other creation path (upload, API, OpenSCAD, …) rather than carrying a synthetic "manual" value, so existing parts need no backfill. Not user-editable — it records what happened, not a preference.
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
thumbnailUrirequired
string
typerequired
any
updatedAtrequired
string
uploadedAtoptional
string
use3MFProcessProfileoptional
boolean
userTagsoptional
string[]
partIdrequired
string
positionrequired
any
printingCompletedAtrequired
string
printingStartedAtrequired
string
printJobsrequired
object[]
assignedPrinterIdrequired
string
assignmentCompletedAtrequired
string
assignmentStartedAtrequired
string
attemptNumberrequired
number
1-based counter of print attempts (bumped on requeue once the attempt printed or reached a terminal state). Keys per-attempt media/telemetry objects and aligns with `print_history.attemptNumber`.
boundingBoxrequired
object
{x,y,z} mm bounding box of what this job prints. Null until computed.
buildThumbnailUrirequired
string

A URL to a recolored thumbnail that reflects any material customizations applied to the print job. Populated after material assignments are made, giving a more accurate preview of the expected output colors.

cameraThumbnailUrirequired
string
Camera-captured snapshot from the moment Fuse detected the last layer of the print. Persisted to the files bucket. Null unless Fuse successfully captured and uploaded.
cancelledAtrequired
string
coloredThumbnailUrirequired
string

A URL to a thumbnail recolored to match the specific filament loaded in the assigned printer. Populated once the print job is assigned to a printer, and cleared if the job is unassigned.

createdAtrequired
string
format: date-time
errorMessagerequired
string
extensionsoptional
object
filesToPrintrequired
string[]
fuseTelemetryUrirequired
string
Fuse flight-recorder artifact for the current attempt (gzipped JSONL under the permanent `telemetry/` prefix). Confirmed asynchronously by Fuse after the print ends, like `timelapseUri`.
gcodeAnalysisSha256required
string
SHA256 hash of analyzed gcode content — stable key for extrusion lookup
groupIdrequired
string
Group identifier for visually-collapsed print-queue rows. Assigned at emission (one per plate cluster within a build). Split mints fresh groupIds for non-first buckets. May be null for legacy rows that predate the grouping feature.
hiddenrequired
boolean
idrequired
string
pattern: ^[a-z0-9]{24}$
isGcodeCachedrequired
boolean
labelrequired
string
linkedPartIdrequired
string
logsUrirequired
string
materialAssignmentsrequired
Record<string, object[]>
materialMappingrequired
object[]
orderIdrequired
string
orderItemIdrequired
string
overriddenProcessProfileIdrequired
string
parameterOverridesrequired
object[]
namerequired
string
typerequired
any
valueoptional
number | string | boolean
parentJobIdrequired
string
Set on jobs merged onto a shared plate; points at the merged (parent) job. Children mirror the parent's status and are excluded from independent matching.
partBuildIdrequired
string
pattern: ^[a-z0-9]{24}$
partIdrequired
string
partNamerequired
string
printingCompletedAtrequired
string
printingStartedAtrequired
string
priorityrequired
any
profileUrisrequired
string[]
quantityIndexrequired
number
quantityTotalrequired
number
queueOrderrequired
number
min: 0
requiredPrinterTagsrequired
object
filament.typeoptional
string
printer.idoptional
string
printer.modelNameoptional
string
printer.nozzleDiameteroptional
string
printer.provideroptional
string
user.tagsoptional
string
sendFailureCountrequired
number
Consecutive send-give-up cycles (EnsureJobStarted exhausted its retries without the printer starting). Reset on retry from a terminal state.
skipObjectIdsoptional
string[]
User-selected objects to skip on this job's plate, as identifyId strings (resolved at queue time from the part's plate object list). When the print starts, a Bambu `skip_objects` command is auto-sent for these. Null/empty means print everything. Stored as strings; converted to integer obj_list at send time.
skipObjectsDataoptional
object
skuIdrequired
string
skuInstancerequired
number
skuNamerequired
string
slicedGcodeUrirequired
string
slicerInputHashrequired
string
statusrequired
any
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
taskIdrequired
number
thumbnailUrirequired
string

A URL to the part's original thumbnail image, carried over from the part at the time the print job was created.

timelapseUrirequired
string
MP4 timelapse Fuse encoded from frames captured during the print and uploaded to the snapshots bucket under the `timelapses/` prefix. Null unless the store has timelapses enabled and Fuse uploaded successfully.
updatedAtrequired
string
format: date-time
printStatusrequired
any
priorityrequired
any
quantityrequired
number
min: 0max: 500
requiredPrinterTagsrequired
object
filament.typeoptional
string
printer.idoptional
string
printer.modelNameoptional
string
printer.nozzleDiameteroptional
string
printer.provideroptional
string
user.tagsoptional
string
skuBuildIdrequired
string
skuIdrequired
string
skuInstanceStartoptional
number
skuNamerequired
string
statusrequired
any
stepsrequired
object[]
builderrequired
any
cachedBuildStepIdrequired
string
cachedOutputFilerequired
string
completedAtrequired
string
createdAtrequired
string
format: date-time
dismissedrequired
boolean
idrequired
string
pattern: ^[a-z0-9]{24}$
inputFilesrequired
string[]
min items: 1
inputHashrequired
string
inputParametersoptional
object
logsrequired
string[]
nextStepIdrequired
string
orderrequired
number
min: 0
outputFilesrequired
string[]
min items: 1
partBuildIdrequired
string
pattern: ^[a-z0-9]{24}$
requiresAssignedPrinterrequired
boolean
startedAtrequired
string
statusrequired
any
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
updatedAtrequired
string
format: date-time
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
thumbnailUrirequired
string
updatedAtrequired
string
format: date-time
priorityrequired
any
selectedOptionsoptional
Record<string, string>
skuCopyrequired
object
createdAtrequired
string
descriptionrequired
string
externalIdrequired
string
externalProviderrequired
any
folderIdoptional
string
idrequired
string
pattern: ^[a-z0-9]{24}$
skurequired
string
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
titlerequired
string
totalCogsrequired
number
updatedAtrequired
string
skuIdrequired
string
skuInstanceStartoptional
number
statusrequired
any
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
updatedAtrequired
string
format: date-time

Example Response

200 OK — application/json
{
  "skuCopy": {
    "sku": "string",
    "title": "string",
    "description": "string",
    "totalCogs": 1,
    "id": "string",
    "storeId": "string",
    "createdAt": "string",
    "updatedAt": "string"
  },
  "id": "string",
  "storeId": "string",
  "createdAt": "2026-08-24T03:58:56.153Z",
  "updatedAt": "2026-08-24T03:58:56.153Z",
  "partBuilds": [
    {
      "partCopy": {
        "name": "string",
        "description": "string",
        "fileUris": [
          "string"
        ],
        "fileHashes": [
          "string"
        ],
        "parameters": [
          {
            "options": [
              {
                "label": "string"
              }
            ],
            "description": "string",
            "min": 1,
            "max": 1,
            "step": 1,
            "acceptedContentTypes": [
              "string"
            ],
            "multiple": true,
            "defaultUri": "string",
            "name": "string"
          }
        ],
        "printTags": {
          "printer.provider": "string",
          "printer.id": "string",
          "printer.nozzleDiameter": "string",
          "printer.modelName": "string",
          "filament.type": "string",
          "user.tags": "string"
        },
        "use3MFProcessProfile": true,
        "arrangeable": true,
        "userTags": [
          "string"
        ],
        "id": "string",
        "storeId": "string",
        "createdAt": "string",
        "updatedAt": "string"
      },
      "requiredPrinterTags": {
        "printer.provider": "string",
        "printer.id": "string",
        "printer.nozzleDiameter": "string",
        "printer.modelName": "string",
        "filament.type": "string",
        "user.tags": "string"
      },
      "quantity": 0,
      "parameterOverrides": [
        {
          "name": "string"
        }
      ],
      "dismissed": true,
      "id": "string",
      "storeId": "string",
      "createdAt": "2026-08-24T03:58:56.153Z",
      "updatedAt": "2026-08-24T03:58:56.153Z",
      "printJobs": [
        {
          "partBuildId": "string",
          "quantityIndex": 1,
          "quantityTotal": 1,
          "attemptNumber": 1,
          "sendFailureCount": 1,
          "filesToPrint": [
            "string"
          ],
          "isGcodeCached": true,
          "partName": "string",
          "parameterOverrides": [
            {
              "name": "string"
            }
          ],
          "label": "string",
          "queueOrder": 0,
          "requiredPrinterTags": {
            "printer.provider": "string",
            "printer.id": "string",
            "printer.nozzleDiameter": "string",
            "printer.modelName": "string",
            "filament.type": "string",
            "user.tags": "string"
          },
          "taskId": 1,
          "hidden": true,
          "id": "string",
          "storeId": "string",
          "createdAt": "2026-08-24T03:58:56.153Z",
          "updatedAt": "2026-08-24T03:58:56.153Z"
        }
      ],
      "steps": [
        {
          "partBuildId": "string",
          "order": 0,
          "inputFiles": [
            "string"
          ],
          "outputFiles": [
            "string"
          ],
          "logs": [
            "string"
          ],
          "requiresAssignedPrinter": true,
          "dismissed": true,
          "id": "string",
          "storeId": "string",
          "createdAt": "2026-08-24T03:58:56.153Z",
          "updatedAt": "2026-08-24T03:58:56.153Z"
        }
      ]
    }
  ]
}