Printago API
GET
/v1/integrations
Get all integrations
List all integrations in your store
Query Parameters
type
optional
string
Filter on
type. A bare value is an exact match (type=value); use type.<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
External identifier for deduplication (e.g., shopId for Etsy)
publicData
optional
string
Public metadata safe to expose to frontend
settings
optional
string
User-configurable settings
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
Integration[] | SearchResponse
Variant 1Integration[]
createdAtrequired
string
format: date-time
externalIdoptionalnullable
string
External identifier for deduplication (e.g., shopId for Etsy)
idrequired
string
pattern: ^[a-z0-9]{24}$
publicDataoptionalnullable
object
Public metadata safe to expose to frontend
lastSyncedAtoptional
number
shopIdrequired
string
shopNamerequired
string
shopUrloptional
string
lastSyncedAtoptional
number
shopDomainrequired
string
shopNamerequired
string
usernameoptional
string
Variant 4CloudStoragePublicDataPublic data for cloud-storage integrations (safe to expose to frontend).
authErroroptionalnullable
string
Set when a token refresh fails because the grant was revoked. The stored
tokens are dead once this is set; the UI prompts a reconnect. Cleared on a
successful reconnect.
displayNamerequired
string
emailrequired
string
lastSyncedAtoptional
number
lastSyncErroroptionalnullable
string
lastSyncResultoptional
object
createdrequired
number
deletedrequired
number
errorsrequired
number
updatedrequired
number
lastSyncStartedAtoptional
number
syncStatusoptional
"idle" | "syncing"
Coarse run state used as the concurrency claim for background syncs.
idlesyncing
lastSyncedAtoptional
number
marketplaceIdrequired
string
eBay marketplace ID (e.g., EBAY_US, EBAY_UK, EBAY_DE, EBAY_AU)
sellerIdrequired
string
usernamerequired
string
disconnectedAtoptional
number
Set when TikTok notifies us (SELLER_DEAUTHORIZATION webhook) that the seller
revoked our app's access. The stored tokens are dead once this is set, so
syncs stop and the UI prompts a reconnect. Cleared when the seller
re-authorizes through OAuth.
disconnectReasonoptional
"seller_deauthorized"
Why the integration was auto-disconnected (only `seller_deauthorized` today).
lastSyncedAtoptional
number
regionrequired
string
TikTok Shop region (e.g., US, UK, ID)
shopIdrequired
string
shopNamerequired
string
lastSyncedAtoptional
number
lastWebhookAtoptional
number
When the last signed webhook delivery arrived. Webhook delivery on
WordPress hosts is WP-cron driven and unreliable, so the UI surfaces this
next to the polling interval.
storeNamerequired
string
The WordPress site title, for display.
storeUrlrequired
string
Normalized store URL (origin + path, no trailing slash).
syncWatermarkoptional
number
Watermark (epoch millis) for the incremental order sync: the start time of
the last successful sync, minus overlap. Orders modified after this are
re-fetched and reconciled on the next run.
webhookSetupErroroptionalnullable
string
Set when webhook registration failed at connect time; polling still runs.
accountNamerequired
string
ShipStation has no account id on the v1 API; the first store's account name identifies it.
authErroroptionalnullable
string
Set when ShipStation rejects the stored credentials. Syncs stop until the
seller reconnects; cleared on a successful reconnect.
lastSyncedAtoptional
number
ordersSyncedThroughoptional
string
Watermark: the ShipStation `modifyDate` (ISO, account-local) the last sync
read through. The next sync resumes from here rather than re-walking the
seller's whole order history, which a 40 req/min key cannot afford.
storesrequired
object[]
Discovered stores, refreshed on every sync so the picker can show new ones.
activerequired
boolean
ShipStation's own active flag; inactive stores stop producing orders.
marketplaceNamerequired
string
The underlying channel, e.g. "Walmart", "Shopify", "Manual Orders".
storeIdrequired
number
storeNamerequired
string
authErroroptionalnullable
string
Set when Wix refuses to mint a token for the instance (the app was
removed from the site). Syncs stop until reconnect; cleared on reconnect.
disconnectedAtoptional
number
Set when the App Instance Removed webhook arrived. Cleared on reconnect.
disconnectReasonoptional
"app_removed"
Why the integration was flagged disconnected (only `app_removed` today).
instanceIdrequired
string
lastSyncedAtoptional
number
lastWebhookAtoptional
number
When the last verified webhook delivery arrived.
ordersSyncedThroughoptional
string
Watermark: the Wix `updatedDate` (ISO-8601 UTC) the last sync read
through. The next sync resumes from here minus a small overlap.
paymentCurrencyoptional
string
The site's currency at connect time; order mapping falls back to it.
siteIdrequired
string
siteNamerequired
string
siteUrloptionalnullable
string
Only set once the site is published.
settingsoptionalnullable
object
User-configurable settings
autoCloseOrdersoptional
"shipped" | "delivered" | "never"
shippeddeliverednever
autoPrintoptional
boolean
ignoredVariantNamesoptional
string[]
Variant option names to exclude from SKU matching (e.g., ["Size"])
autoCloseOrdersoptional
"partial" | "never" | "fulfilled"
When to automatically close orders in Printago based on Shopify status.
- 'fulfilled': Close when Shopify order is fully fulfilled (shipped)
- 'partial': Close when any items are fulfilled
- 'never': Never auto-close based on fulfillment
partialneverfulfilled
autoPrintoptional
boolean
ignoredVariantNamesoptional
string[]
Variant option names to exclude from SKU matching (e.g., ["Size"])
propertyWhitelistoptional
string[]
Property names to import as SKU options (e.g., ["Logo", "Back Color"])
tagWhenPrintedoptional
string
Tag to add to orders when fully printed (empty string disables)
writeProgressTagsoptional
boolean
Keep Shopify order tags in sync with Printago print job progress (e.g. "2/5 printed").
autoCloseOrdersoptional
"shipped" | "never"
When to close the Printago order.
Only 'shipped' and 'never' exist here, unlike Etsy: eBay's Fulfillment API
reports an order as FULFILLED once tracking is uploaded but never tells us
it was delivered, so a 'delivered' option could only ever have behaved as
'shipped' or never fired at all.
shippednever
autoPrintoptional
boolean
autoCloseOrdersoptional
"shipped" | "delivered" | "never"
shippeddeliverednever
autoPrintoptional
boolean
autoCloseOrdersoptional
"never" | "completed"
WooCommerce has no shipped/delivered distinction; 'completed' is the
seller's own "fulfilled" signal, so it is the only close trigger.
nevercompleted
autoPrintoptional
boolean
ignoredVariantNamesoptional
string[]
Variant option names to exclude from SKU matching (e.g., ["Size"])
autoCloseOrdersoptional
"shipped" | "never"
Defaults to 'shipped' here, unlike Shopify and eBay: ShipStation is where
the seller actually ships, so SHIP_NOTIFY is a first-hand signal rather
than a marketplace's echo of one.
shippednever
autoPrintoptional
boolean
excludedStoreIdsoptional
number[]
ShipStation store ids NOT to import from. An exclusion list rather than an
allowlist so a store the seller adds in ShipStation later imports without
them having to come back here — the seller already knows what they
connected, and turning one off is the rarer action.
showMarketplaceoptional
boolean
Show the underlying marketplace alongside the source, so an order reads
"ShipStation - Walmart" rather than just "ShipStation".
autoCloseOrdersoptional
"never" | "fulfilled"
Defaults to 'fulfilled': Wix is where the seller marks the order shipped,
so the fulfillment is a first-hand signal (the ShipStation stance).
neverfulfilled
autoPrintoptional
boolean
ignoredVariantNamesoptional
string[]
Variant option names to exclude from SKU matching (e.g., ["Size"])
importMarketplaceOrdersoptional
boolean
Orders synced into Wix from marketplaces (eBay, Etsy, Amazon, ...) import
by default; a seller who also connects those channels directly can turn
them off here to avoid duplicates.
importUnpaidOrdersoptional
boolean
An APPROVED order on an offline payment method is still NOT_PAID.
Importing it would print on credit, so unpaid orders wait by default.
autoSyncoptional
boolean
Re-enqueue the next sync (~60 min) when a background sync completes.
keepPartsOnRemoteDeleteoptional
boolean
Whether to keep Printago parts when their source file is removed remotely.
Defaults to true: deleting parts is a destructive side effect, opt-in only.
syncFileTypesoptional
string[]
File extensions to import (defaults to all supported).
watchedFolderIdoptionalnullable
string
The remote folder ID to watch.
watchedFolderNameoptionalnullable
string
The remote folder name/path (for display).
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
typerequired
enum
bambulabetsyshopifyebaytiktok-shopwoocommerceshipstationwixgoogle-driveonedrive
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
[
{
"type": "bambulab",
"externalId": "string",
"publicData": {
"shopId": "string",
"shopName": "string",
"shopUrl": "string",
"lastSyncedAt": 1
},
"settings": {
"autoPrint": true,
"autoCloseOrders": "shipped",
"ignoredVariantNames": [
"string"
]
},
"id": "string",
"storeId": "string",
"createdAt": "2025-01-15T12:00:00.000Z",
"updatedAt": "2025-01-15T12:00:00.000Z"
}
]