Printago API
GET /v1/skus

List all SKUs

Requires: sku.view

Query Parameters

sku optional
string
Filter on sku. A bare value is an exact match (sku=value); use sku.<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.
title optional
string
Filter on title. A bare value is an exact match (title=value); use title.<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.
description optional
string
Filter on description. A bare value is an exact match (description=value); use description.<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.
externalId optional
string
Filter on externalId. A bare value is an exact match (externalId=value); use externalId.<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.
externalProvider optional
string
Filter on externalProvider. A bare value is an exact match (externalProvider=value); use externalProvider.<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.
folderId optional
string
Filter on folderId. A bare value is an exact match (folderId=value); use folderId.<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.
totalCogs optional
string
Filter on totalCogs. A bare value is an exact match (totalCogs=value); use totalCogs.<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.
customMetadata optional
string
Filter on customMetadata. A bare value is an exact match (customMetadata=value); use customMetadata.<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

SkuLinkedPartsRelation[] | SearchResponse
createdAtrequired
string
format: date-time
customMetadataoptional
Record<string, any>
Construct a type with a set of properties K of type T
descriptionrequired
string
externalIdrequirednullable
string
externalProviderrequirednullable
"etsy" | "shopify"
etsyshopify
folderIdoptionalnullable
string
pattern: ^[a-z0-9]{24}$
idrequired
string
pattern: ^[a-z0-9]{24}$
linkedPartsrequired
object[]
createdAtrequired
string
format: date-time
exposedParametersrequired
string[]
extensionsoptionalnullable
object
3mfoptional
object
plateLabelsoptional
Record<string, string>
plateQuantitiesrequired
Record<string, number>
skipObjectsoptional
Record<string, string[]>
Construct a type with a set of properties K of type T
idrequired
string
pattern: ^[a-z0-9]{24}$
labelrequired
string
materialAssignmentsoptionalnullable
Record<string, object[]>
Construct a type with a set of properties K of type T
parameterBindingsoptionalnullable
Record<string, string>
Construct a type with a set of properties K of type T
parametersrequired
object[]
namerequired
string
typerequired
"number" | "string" | "boolean" | "file"
numberstringbooleanfile
valueoptional
number | string | boolean
partIdrequired
string
pattern: ^[a-z0-9]{24}$
plateQuantitiesBindingoptionalnullable
string
quantityrequired
number
min: 0max: 500
sequenceBindingsoptionalnullable
Record<string, string>
Construct a type with a set of properties K of type T
skuIdrequired
string
pattern: ^[a-z0-9]{24}$
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
updatedAtrequired
string
format: date-time
skurequired
string
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
titlerequired
string
totalCogsrequired
number
updatedAtrequired
string
format: date-time
Variant 2SearchResponseStandardized search response with data, metadata, and query information
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
[
  {
    "sku": "string",
    "title": "string",
    "description": "string",
    "externalId": "string",
    "externalProvider": "etsy",
    "folderId": "string",
    "totalCogs": 1,
    "customMetadata": {},
    "id": "string",
    "storeId": "string",
    "createdAt": "2025-01-15T12:00:00.000Z",
    "updatedAt": "2025-01-15T12:00:00.000Z",
    "linkedParts": [
      {
        "skuId": "string",
        "partId": "string",
        "parameters": [
          {
            "name": "string",
            "type": "number",
            "value": 1
          }
        ],
        "quantity": 0,
        "label": "string",
        "exposedParameters": [
          "string"
        ],
        "materialAssignments": {},
        "extensions": {
          "3mf": {
            "skipObjects": {},
            "plateQuantities": {},
            "plateLabels": {}
          }
        },
        "parameterBindings": {},
        "sequenceBindings": {},
        "plateQuantitiesBinding": "string",
        "id": "string",
        "storeId": "string",
        "createdAt": "2025-01-15T12:00:00.000Z",
        "updatedAt": "2025-01-15T12:00:00.000Z"
      }
    ]
  }
]