Printago API
GET
/v1/printer-slots
Get all printer slots
List all printer filament slot configurations (external spool slots and AMS slots)
Query Parameters
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.
materialId
optional
string
Filter on
materialId. A bare value is an exact match (materialId=value); use materialId.<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.
variantId
optional
string
Filter on
variantId. A bare value is an exact match (variantId=value); use variantId.<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.
instanceId
optional
string
Filter on
instanceId. A bare value is an exact match (instanceId=value); use instanceId.<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.
materialType
optional
string
Filter on
materialType. A bare value is an exact match (materialType=value); use materialType.<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.
expectedData
optional
string
Filter on
expectedData. A bare value is an exact match (expectedData=value); use expectedData.<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.
expectedDataSetAt
optional
string
Filter on
expectedDataSetAt. A bare value is an exact match (expectedDataSetAt=value); use expectedDataSetAt.<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.
serial
optional
string
Serial of the roll physically in this slot, null when unknown.
serialSource
optional
string
Filter on
serialSource. A bare value is an exact match (serialSource=value); use serialSource.<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.
amsIndex
optional
string
Visual slot position: -1 for spool, 0+ for AMS array index
slotIndex
optional
string
Slot within AMS, or spool index for multiple spools
slot
optional
string
Filter on
slot. A bare value is an exact match (slot=value); use slot.<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.
filamentUserProfileId
optional
string
Filter on
filamentUserProfileId. A bare value is an exact match (filamentUserProfileId=value); use filamentUserProfileId.<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.
filamentSystemProfileId
optional
string
Filter on
filamentSystemProfileId. A bare value is an exact match (filamentSystemProfileId=value); use filamentSystemProfileId.<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
PrinterSlot[] | SearchResponse
Variant 1PrinterSlot[]
amsIndexrequired
number
Visual slot position: -1 for spool, 0+ for AMS array index
createdAtrequired
string
format: date-time
expectedDatarequirednullable
object
colorrequired
string
identifierrequired
string
identifiersoptional
string[]
Every `info` value the printer might legitimately echo back for this
assignment. Only Bambu (`tray_info_idx`) and first-party Creality
(canonical code) can round-trip `identifier` itself — the U1 echoes
its RFID SKU or type string, Anycubic its read-only RFID SKU, Elegoo
nothing at all — so the expected-check accepts any member of this
set (plus an empty `info` when type+color match). Contains at least
`identifier` and the `trayType` sent to the printer; assignment
flows that know the slot's currently-reported `info` (RFID SKU etc.)
include it too, pinning the assignment to the observed physical
spool. Absent on rows written before this field existed — readers
fall back to `[identifier]`.
typerequired
string
expectedDataSetAtrequirednullable
string
format: date-time
filamentSystemProfileIdrequirednullable
number
filamentUserProfileIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
idrequired
string
pattern: ^[a-z0-9]{24}$
instanceIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
materialIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
materialTyperequirednullable
string
printerIdrequired
string
pattern: ^[a-z0-9]{24}$
serialrequirednullable
string
Serial of the roll physically in this slot, null when unknown.
serialSourcerequirednullable
"tag" | "manual" | "integration"
tagmanualintegration
slotoptional
number
min: -64max: 255
slotIndexrequired
number
Slot within AMS, or spool index for multiple spools
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
updatedAtrequired
string
format: date-time
variantIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
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
[
{
"printerId": "string",
"materialId": "string",
"variantId": "string",
"instanceId": "string",
"materialType": "string",
"expectedData": {
"color": "string",
"identifier": "string",
"type": "string",
"identifiers": [
"string"
]
},
"expectedDataSetAt": "2025-01-15T12:00:00.000Z",
"serial": "string",
"serialSource": "tag",
"amsIndex": 1,
"slotIndex": 1,
"slot": -64,
"filamentUserProfileId": "string",
"filamentSystemProfileId": 1,
"id": "string",
"storeId": "string",
"createdAt": "2025-01-15T12:00:00.000Z",
"updatedAt": "2025-01-15T12:00:00.000Z"
}
]