Curosa
Supplier Portal API Reference New

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

  • images
  • variants
  • description
  • site_pricing
  • distribution_centre_stock
  • factory_stock
  • inbound_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.