Printago API
GET /v1/filament-stock

Get filament stock

On-hand filament weight per variant, split into tracked spools and untagged bulk Needs the filament-inventory add-on. The tracked figures are 0 without the spool-tracking add-on, and leave out finished spools. No figure is ever negative: stock stops at 0 g. `lastGramsEach` is the roll size of the newest line received for the row's material.

Requires: material.view

Query Parameters

includeEmpty optional
boolean
Include variants that have never held stock.

Response Schema

FilamentStockResponse
rowsrequired
object[]
brandrequirednullable
string
bulkGramsrequired
number
colorrequirednullable
string
lastGramsEachrequirednullable
number
The roll size of the newest line received for this color's material, in grams.
lastIntakeAtrequirednullable
string
format: date-time
materialIdrequirednullable
string
pattern: ^[a-z0-9]{24}$
materialNamerequirednullable
string
materialTyperequirednullable
string
onHandGramsrequired
number
Bulk + every tracked spool of this variant.
pricePer1000grequirednullable
number
Effective price per kg (variant's, else the material's), in cents.
trackedCountrequired
number
trackedGramsrequired
number
valueCentsrequirednullable
number
What the stock is worth, in cents: each tracked spool at the price it was bought at, and bulk and spools with no price of their own at the effective price. Null when some of it has no price.
variantIdrequired
string
pattern: ^[a-z0-9]{24}$
variantNamerequired
string
summaryrequired
object
bulkGramsrequired
number
onHandGramsrequired
number
printsThisMonthrequired
number
trackedCountrequired
number
trackedGramsrequired
number
unpricedVariantCountrequired
number
Variants holding stock at no known price, so the value above is a floor.
usedThisMonthGramsrequired
number
What the store's prints drew since the start of the calendar month, in the store's timezone (UTC when it has none), and how many prints that was.
valueCentsrequired
number
What the priced stock is worth. Filament with no price is not in here.
variantCountrequired
number

Example Response

200 OK — application/json
{
  "rows": [
    {
      "variantId": "string",
      "variantName": "string",
      "materialId": "string",
      "materialName": "string",
      "brand": "string",
      "materialType": "string",
      "color": "string",
      "onHandGrams": 1,
      "bulkGrams": 1,
      "trackedGrams": 1,
      "trackedCount": 1,
      "pricePer1000g": 1,
      "valueCents": 1,
      "lastIntakeAt": "2025-01-15T12:00:00.000Z",
      "lastGramsEach": 1
    }
  ],
  "summary": {
    "onHandGrams": 1,
    "bulkGrams": 1,
    "trackedGrams": 1,
    "trackedCount": 1,
    "valueCents": 1,
    "unpricedVariantCount": 1,
    "variantCount": 1,
    "usedThisMonthGrams": 1,
    "printsThisMonth": 1
  }
}