Printago API
GET
/v1/api-keys
Get all API keys
List all API keys for your store with optional search/filter
Query Parameters
hash
optional
string
Filter on
hash. A bare value is an exact match (hash=value); use hash.<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.
salt
optional
string
Filter on
salt. A bare value is an exact match (salt=value); use salt.<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.
name
optional
string
Filter on
name. A bare value is an exact match (name=value); use name.<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.
active
optional
string
Filter on
active. A bare value is an exact match (active=value); use active.<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.
managed
optional
string
Filter on
managed. A bare value is an exact match (managed=value); use managed.<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.
managedBy
optional
string
Filter on
managedBy. A bare value is an exact match (managedBy=value); use managedBy.<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.
externalRef
optional
string
Filter on
externalRef. A bare value is an exact match (externalRef=value); use externalRef.<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.
integrationId
optional
string
Optional link to integration - when integration is deleted, this API key is also deleted
fullAccess
optional
string
Filter on
fullAccess. A bare value is an exact match (fullAccess=value); use fullAccess.<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.
ipAllowlist
optional
string
Filter on
ipAllowlist. A bare value is an exact match (ipAllowlist=value); use ipAllowlist.<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.
createdBy
optional
string
Filter on
createdBy. A bare value is an exact match (createdBy=value); use createdBy.<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.
lastUsedAt
optional
string
Filter on
lastUsedAt. A bare value is an exact match (lastUsedAt=value); use lastUsedAt.<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.
expiresAt
optional
string
Filter on
expiresAt. A bare value is an exact match (expiresAt=value); use expiresAt.<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
ApiKey[] | SearchResponse
Variant 1ApiKey[]
activerequired
boolean
createdAtrequired
string
format: date-time
createdByoptionalnullable
string
expiresAtoptionalnullable
string
format: date-time
externalRefoptionalnullable
string
fullAccessrequired
boolean
hashrequired
string
idrequired
string
pattern: ^[a-z0-9]{24}$
integrationIdoptionalnullable
string
Optional link to integration - when integration is deleted, this API key is also deleted
pattern: ^[a-z0-9]{24}$
ipAllowlistoptionalnullable
string[]
lastUsedAtoptionalnullable
string
format: date-time
managedrequired
boolean
managedByoptionalnullable
string
namerequired
string
saltrequired
string
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
updatedAtrequired
string
format: date-time
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
[
{
"hash": "string",
"salt": "string",
"name": "string",
"active": true,
"managed": true,
"managedBy": "string",
"externalRef": "string",
"integrationId": "string",
"fullAccess": true,
"ipAllowlist": [
"string"
],
"createdBy": "string",
"lastUsedAt": "2025-01-15T12:00:00.000Z",
"expiresAt": "2025-01-15T12:00:00.000Z",
"id": "string",
"storeId": "string",
"createdAt": "2025-01-15T12:00:00.000Z",
"updatedAt": "2025-01-15T12:00:00.000Z"
}
]