Skip to content
GET
/products
curl --request GET \
--url 'https://api.oletapp.com/your-store/v1/products?limit=50&order=asc&include_deleted=false' \
--header 'Authorization: Bearer <token>'

A delta-sync polling list: poll with the returned next_cursor to see only what changed since the last page. Each row is the same full product document products.get returns: codes, tags, suppliers, variant options and attributes, and components, never a slimmer summary.

  • Filter by exact sku, active, or variant_parent_id.

Requires scope: catalog:read

limit
integer
default: 50 >= 1 <= 200
cursor

Opaque. Pass back the exact next_cursor value from a previous response; never construct one. A cursor that fails to decode is 400 VALIDATION_FAILED, in every order mode.

string
>= 1 characters

Opaque. Pass back the exact next_cursor value from a previous response; never construct one. A cursor that fails to decode is 400 VALIDATION_FAILED, in every order mode.

order
string
default: asc
Allowed values: asc desc
include_deleted
boolean
sku

Exact SKU or barcode match (case-insensitive).

string
>= 1 characters

Exact SKU or barcode match (case-insensitive).

active
boolean
variant_parent_id
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/

List products

Media typeapplication/json
object
data
required
Array
Any of:
object
active
required
boolean
brand_id
required
Any of:
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
category_id
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
codes
required
Array<object>
object
code
required
string
id
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
type
required
string
components
required
Array<object>
object
product_id
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
quantity
required
integer
>= -9007199254740991 <= 9007199254740991
created_at
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$/
description
required
string | null
dimension_unit
required
string | null
has_inventory
required
boolean
has_variants
required
boolean
height
required
number | null
id
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
image_thumb_url
required
string | null
image_url
required
string | null
is_composite
required
boolean
is_gift_card
required
boolean
length
required
number | null
loyalty_amount
required
Any of:

The loyalty amount earned on sale. Integer minor units (cents).

integer
>= -9007199254740991 <= 9007199254740991
name
required
string
purchase_account_code
required
string | null
retail_price
required

The retail price. Integer minor units (cents).

integer
>= -9007199254740991 <= 9007199254740991
sales_account_code
required
string | null
sku
required
string
suppliers
required

Live supplier links for this product. Never carries supply_price; use the admin UI or an export for cost data.

Array<object>
object
id
required

This supplier link’s own id, not the supplier’s id. Distinct from supplier_id below.

string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
is_primary
required

Whether this is the product’s primary supplier.

boolean
supplier_code
required

This retailer’s own code for the product at this supplier, if set.

string | null
supplier_id
required

The linked supplier’s id.

string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
supplier_name
required

The supplier name as of this document.

string
tags
required

Tags attached to this product, with names.

Array<object>
object
id
required

The tag’s own id, usable to reference it elsewhere.

string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
name
required

The tag name as of this document.

string
updated_at
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$/
variant_attributes
required

Present on a variant parent product; empty on a variant child or an ordinary product.

Array<object>
object
id
required

The variant attribute’s id. A variant child’s variant_options reference it as attribute_id.

string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
name
required

The attribute name, for example Size or Colour.

string
position
required

Display order among this product’s variant attributes.

integer
>= -9007199254740991 <= 9007199254740991
variant_options
required
Array<object>
object
attribute_id
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
attribute_name
required
string
value
required
string
variant_parent_id
required
Any of:
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
version
required

Opaque delta-sync version. Increases with every change to this document: its own fields, and the addition, removal, or edit of a code, tag link, supplier link, variant option, variant attribute, or component, including when an attached tag or supplier is itself renamed. Use it to detect updates.

string
weight
required
number | null
weight_unit
required
string | null
width
required
number | null
has_more
required
boolean
next_cursor
required

Opaque pagination cursor. Pass back as ?cursor= to fetch the next page.

string | null
Examplegenerated
{
"data": [
{
"active": true,
"brand_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"category_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"codes": [
{
"code": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"type": "example"
}
],
"components": [
{
"product_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"quantity": 1
}
],
"created_at": "2026-04-15T12:00:00Z",
"description": "example",
"dimension_unit": "example",
"has_inventory": true,
"has_variants": true,
"height": 1,
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"image_thumb_url": "example",
"image_url": "example",
"is_composite": true,
"is_gift_card": true,
"length": 1,
"loyalty_amount": 1,
"name": "example",
"purchase_account_code": "example",
"retail_price": 1,
"sales_account_code": "example",
"sku": "example",
"suppliers": [
{
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"is_primary": true,
"supplier_code": "example",
"supplier_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"supplier_name": "example"
}
],
"tags": [
{
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"name": "example"
}
],
"updated_at": "2026-04-15T12:00:00Z",
"variant_attributes": [
{
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"name": "example",
"position": 1
}
],
"variant_options": [
{
"attribute_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"attribute_name": "example",
"value": "example"
}
],
"variant_parent_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"version": "example",
"weight": 1,
"weight_unit": "example",
"width": 1
}
],
"has_more": true,
"next_cursor": "example"
}

An error response.

Media typeapplication/json
object
error
required
object
code
required

A machine-readable error code, e.g. VALIDATION_FAILED.

string
Allowed values: UNAUTHORIZED PLAN_REQUIRED INSUFFICIENT_SCOPE NOT_FOUND VALIDATION_FAILED CONFLICT STALE_VERSION RATE_LIMITED IDEMPOTENCY_KEY_REUSED IDEMPOTENCY_IN_PROGRESS IMAGE_FETCH_FAILED UNPROCESSABLE INTERNAL RETAILER_CANCELLED RETAILER_SUSPENDED RETAILER_NOT_FOUND TRIAL_DECISION_REQUIRED PLAN_USERS_EXCEEDED RETAILER_PAUSED PRODUCT_LIMIT_REACHED NOT_STOCK_TRACKED REASON_DIRECTION_MISMATCH REASON_NOT_ALLOWED INSUFFICIENT_STOCK OUTLET_DELETED
fields
Array<object>
object
field
required
string
message
required
string
message
required

A plain-English sentence describing what went wrong.

string
Example
{
"error": {
"code": "UNAUTHORIZED"
}
}