Skip to main content

SKU.io API Reference

SKU.io is an inventory management platform for multichannel ecommerce brands.

Getting Started

1. Set Your Base URL

Your SKU.io base URL
https://app.sku.io
https://.sku.io

Saved locally in your browser. Use this URL as the base for all API requests. In the Try It panels, set tenant to app to send requests directly from the docs.

2. Create a Personal Access Token

All API requests require authentication via a Personal Access Token (PAT):

  1. Log in to your SKU.io account
  2. Navigate to Settings → Developer → Personal Access Tokens
  3. Click Create Token, give it a name and select the scopes you need
  4. Copy the token immediately — it won't be shown again

3. Authenticate Your Requests

Include the token as a Bearer token in every request:

Authorization: Bearer <your-token>

Endpoint Path Conventions

The SKU.io API exposes two URL-prefix groups, and they are not sequential versions of each other:

  • /api/<resource> — the canonical, full-CRUD surface. The SKU.io frontend itself uses these paths for create / update / delete operations (e.g. creating a sales order issues POST /api/sales-orders). Use this prefix for all standard integration work.
  • /api/v2/<resource> — a smaller, partial BFF (backend-for-frontend) layer focused on detail-view reads and a handful of action endpoints (e.g. bulk imports, bundle workshop, dashboard summaries). It is not a versioned replacement for the /api/ surface — most resources have no /api/v2/ write equivalent, and many have no /api/v2/ list endpoint either.

When in doubt, look up the resource in this reference (or in openapi.yaml) and use the exact path shown — both prefixes appear there as first-class endpoints.

Don't conflate /v2/ in browser URLs with /api/v2/

The /v2/... segment in browser URLs (e.g. https://app.sku.io/v2/dashboard) is the SKU.io web app's own frontend routing namespace and is unrelated to the /api/v2/ API prefix. A page rendered at /v2/orders/sales-orders/create may still call POST /api/sales-orders (without v2) when you submit it.


Conventions

Pagination

List endpoints return paginated results. Use page and per_page query parameters:

GET /api/sales-orders?page=1&per_page=25

Response includes pagination metadata:

{
"data": [...],
"current_page": 1,
"last_page": 10,
"per_page": 25,
"total": 243
}

Filtering

Many list endpoints support filters via filter[field]=value (Spatie QueryBuilder):

GET /api/sales-orders?filter[status]=open&filter[search]=acme

Sorting

Sort using the sort parameter. Prefix with - for descending:

GET /api/sales-orders?sort=-created_at
GET /api/sales-orders?sort=customer_name

Date Formats

  • Date-only fields: YYYY-MM-DD (e.g. 2024-01-15)
  • Date range filters often use m/d/Y format (e.g. 01/15/2024) — see individual endpoint docs

Response Format

Success

{
"data": { ... },
"message": "Success"
}

Validation Error (422)

{
"message": "The given data was invalid.",
"errors": {
"field_name": ["The field name is required."]
}
}

Unauthorized (401)

{
"message": "Unauthenticated."
}

Support