Import Store Catalogue
POST/api/storefront/instances/:id/products/refresh-tracked
Import the store's catalogue into SKU.io. The work runs in the background: the call returns immediately with an id you can poll for progress, while the import pages through the store on the store's own cursor and writes each page as it arrives — a run that is interrupted keeps everything it already read.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Body (all fields optional):
mode—since_latest(default),full_catalogordate_range.since_latestimports products changed sincelatestDate.full_catalogimports everything and ignores both dates.date_rangeimports products changed sincedateFrom.
latestDate— date/time; the starting point forsince_latest. Take it fromGET /latest-sync-info(latest_product_date). Ignored in the other modes.dateFrom— date/time; the starting point fordate_range. Ignored in the other modes.
Omitting latestDate/dateFrom for their mode imports the whole catalogue.
After the import, products whose SKU already exists in the SKU.io catalogue are linked automatically; products with no counterpart are left unmapped, which is a legitimate state. Creating brand-new SKU.io products is a separate, deliberate decision governed by the connection's auto-create setting.
This is a user-initiated import, so it deliberately bypasses the inbound Products sync switch — that switch governs the schedule, not this call.
Permission: integrations.sync.
Authentication: Bearer token (session or PAT).
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.