Printago API
GET /v1/print-jobs

Get all print jobs

List print jobs: queued, printing and finished. There is no endpoint that creates a single print job directly. Jobs come from builds: queue parts and SKUs with POST /v2/builds, or print orders with POST /v1/orders/print, and the resulting jobs show up here.

Send Authorization: ApiKey <your-api-key>.

Job lifecycle

status Meaning
pending In the queue, waiting for a compatible printer.
assigned Matched to a printer (assignedPrinterId).
slicing, sliced, finalizing, waiting-for-approval, ready-for-printer, sending-to-printer Being sliced for that printer and delivered to it.
printing, paused On the printer.
completed, failed, cancelled Finished. errorMessage explains a failure.

Query parameters

  • Filters: field=value matches exactly, for example status=printing or partBuildId=<id>. Use field.operator=value for other comparisons (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn); in takes a comma-separated list. Which operators a field accepts depends on its type (text operators for text, comparisons for numbers and dates, in for IDs and statuses). Useful fields: status, partBuildId, partId, skuId, orderId, orderItemId, assignedPrinterId, hidden, priority, queueOrder, createdAt, printingCompletedAt.
  • Sorting: sort=field:asc or sort=field:desc, comma-separated for several. Without sort, the order is not guaranteed. sort=priority:asc,queueOrder:asc gives queue order.
  • Paging: limit (up to 1000) and offset. Add meta=true to get { "data": [...], "meta": { ... } } with the total count.
  • Related data: include=partBuild embeds each job's part build.

The results include archived jobs (hidden: true), which are completed or cleared jobs removed from the queue view. Add hidden=false to match what the queue shows.

Requires: queue.view

Query Parameters

partBuildId optional
string
Filter on partBuildId. A bare value is an exact match (partBuildId=value); use partBuildId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
quantityIndex optional
string
Filter on quantityIndex. A bare value is an exact match (quantityIndex=value); use quantityIndex.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
quantityTotal optional
string
Filter on quantityTotal. A bare value is an exact match (quantityTotal=value); use quantityTotal.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
thumbnailUri optional
string
Filter on thumbnailUri. A bare value is an exact match (thumbnailUri=value); use thumbnailUri.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
coloredThumbnailUri optional
string
Filter on coloredThumbnailUri. A bare value is an exact match (coloredThumbnailUri=value); use coloredThumbnailUri.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
buildThumbnailUri optional
string
Filter on buildThumbnailUri. A bare value is an exact match (buildThumbnailUri=value); use buildThumbnailUri.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
cameraThumbnailUri optional
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.
timelapseUri optional
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.
fuseTelemetryUri optional
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`.
attemptNumber optional
string
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`.
sendFailureCount optional
string
Consecutive send-give-up cycles (EnsureJobStarted exhausted its retries without the printer starting). Reset on retry from a terminal state.
filesToPrint optional
string
Filter on filesToPrint. A bare value is an exact match (filesToPrint=value); use filesToPrint.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
slicerInputHash optional
string
Filter on slicerInputHash. A bare value is an exact match (slicerInputHash=value); use slicerInputHash.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
isGcodeCached optional
string
Filter on isGcodeCached. A bare value is an exact match (isGcodeCached=value); use isGcodeCached.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
slicedGcodeUri optional
string
Filter on slicedGcodeUri. A bare value is an exact match (slicedGcodeUri=value); use slicedGcodeUri.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
partId optional
string
Filter on partId. A bare value is an exact match (partId=value); use partId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
partName optional
string
Filter on partName. A bare value is an exact match (partName=value); use partName.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
createdByActorId optional
string
Who queued this job — see the column comments on `print_jobs`.
createdByType optional
string
Filter on createdByType. A bare value is an exact match (createdByType=value); use createdByType.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
createdByLabel optional
string
Filter on createdByLabel. A bare value is an exact match (createdByLabel=value); use createdByLabel.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
skuId optional
string
Filter on skuId. A bare value is an exact match (skuId=value); use skuId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
skuName optional
string
Filter on skuName. A bare value is an exact match (skuName=value); use skuName.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
parameterOverrides optional
string
Filter on parameterOverrides. A bare value is an exact match (parameterOverrides=value); use parameterOverrides.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
orderId optional
string
Filter on orderId. A bare value is an exact match (orderId=value); use orderId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
label optional
string
Filter on label. A bare value is an exact match (label=value); use label.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
orderItemId optional
string
Filter on orderItemId. A bare value is an exact match (orderItemId=value); use orderItemId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
linkedPartId optional
string
Filter on linkedPartId. A bare value is an exact match (linkedPartId=value); use linkedPartId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
skuInstance optional
string
Filter on skuInstance. A bare value is an exact match (skuInstance=value); use skuInstance.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
queueOrder optional
string
Filter on queueOrder. A bare value is an exact match (queueOrder=value); use queueOrder.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
priority optional
string
Filter on priority. A bare value is an exact match (priority=value); use priority.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
requiredPrinterTags optional
string
Filter on requiredPrinterTags. A bare value is an exact match (requiredPrinterTags=value); use requiredPrinterTags.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
overriddenProcessProfileId optional
string
Filter on overriddenProcessProfileId. A bare value is an exact match (overriddenProcessProfileId=value); use overriddenProcessProfileId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
taskId optional
string
Filter on taskId. A bare value is an exact match (taskId=value); use taskId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
profileUris optional
string
Filter on profileUris. A bare value is an exact match (profileUris=value); use profileUris.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
assignedPrinterId optional
string
Filter on assignedPrinterId. A bare value is an exact match (assignedPrinterId=value); use assignedPrinterId.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
assignmentStartedAt optional
string
Filter on assignmentStartedAt. A bare value is an exact match (assignmentStartedAt=value); use assignmentStartedAt.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
assignmentCompletedAt optional
string
Filter on assignmentCompletedAt. A bare value is an exact match (assignmentCompletedAt=value); use assignmentCompletedAt.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
printingStartedAt optional
string
Filter on printingStartedAt. A bare value is an exact match (printingStartedAt=value); use printingStartedAt.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
printingCompletedAt optional
string
Filter on printingCompletedAt. A bare value is an exact match (printingCompletedAt=value); use printingCompletedAt.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
cancelledAt optional
string
Filter on cancelledAt. A bare value is an exact match (cancelledAt=value); use cancelledAt.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
status optional
string
Filter on status. A bare value is an exact match (status=value); use status.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
errorMessage optional
string
Filter on errorMessage. A bare value is an exact match (errorMessage=value); use errorMessage.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
hidden optional
string
Filter on hidden. A bare value is an exact match (hidden=value); use hidden.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
logsUri optional
string
Filter on logsUri. A bare value is an exact match (logsUri=value); use logsUri.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
extensions optional
string
Filter on extensions. A bare value is an exact match (extensions=value); use extensions.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
skipObjectsData optional
string
Filter on skipObjectsData. A bare value is an exact match (skipObjectsData=value); use skipObjectsData.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
skipObjectIds optional
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.
materialMapping optional
string
Filter on materialMapping. A bare value is an exact match (materialMapping=value); use materialMapping.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
materialAssignments optional
string
Filter on materialAssignments. A bare value is an exact match (materialAssignments=value); use materialAssignments.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
gcodeAnalysisSha256 optional
string
SHA256 hash of analyzed gcode content — stable key for extrusion lookup
groupId optional
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.
parentJobId optional
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.
boundingBox optional
string
{x,y,z} mm bounding box of what this job prints. Null until computed.
customMetadata optional
string
Filter on customMetadata. A bare value is an exact match (customMetadata=value); use customMetadata.<operator>=value for the other operators (ne, gt, gte, lt, lte, contains, startsWith, endsWith, in, notIn, isNull; which ones a field accepts depends on its type). See Querying Data.
id optional
string
Filter by record ID. A bare value is an exact match; use id.in=a,b,c for several (up to 100). See Querying Data.
storeId optional
string
Filter by store ID. Results are always limited to the store your API key belongs to, so this is rarely useful. See Querying Data.
createdAt optional
string
Filter by creation time. Pass an ISO 8601 timestamp with a comparison operator, e.g. createdAt.gte=2025-01-01T00:00:00Z. See Querying Data.
updatedAt optional
string
Filter by last-modified time. Pass an ISO 8601 timestamp with a comparison operator, e.g. updatedAt.gt=2025-01-01T00:00:00Z to fetch what changed since a checkpoint. See Querying Data.
sort optional
string
Comma-separated field:direction pairs, applied in order, e.g. createdAt:desc,name:asc. Direction is asc (the default) or desc. At most 5 clauses; JSON and array fields cannot be sorted on. See Querying Data.
limit optional
number
Maximum number of records to return, 1–1000. Defaults to 1000; larger values are capped at 1000. See Querying Data.
offset optional
number
Number of matching records to skip before returning results. Combine with limit to page through a list, and with meta=true to learn the total. See Querying Data.
fields optional
string
Comma-separated list of fields to return, e.g. id,name,updatedAt. Other fields are left out of each record. At most 50 fields. See Querying Data.
include optional
string
Comma-separated related records to embed in each result, e.g. linkedParts,linkedParts.part. At most 4 includes, each at most 2 levels deep; only the relations this endpoint supports are accepted, anything else is a 400. See Querying Data.
meta optional
boolean
Set to true to wrap the response as { data, meta }, where meta carries total, count, offset, limit, hasMore and executionTime. Without it the response is a bare array. See Querying Data.
hints optional
boolean
Set to true to add a hints array of suggested follow-up API calls to the response (aimed at AI agents). A list response is wrapped as { data, meta, hints }. See Querying Data.

Examples

The active queue in queue order

Request
GET /v1/print-jobs?status.in=pending,assigned,slicing,printing&hidden=false&sort=priority:asc,queueOrder:asc
Response
[
  {
    "id": "j1h5g9f3d7s2a6q0w4e8r3t7",
    "storeId": "k3m9x2p7q8r4t6v1w5y0z3a2",
    "partBuildId": "b7v3c9x1z5n2m8k4j0h6g3f1",
    "partId": "p8f2k6m1q9w3e7r5t0y4u2i6",
    "partName": "Benchy",
    "label": "Benchy",
    "status": "printing",
    "quantityIndex": 1,
    "quantityTotal": 3,
    "priority": 100,
    "queueOrder": 42000,
    "assignedPrinterId": "x1p2s3m4a5r6t7q8w9e0r1t2",
    "skuId": null,
    "orderId": null,
    "hidden": false,
    "errorMessage": null,
    "attemptNumber": 1,
    "printingStartedAt": "2026-09-23T14:09:55.210Z",
    "createdAt": "2026-09-23T14:05:13.004Z",
    "updatedAt": "2026-09-23T14:09:55.210Z"
  },
  {
    "id": "j2k6l0z4x8c1v5b9n3m7q2w6",
    "storeId": "k3m9x2p7q8r4t6v1w5y0z3a2",
    "partBuildId": "b7v3c9x1z5n2m8k4j0h6g3f1",
    "partId": "p8f2k6m1q9w3e7r5t0y4u2i6",
    "partName": "Benchy",
    "label": "Benchy",
    "status": "pending",
    "quantityIndex": 2,
    "quantityTotal": 3,
    "priority": 100,
    "queueOrder": 42000,
    "assignedPrinterId": null,
    "skuId": null,
    "orderId": null,
    "hidden": false,
    "errorMessage": null,
    "attemptNumber": 1,
    "printingStartedAt": null,
    "createdAt": "2026-09-23T14:05:13.004Z",
    "updatedAt": "2026-09-23T14:05:13.004Z"
  }
]

Jobs for one order, with paging metadata

Request
GET /v1/print-jobs?orderId=o4r8d2e6r0x3c7v1b5n9m2q6&sort=createdAt:asc&limit=1&meta=true
Response
{
  "data": [
    {
      "id": "j7u1y5t9r3e6w0q4a8s2d5f9",
      "storeId": "k3m9x2p7q8r4t6v1w5y0z3a2",
      "partBuildId": "b5n9m3k7j1h4g8f2d6s0a5q9",
      "partId": "p8f2k6m1q9w3e7r5t0y4u2i6",
      "partName": "Benchy",
      "label": "Benchy",
      "status": "completed",
      "skuId": "s5h1j7k3l9a2s6d0f4g8h2j5",
      "skuName": "BENCHY",
      "orderId": "o4r8d2e6r0x3c7v1b5n9m2q6",
      "orderItemId": "i9t3e7m1q5w2r6t0y4u8i3o5",
      "skuInstance": 1,
      "quantityIndex": 1,
      "quantityTotal": 2,
      "hidden": false,
      "printingCompletedAt": "2026-09-23T17:42:08.615Z",
      "createdAt": "2026-09-23T15:40:02.338Z",
      "updatedAt": "2026-09-23T17:42:08.615Z"
    }
  ],
  "meta": {
    "total": 2,
    "count": 1,
    "offset": 0,
    "limit": 1,
    "hasMore": true,
    "executionTime": 18
  }
}

Response Schema

PrintJob[] | SearchResponse
Variant 1PrintJob[]
assignedPrinterIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
assignmentCompletedAtrequirednullable
string
format: date-time
assignmentStartedAtrequirednullable
string
format: date-time
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`.
boundingBoxrequirednullable
object
{x,y,z} mm bounding box of what this job prints. Null until computed.
xrequired
number
yrequired
number
zrequired
number
buildThumbnailUrirequirednullable
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.

cameraThumbnailUrirequirednullable
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.
cancelledAtrequirednullable
string
format: date-time
coloredThumbnailUrirequirednullable
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
createdByActorIdrequirednullable
string
Who queued this job — see the column comments on `print_jobs`.
createdByLabelrequirednullable
string
createdByTyperequirednullable
string
customMetadataoptionalnullable
Record<string, any>
Construct a type with a set of properties K of type T
errorMessagerequirednullable
string
extensionsoptionalnullable
object
3mfoptional
object
gcodeFilerequired
string
plateIdrequired
number
mergedPlateoptional
object
Present on merged-plate parent jobs (see MergedPlateExtension).
bedSizeoptional
object
{x,y,z} mm build volume of the target plate.
xrequired
number
yrequired
number
zrequired
number
childJobIdsoptional
string[]
Committed layout mirrored onto the parent row so the web app can render a live silhouette thumbnail from durable data. The authoritative copy lives on the synthetic build's MergedPlateExtension, but success-status builds are archived out of client caches — the parent job row lives exactly as long as the queue entry. Absent on parents created before the stamp shipped (clients fall back to the server-authored layout SVG).
filamentColoursoptional
string[]
The plate's filament colours, indexed by slot (gaps null), mirrored for the same reason as `layout`: a merged parent has no part to read them from, so this is what lets the queue report every filament the plate demands instead of only the first. Absent on single-color plates, which carry exactly one assignment and already render correctly.
footprintsoptional
Record<string, object>
Construct a type with a set of properties K of type T
layoutoptional
object[]
jobIdrequired
string
rotationDegrequired
0 | 90
090
xrequired
number
World-coordinate center of the placed footprint, mm.
yrequired
number
processOverridesoptional
Record<string, string>
Construct a type with a set of properties K of type T
slicerVersionIdoptional
string
SlicerVersion.id the plate optimizer chose for this merged plate (from the store's slicer-compatibility policy). Honored at dispatch so the plate slices with that version instead of the store default. Absent = store slicer.
serialsoptional
object[]
Serials embedded in what this job prints, stamped at job creation. A merged-plate parent aggregates its children's serials so the queue row that is actually shown carries the full list.
parameterNamerequired
string
sequenceIdrequired
string
pattern: ^[a-z0-9]{24}$
sequenceNamerequired
string
serialrequired
string
targetoptional
object
The physical item a serial was allocated for, recorded so queue and history views can explain which item received which number. A plate-aware share-mode stamp carries only the plate (the value applies to every matching occurrence there); an increment-mode stamp pins the exact object instance in the 3MF's stable `(object_id, instance_id)` identity.
identifyIdoptional
string
instanceIdoptional
number
objectIdoptional
string
plateIdoptional
number
valuerequired
number
filesToPrintrequired
string[]
fuseTelemetryUrirequirednullable
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`.
gcodeAnalysisSha256requirednullable
string
SHA256 hash of analyzed gcode content — stable key for extrusion lookup
groupIdrequirednullable
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.
pattern: ^[a-z0-9]{24}$
hiddenrequired
boolean
idrequired
string
pattern: ^[a-z0-9]{24}$
isGcodeCachedrequired
boolean
labelrequired
string
linkedPartIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
logsUrirequirednullable
string
materialAssignmentsrequirednullable
Record<string, object[]>
Construct a type with a set of properties K of type T
materialMappingrequirednullable
object[]
amsIndexoptional
number
Visual AMS array index: -1 for spool, 0+ for AMS units
coloroptional
string
filamentSystemProfileIdoptionalnullable
number
filamentUserProfileIdoptionalnullable
string
pattern: ^[a-z0-9]{24}$
materialIdoptional
string
materialTypeoptional
string
nameoptional
string
skipoptional
boolean
slotoptional
number
slotIndexoptional
number
Slot within the AMS, or spool index for multiple spools
variantIdoptional
string
orderIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
orderItemIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
overriddenProcessProfileIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
parameterOverridesrequired
object[]
namerequired
string
typerequired
"number" | "string" | "boolean" | "file"
numberstringbooleanfile
valueoptional
number | string | boolean
parentJobIdrequirednullable
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.
pattern: ^[a-z0-9]{24}$
partBuildIdrequired
string
pattern: ^[a-z0-9]{24}$
partIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
partNamerequired
string
printingCompletedAtrequirednullable
string
format: date-time
printingStartedAtrequirednullable
string
format: date-time
priorityrequired
100 | 1000
1001000
profileUrisrequirednullable
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.
skipObjectIdsoptionalnullable
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.
skipObjectsDataoptionalnullable
object
excludedUsageoptional
object
Per-slot material excluded from an attempt because its object was skipped.
bySlotrequired
Record<string, number>
Construct a type with a set of properties K of type T
gramsBySlotoptional
Record<string, number>
Construct a type with a set of properties K of type T
objectIdsrequired
string[]
Skipped object ids the gcode analysis could actually attribute.
totalGramsoptional
number
totalMmrequired
number
objectsrequired
object[]
identifyIdrequired
string
namerequired
string
skippedrequired
boolean
pickImageUrioptional
string
runtimeSkipsoptional
object[]
Objects skipped at runtime (mid-print or at print start), as observed
atoptional
string
ISO timestamp when the skip was recorded
identifyIdrequired
string
Bambu label-object id (slice_info identify_id) as a decimal string
layerrequirednullable
number
Printer-reported layer when the skip was observed: material usage for the object is counted up to and including this layer. -1 means the skip was sent before printing began; null means the timing is unknown.
topImageUrioptional
string
skuIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
skuInstancerequirednullable
number
skuNamerequirednullable
string
slicedGcodeUrirequirednullable
string
slicerInputHashrequirednullable
string
statusrequired
enum
pendingassignedslicingslicedfinalizingwaiting-for-approvalready-for-printersending-to-printerprintingpausedcompletedfailedcancelled
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
taskIdrequired
number
thumbnailUrirequirednullable
string

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

timelapseUrirequirednullable
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
Variant 2SearchResponseStandardized search response with data, metadata, and query information
datarequired
Record<string, any>[]
Array of matching entities
metarequired
object
Pagination and result metadata
countrequired
number
Number of records returned in this response
executionTimerequired
number
Query execution time in milliseconds
hasMorerequired
boolean
Whether there are more records available
limitrequired
number
Maximum number of records requested
offsetrequired
number
Number of records skipped
totalrequired
number
Total number of matching records (before pagination)

Example Response

200 OK — application/json
[
  {
    "partBuildId": "string",
    "quantityIndex": 1,
    "quantityTotal": 1,
    "thumbnailUri": "string",
    "coloredThumbnailUri": "string",
    "buildThumbnailUri": "string",
    "cameraThumbnailUri": "string",
    "timelapseUri": "string",
    "fuseTelemetryUri": "string",
    "attemptNumber": 1,
    "sendFailureCount": 1,
    "filesToPrint": [
      "string"
    ],
    "slicerInputHash": "string",
    "isGcodeCached": true,
    "slicedGcodeUri": "string",
    "partId": "string",
    "partName": "string",
    "createdByActorId": "string",
    "createdByType": "string",
    "createdByLabel": "string",
    "skuId": "string",
    "skuName": "string",
    "parameterOverrides": [
      {
        "name": "string",
        "type": "number",
        "value": 1
      }
    ],
    "orderId": "string",
    "label": "string",
    "orderItemId": "string",
    "linkedPartId": "string",
    "skuInstance": 1,
    "queueOrder": 0,
    "priority": 100,
    "requiredPrinterTags": {
      "printer.provider": "string",
      "printer.id": "string",
      "printer.nozzleDiameter": "string",
      "printer.modelName": "string",
      "filament.type": "string",
      "user.tags": "string"
    },
    "overriddenProcessProfileId": "string",
    "taskId": 1,
    "profileUris": [
      "string"
    ],
    "assignedPrinterId": "string",
    "assignmentStartedAt": "2025-01-15T12:00:00.000Z",
    "assignmentCompletedAt": "2025-01-15T12:00:00.000Z",
    "printingStartedAt": "2025-01-15T12:00:00.000Z",
    "printingCompletedAt": "2025-01-15T12:00:00.000Z",
    "cancelledAt": "2025-01-15T12:00:00.000Z",
    "status": "pending",
    "errorMessage": "string",
    "hidden": true,
    "logsUri": "string",
    "extensions": {
      "3mf": {
        "plateId": 1,
        "gcodeFile": "string"
      },
      "mergedPlate": {
        "processOverrides": {},
        "slicerVersionId": "string",
        "childJobIds": [
          "string"
        ],
        "layout": [
          {
            "jobId": "string",
            "x": 1,
            "y": 1,
            "rotationDeg": 0
          }
        ],
        "bedSize": {
          "x": 1,
          "y": 1,
          "z": 1
        },
        "footprints": {},
        "filamentColours": [
          "string"
        ]
      },
      "serials": [
        {
          "sequenceId": "string",
          "sequenceName": "string",
          "parameterName": "string",
          "value": 1,
          "serial": "string",
          "target": {
            "plateId": 1,
            "objectId": "string",
            "instanceId": 1,
            "identifyId": "string"
          }
        }
      ]
    },
    "skipObjectsData": {
      "objects": [
        {
          "identifyId": "string",
          "name": "string",
          "skipped": true
        }
      ],
      "topImageUri": "string",
      "pickImageUri": "string",
      "runtimeSkips": [
        {
          "identifyId": "string",
          "layer": 1,
          "at": "string"
        }
      ],
      "excludedUsage": {
        "objectIds": [
          "string"
        ],
        "bySlot": {},
        "gramsBySlot": {},
        "totalMm": 1,
        "totalGrams": 1
      }
    },
    "skipObjectIds": [
      "string"
    ],
    "materialMapping": [
      {
        "slot": 1,
        "amsIndex": 1,
        "slotIndex": 1,
        "skip": true,
        "variantId": "string",
        "materialId": "string",
        "materialType": "string",
        "name": "string",
        "color": "string",
        "filamentUserProfileId": "string",
        "filamentSystemProfileId": 1
      }
    ],
    "materialAssignments": {},
    "gcodeAnalysisSha256": "string",
    "groupId": "string",
    "parentJobId": "string",
    "boundingBox": {
      "x": 1,
      "y": 1,
      "z": 1
    },
    "customMetadata": {},
    "id": "string",
    "storeId": "string",
    "createdAt": "2025-01-15T12:00:00.000Z",
    "updatedAt": "2025-01-15T12:00:00.000Z"
  }
]