Querying Data
Filter, sort, paginate, and shape API responses using query parameters or the POST search endpoint.
Overview
There are two ways to query data from the Printago API:
GET /v1/parts?status=pendingPOST /v1/parts/searchFiltering (Simple GET)
Add filter parameters directly to the URL. A bare field=value defaults to an equality check. You can also use the explicit field.operator=value format.
# Equality (implicit — defaults to eq) GET /v1/parts?status=pending # Equality (explicit) GET /v1/parts?status.eq=pending # Contains GET /v1/parts?name.contains=benchy # Multiple filters (AND) GET /v1/parts?status=pending&name.contains=benchy # In (comma-separated) GET /v1/orders?status.in=pending,processing
Filtering (POST Search)
For complex queries, use the POST /search endpoint with a JSON body. Each entity that supports GET listing also has a /search endpoint.
{
"filter": {
"status": { "eq": "pending" },
"name": { "contains": "benchy" }
},
"limit": 20,
"offset": 0
}
{
"filter": {
"OR": [
{ "status": { "eq": "pending" } },
{ "status": { "eq": "processing" } }
]
}
}
Filter Operators
The following operators are available for both query-parameter and POST-body filters:
?status.eq=active or just ?status=active?status.ne=deleted?quantity.gt=10?quantity.gte=10?quantity.lt=100?quantity.lte=100?name.contains=benchy?name.startsWith=PLA?name.endsWith=.3mf?status.in=pending,active?status.notIn=deleted,archived?folderId.isNull=true{ "quantity": { "between": [10, 100] } }Pagination
Control the number of results returned and paginate through large data sets.
true to include pagination metadata in the responseGET /v1/parts?limit=20&offset=40&meta=true
Sorting
Sort results by one or more fields. Use :asc or :desc suffix. Multiple sort fields are comma-separated.
# Sort by creation date (newest first) GET /v1/parts?sort=createdAt:desc # Sort by multiple fields GET /v1/parts?sort=status:asc,createdAt:desc
Field Selection
Request only specific fields to reduce response size. Provide a comma-separated list of field names.
GET /v1/parts?fields=id,name,status
Including Relations
Load related entities in a single request using the include parameter. Supports up to 4 relations and a max nesting depth of 2 levels.
# Include a single relation GET /v1/parts?include=folder # Include multiple relations GET /v1/parts?include=folder,linkedParts # Include nested relations (dot notation) GET /v1/parts?include=linkedParts.part
Response Format
By default, list endpoints return a plain JSON array. When meta=true, the response wraps results with pagination metadata.
[
{ "id": "abc123", "name": "Benchy", "status": "pending" },
{ "id": "def456", "name": "Calibration Cube", "status": "active" }
]
{
"data": [
{ "id": "abc123", "name": "Benchy", "status": "pending" },
{ "id": "def456", "name": "Calibration Cube", "status": "active" }
],
"total": 42,
"limit": 20,
"offset": 0
}