Printago API
GET
/v1/print-history
List print history
List print attempts: one row per time a job ran on a printer, with its outcome, timing and printer. Rows are written by Printago as attempts finish and cannot be edited. Filter with `field.operator=value` query parameters; pass `meta=true` to get a paginated envelope. `GET /v2/print-history` is easier to page through.
Query Parameters
printJobId
optional
string
Filter on
printJobId. A bare value is an exact match (printJobId=value); use printJobId.<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.
attemptNumber
optional
string
Filter on
attemptNumber. A bare value is an exact match (attemptNumber=value); use attemptNumber.<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.
finalStatus
optional
string
Filter on
finalStatus. A bare value is an exact match (finalStatus=value); use finalStatus.<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.
outcome
optional
string
Filter on
outcome. A bare value is an exact match (outcome=value); use outcome.<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.
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.
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.
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.
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.
groupId
optional
string
Filter on
groupId. A bare value is an exact match (groupId=value); use groupId.<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.
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.
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.
printerId
optional
string
Filter on
printerId. A bare value is an exact match (printerId=value); use printerId.<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.
printerDeviceId
optional
string
Filter on
printerDeviceId. A bare value is an exact match (printerDeviceId=value); use printerDeviceId.<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.
printerProvider
optional
string
Filter on
printerProvider. A bare value is an exact match (printerProvider=value); use printerProvider.<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.
printerName
optional
string
Filter on
printerName. A bare value is an exact match (printerName=value); use printerName.<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.
printerModelName
optional
string
Filter on
printerModelName. A bare value is an exact match (printerModelName=value); use printerModelName.<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.
printerVendorName
optional
string
Filter on
printerVendorName. A bare value is an exact match (printerVendorName=value); use printerVendorName.<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.
queuedAt
optional
string
Filter on
queuedAt. A bare value is an exact match (queuedAt=value); use queuedAt.<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.
endedAt
optional
string
Filter on
endedAt. A bare value is an exact match (endedAt=value); use endedAt.<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.
printDurationSeconds
optional
string
Filter on
printDurationSeconds. A bare value is an exact match (printDurationSeconds=value); use printDurationSeconds.<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.
materialUsageId
optional
string
Filter on
materialUsageId. A bare value is an exact match (materialUsageId=value); use materialUsageId.<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.
totalUsed
optional
string
Filter on
totalUsed. A bare value is an exact match (totalUsed=value); use totalUsed.<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.
totalUsedGrams
optional
string
Filter on
totalUsedGrams. A bare value is an exact match (totalUsedGrams=value); use totalUsedGrams.<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.
usedBySlot
optional
string
Flat slot id (amsIndex*4+slotIndex, negative for spools) -> mm extruded.
usedGramsBySlot
optional
string
Flat slot id -> grams extruded, when a grams conversion was available.
slotMaterials
optional
string
Flat slot id -> what was loaded there at capture time. Deliberately open:
it is a verbatim snapshot of `material_usage.slot_materials`, whose shape
has gained fields over time and must survive round-tripping unchanged.
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.
totalLayers
optional
string
Filter on
totalLayers. A bare value is an exact match (totalLayers=value); use totalLayers.<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.
completedLayers
optional
string
Filter on
completedLayers. A bare value is an exact match (completedLayers=value); use completedLayers.<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.
skippedObjects
optional
string
Filter on
skippedObjects. A bare value is an exact match (skippedObjects=value); use skippedObjects.<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.
estimatedPrintTimeSeconds
optional
string
Filter on
estimatedPrintTimeSeconds. A bare value is an exact match (estimatedPrintTimeSeconds=value); use estimatedPrintTimeSeconds.<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.
estimatedTotalWeightGrams
optional
string
Filter on
estimatedTotalWeightGrams. A bare value is an exact match (estimatedTotalWeightGrams=value); use estimatedTotalWeightGrams.<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.
estimatedMaterials
optional
string
Filter on
estimatedMaterials. A bare value is an exact match (estimatedMaterials=value); use estimatedMaterials.<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.
slicerVersion
optional
string
Filter on
slicerVersion. A bare value is an exact match (slicerVersion=value); use slicerVersion.<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.
gcodeAnalysisSha256
optional
string
Filter on
gcodeAnalysisSha256. A bare value is an exact match (gcodeAnalysisSha256=value); use gcodeAnalysisSha256.<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.
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.
cameraThumbnailUri
optional
string
Filter on
cameraThumbnailUri. A bare value is an exact match (cameraThumbnailUri=value); use cameraThumbnailUri.<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.
timelapseUri
optional
string
Filter on
timelapseUri. A bare value is an exact match (timelapseUri=value); use timelapseUri.<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.
gatewayTelemetryUri
optional
string
Filter on
gatewayTelemetryUri. A bare value is an exact match (gatewayTelemetryUri=value); use gatewayTelemetryUri.<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.
fuseTelemetryUri
optional
string
Filter on
fuseTelemetryUri. A bare value is an exact match (fuseTelemetryUri=value); use fuseTelemetryUri.<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.
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.
Response Schema
PrintHistory[] | SearchResponse
Variant 1PrintHistory[]
assignmentCompletedAtrequirednullable
string
format: date-time
assignmentStartedAtrequirednullable
string
format: date-time
attemptNumberrequired
number
cameraThumbnailUrirequirednullable
string
cancelledAtrequirednullable
string
format: date-time
coloredThumbnailUrirequirednullable
string
completedLayersrequirednullable
number
createdAtrequired
string
format: date-time
endedAtrequired
string
format: date-time
errorMessagerequirednullable
string
estimatedMaterialsrequirednullable
object[]
coloroptional
string
indexrequired
number
materialTyperequired
string
usedGramsrequired
number
usedMetersrequired
number
estimatedPrintTimeSecondsrequirednullable
number
estimatedTotalWeightGramsrequirednullable
number
finalStatusrequired
enum
pendingassignedslicingslicedfinalizingwaiting-for-approvalready-for-printersending-to-printerprintingpausedcompletedfailedcancelled
fuseTelemetryUrirequirednullable
string
gatewayTelemetryUrirequirednullable
string
gcodeAnalysisSha256requirednullable
string
groupIdrequirednullable
string
idrequired
string
pattern: ^[a-z0-9]{24}$
labelrequirednullable
string
logsUrirequirednullable
string
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
materialUsageIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
orderIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
orderItemIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
outcomerequired
"failed" | "completed" | "cancelled"
failedcompletedcancelled
overriddenProcessProfileIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
partBuildIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
partIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
partNamerequirednullable
string
printDurationSecondsrequirednullable
number
printerDeviceIdrequirednullable
string
printerIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
printerModelNamerequirednullable
string
printerNamerequirednullable
string
printerProviderrequirednullable
string
printerVendorNamerequirednullable
string
printingCompletedAtrequirednullable
string
format: date-time
printingStartedAtrequirednullable
string
format: date-time
printJobIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
priorityrequirednullable
number
quantityIndexrequirednullable
number
quantityTotalrequirednullable
number
queuedAtrequirednullable
string
format: date-time
skippedObjectsrequirednullable
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}$
skuNamerequirednullable
string
slicedGcodeUrirequirednullable
string
slicerVersionrequirednullable
string
slotMaterialsrequirednullable
Record<string, any>
Construct a type with a set of properties K of type T
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
taskIdrequirednullable
number
thumbnailUrirequirednullable
string
timelapseUrirequirednullable
string
totalLayersrequirednullable
number
totalUsedrequirednullable
number
totalUsedGramsrequirednullable
number
updatedAtrequired
string
format: date-time
usedBySlotrequirednullable
Record<string, number>
Construct a type with a set of properties K of type T
usedGramsBySlotrequirednullable
Record<string, number>
Construct a type with a set of properties K of type T
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
[
{
"printJobId": "string",
"attemptNumber": 1,
"taskId": 1,
"finalStatus": "pending",
"outcome": "failed",
"partBuildId": "string",
"partId": "string",
"partName": "string",
"skuId": "string",
"skuName": "string",
"label": "string",
"groupId": "string",
"orderId": "string",
"orderItemId": "string",
"quantityIndex": 1,
"quantityTotal": 1,
"printerId": "string",
"printerDeviceId": "string",
"printerProvider": "string",
"printerName": "string",
"printerModelName": "string",
"printerVendorName": "string",
"queuedAt": "2025-01-15T12:00:00.000Z",
"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",
"endedAt": "2025-01-15T12:00:00.000Z",
"printDurationSeconds": 1,
"errorMessage": "string",
"materialUsageId": "string",
"totalUsed": 1,
"totalUsedGrams": 1,
"usedBySlot": {},
"usedGramsBySlot": {},
"slotMaterials": {},
"materialMapping": [
{
"slot": 1,
"amsIndex": 1,
"slotIndex": 1,
"skip": true,
"variantId": "string",
"materialId": "string",
"materialType": "string",
"name": "string",
"color": "string",
"filamentUserProfileId": "string",
"filamentSystemProfileId": 1
}
],
"totalLayers": 1,
"completedLayers": 1,
"skippedObjects": {
"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
}
},
"estimatedPrintTimeSeconds": 1,
"estimatedTotalWeightGrams": 1,
"estimatedMaterials": [
{
"index": 1,
"usedGrams": 1,
"usedMeters": 1,
"materialType": "string",
"color": "string"
}
],
"slicerVersion": "string",
"overriddenProcessProfileId": "string",
"gcodeAnalysisSha256": "string",
"slicedGcodeUri": "string",
"thumbnailUri": "string",
"coloredThumbnailUri": "string",
"cameraThumbnailUri": "string",
"timelapseUri": "string",
"logsUri": "string",
"gatewayTelemetryUri": "string",
"fuseTelemetryUri": "string",
"priority": 1,
"id": "string",
"storeId": "string",
"createdAt": "2025-01-15T12:00:00.000Z",
"updatedAt": "2025-01-15T12:00:00.000Z"
}
]