Printago API
GET /v1/print-jobs/{id}/telemetry

GET /v1/print-jobs/{id}/telemetry

Normalized telemetry (temperatures, layer markers, event flags) for one attempt of a print job.

Path Parameters

id required
string
The print job ID

Query Parameters

attempt optional
number
Attempt number to render; defaults to the latest attempt.
source optional
any
Which telemetry series to render; defaults to `auto`.

Response Schema

TelemetryResponse
attemptrequired
object
attemptNumberrequired
number
completedLayersrequired
number
durationSecondsrequired
number
Measured wall-clock print time (start → finish).
endedAtrequired
number
errorMessagerequired
string
estimatedDurationSecondsrequired
number
Slicer's predicted print time, for a measured-vs-estimate comparison.
finalStatusrequired
string
outcomerequired
string
startedAtrequired
number
Epoch milliseconds.
taskIdrequired
number
totalLayersrequired
number
availablerequired
object
Which artifacts exist for this attempt, so the UI can offer a toggle.
fuserequired
boolean
gatewayrequired
boolean
eventsrequired
object[]
coderequired
string
Extracted salient code (HMS/print-error hex, new state, …) when present.
messagerequired
string
Human-readable one-line summary for the timeline/tooltip.
severityrequired
any
trequired
number
Epoch milliseconds.
typerequired
string
Raw `printer-events.*` type string.
framesrequired
object[]
Timelapse frames for this attempt, oldest first. Empty unless the attempt has a Fuse recording (the gateway series carries no frames) and timelapse capture was on.
idxrequired
number
Zero-based index of the frame within the timelapse.
layerrequired
number
Layer being printed when the frame was captured, when known.
trequired
number
Epoch milliseconds when the frame was captured.
videoSecondsrequired
number
Playback position of the frame in the encoded MP4.
jobIdrequired
string
layerMarkersrequired
object[]
layerrequired
number
trequired
number
Epoch milliseconds.
materialsrequired
object[]
Filament used per slot/color for the attempt.
colorHexrequired
string
Hex (may include alpha or be a `;`-joined gradient); null → unknown.
materialIdrequired
string
materialNamerequired
string
materialTyperequired
string
slotLabelrequired
string
Human slot label, e.g. "AMS 1 · Slot 2" or "External spool".
usedGramsrequired
number
usedMmrequired
number
Millimetres extruded, shown when a grams conversion wasn't available.
variantIdrequired
string
Ids so the client can render names the same way the rest of the app does.
samplesrequired
object[]
errorrequired
number
Printer-reported print-error code (0/absent = none).
fansrequired
Record<string, number>
Construct a type with a set of properties K of type T
layerrequired
number
percentrequired
number
staterequired
string
trequired
number
Epoch milliseconds.
tempsrequired
object
bedoptional
object
crequired
number
Current temperature in °C, or null when the printer didn't report one.
tgtrequired
number
Target temperature in °C, or null when unset.
chamberoptional
object
crequired
number
Current temperature in °C, or null when the printer didn't report one.
tgtrequired
number
Target temperature in °C, or null when unset.
nozzleoptional
object
crequired
number
Current temperature in °C, or null when the printer didn't report one.
tgtrequired
number
Target temperature in °C, or null when unset.
timeRemainingrequired
number
totalLayersrequired
number
skippedObjectsrequired
object[]
Objects skipped during this job (with the layer they were skipped at).
identifyIdrequired
string
layerrequired
number
Printer layer at skip; null = excluded before printing, -1 also = up front.
namerequired
string
sourcerequired
any
Source actually rendered; null when no telemetry artifact exists yet.
totalUsedGramsrequired
number

Example Response

200 OK — application/json
{
  "jobId": "string",
  "available": {
    "gateway": true,
    "fuse": true
  },
  "attempt": {
    "attemptNumber": 1
  },
  "samples": [
    {
      "t": 1,
      "temps": {
        "nozzle": {},
        "bed": {},
        "chamber": {}
      },
      "fans": {}
    }
  ],
  "layerMarkers": [
    {
      "layer": 1,
      "t": 1
    }
  ],
  "frames": [
    {
      "t": 1,
      "idx": 1,
      "videoSeconds": 1
    }
  ],
  "events": [
    {
      "t": 1,
      "type": "string",
      "message": "string"
    }
  ],
  "materials": [
    {
      "slotLabel": "string"
    }
  ],
  "skippedObjects": [
    {
      "identifyId": "string"
    }
  ]
}