Core resources
Products
Retrieve, view, and create products in your Curosa catalog
Overview
The Products endpoint allows you to list products, view a single product, and create new products. You can filter list results and request additional related fields using the scope query parameter.
Authentication
This endpoint requires authentication. Include your API token in the Authorization header. For more information on obtaining a token, see the Authentication guide.
List Products
Retrieve a paginated list of products.
Endpoint: GET https://curosa.com/api/v1/products
Request
curl --location 'https://curosa.com/api/v1/products' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Query Parameters
| Parameter | Type | Description |
|---|---|---|
platform_status |
string | Filter by platform status: pending, active, inactive, declined |
status |
string | Filter by supplier status: active, inactive |
search |
string | Search by name, sku, or platform_sku |
scope |
string | Comma-separated list of additional fields to include |
cursor |
string | Cursor token for pagination |
Response
Returns a 200 OK response:
{
"data": [
{
"sku": "T3272P287613",
"platform_sku": "367.983.903",
"name": "Supplier Product Description",
"status": "active",
"platform_status": "active"
}
],
"links": {
"first": null,
"last": null,
"prev": null,
"next": "https://curosa.com/api/v1/products?cursor=eyJwcm9kdWN0cy5pZCI6MTAwLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9"
},
"meta": {
"path": "https://curosa.com/api/v1/products",
"per_page": 100,
"next_cursor": "eyJwcm9kdWN0cy5pZCI6MTAwLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9",
"prev_cursor": null
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
sku |
string | Your internal SKU |
platform_sku |
string | Curosa platform SKU |
name |
string | Product name |
status |
string | Supplier-facing status |
platform_status |
string | Platform status |
declined_reason |
string|null | Included when platform_status is declined |
Available scope Values
imagesvariantsdescriptionsite_pricingdistribution_centre_stockfactory_stockinbound_shipments
Scope Request Example
curl --location 'https://curosa.com/api/v1/products?scope=inbound_shipments&per_page=10' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
View Product
Retrieve one product by SKU or platform SKU.
Endpoint: GET https://curosa.com/api/v1/products/{sku_or_platform_sku}
Request
curl --location 'https://curosa.com/api/v1/products/201.228.141' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Response
Returns a 200 OK response:
{
"data": {
"sku": "DEMO006",
"platform_sku": "823.115.780",
"name": "Demo Product 6",
"description": "This is the description of this demo product. It is required to be at least 100 chars long before it can be enriched by the Curosa Marketing Team",
"status": "pending",
"platform_status": "inactive",
"images": [],
"site_pricing": [],
"variants": [],
"distribution_centre_stock": [],
"factory_stock": {
"sku": "DEMO006",
"platform_sku": "823.115.780",
"stock_quantity": 50,
"stock_quantity_allocated": 0,
"stock_quantity_free": 50
},
"inbound_shipments": []
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
sku |
string | Your internal SKU |
platform_sku |
string | Curosa platform SKU |
name |
string | Product name |
description |
string | Product description |
status |
string | Supplier-facing status |
platform_status |
string | Platform status |
images |
array | Product image objects |
site_pricing |
array | Pricing by site |
variants |
array | Variant groupings |
distribution_centre_stock |
array | Stock by distribution centre |
factory_stock |
object | Factory stock summary |
inbound_shipments |
array | Inbound shipment allocations |
Create Product
Create a new product.
Endpoint: POST https://curosa.com/api/v1/products
Request
curl --location 'https://curosa.com/api/v1/products' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"sku": "DEMO001",
"name": "Demo Product 1",
"description": "This is the description of this demo product. It is required to be at least 100 chars long before it can be enriched by the Curosa Marketing Team",
"brand": "Demo Brand",
"range": "Demo Range",
"images": [
{
"url": "https://picsum.photos/1000/1000",
"is_primary": true,
"type": "lifestyle"
}
],
"site_pricing": [
{
"site_code": "UK",
"price": "50.00",
"price_currency": "GBP",
"tax_rate_id": 1,
"preorder_discount_percent": "0.00",
"factory_stock_discount_percent": "0.00"
}
],
"distribution_centre_stock": [
{
"distribution_centre_code": "DEMO-DC",
"stock_quantity": 50
}
],
"factory_stock": {
"stock_quantity": 50
}
}'
Response
Returns a 201 Created response:
{
"data": {
"sku": "DEMO006",
"platform_sku": "823.115.780",
"name": "Demo Product 6",
"status": "pending",
"platform_status": "inactive",
"images": [
{
"id": 42789,
"url": "https://curosa-prod.lon1.digitaloceanspaces.com/product_media/823/115/780/images/DEMO006_001.webp",
"type": "lifestyle",
"is_primary": true
}
],
"site_pricing": [
{
"site": {
"code": "UK",
"name": "United Kingdom"
},
"price": "50.00",
"price_currency": "GBP"
}
],
"distribution_centre_stock": [
{
"distribution_centre_code": "DEMO-DC",
"stock_quantity": 50
}
],
"factory_stock": {
"stock_quantity": 50
}
}
}
Rate Limiting
This endpoint group is rate limited to 3,600 requests per hour. The current limit and remaining requests are returned in the response headers as x-ratelimit-limit and x-ratelimit-remaining.