Printago API
GET
/v1/materials/instances/{id}/activity
Get spool activity
One spool's drawdown history, newest first Every row that moved the spool's weight: prints (with the job, part, attempt, printer and whoever queued it), and receiving, weighing, finishing and restoring it (job and printer fields null). `costCents` is what the grams moved are worth at the spool's price per kg, and null on an archive or restore row, which spends nothing. `usedGrams` and `printCount` cover every page; `total` counts the rows. An unknown spool is a 404. Needs the filament-inventory add-on.
Path Parameters
id
required
string
Instance ID
Query Parameters
limit
optional
integer
Rows per page, default 50.
offset
optional
integer
Rows to skip, for the next page.
Response Schema
SpoolActivityResponse
printCountrequired
number
Prints that drew from the spool.
rowsrequired
object[]
atrequired
string
format: date-time
attemptrequirednullable
number
The job's attempt that drew it, from 1.
byrequirednullable
object
Who queued the print on a print row, who made the change on any other.
actorIdrequirednullable
string
labelrequired
string
typerequirednullable
string
`user`, `api_key`, `system`, `scheduler`, `webhook` or `fuse`.
costCentsrequirednullable
number
What the grams moved are worth at the spool's price per kg. Null when it
has none, and on an archive or restore row, which spends nothing.
deltaGramsrequired
number
idrequired
string
pattern: ^[a-z0-9]{24}$
kindrequired
enum
manualintakeconvertprintopeningclosingretirerestoreprinter_reading
partNamerequirednullable
string
printerNamerequirednullable
string
printJobIdrequirednullable
string
The print job a print row drew for. Null on rows that are not prints.
pattern: ^[a-z0-9]{24}$
reasonrequirednullable
string
remainingAfterGramsrequired
number
totalrequired
number
Rows over every page.
usedGramsrequired
number
Grams the spool's prints drew, over every page.
Example Response
200 OK — application/json
{
"usedGrams": 1,
"printCount": 1,
"rows": [
{
"id": "string",
"at": "2025-01-15T12:00:00.000Z",
"kind": "manual",
"reason": "string",
"printJobId": "string",
"partName": "string",
"attempt": 1,
"by": {
"actorId": "string",
"label": "string",
"type": "string"
},
"printerName": "string",
"deltaGrams": 1,
"remainingAfterGrams": 1,
"costCents": 1
}
],
"total": 1
}