Printago API
POST /v1/print-jobs/{id}/send-to-printer

Send job directly to a printer

Send a specific pending job directly to a chosen printer, skipping the global queue matcher. The printer does not need to be marked ready — marking ready re-runs queue matching, which is the side effect this endpoint exists to avoid. The atomic printer claim and the standard compatibility checks still apply (bypass with `force=true` at your own risk).

Requires: queue.manage

Path Parameters

id required
string
The print job ID

Request Body

Target printer and optional force flag

SendPrintJobToPrinterRequest
bypassStaggeredStartoptional
boolean
When true, dispatch even if the printer's Staggered Start group is at capacity. This is an explicit, audited operator override (action B) — it still claims a hold and consumes a slot; it only overrides the block. Leave false to get a predictable "Held by staggered start" 409 when the group is full.
forceoptional
boolean
When true, bypass the printer-job match check. The server still enforces the atomic "printer not currently busy" claim and the part-existence guard. Use sparingly — a forced mismatch will likely fail at slice/print time.
printerIdrequired
string
pattern: ^[a-z0-9]{24}$

Example Request

application/json
{
  "printerId": "string",
  "force": true,
  "bypassStaggeredStart": true
}

Response Schema

SendPrintJobToPrinterResponse
printJobrequired
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

Example Response

201 OK — application/json
{
  "printJob": {
    "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:55.902Z",
    "updatedAt": "2026-08-24T03:58:55.902Z"
  }
}