Skip to main content
API documentation

6 endpoints

Products

A simple catalogue of your products and their orders, to sell through payment links or checkout without building a full online store.

Endpoint names and descriptions come from the OpenAPI contract, in English — they cannot drift from the API.

In plain English

A hosted mini-catalogue: publish a product, share its page, sell.

When to use it

For a merchant selling a handful of references with no e-commerce site: the product carries its price, its stock and its sales page.

How to integrate it

  1. 1Create the product with its price and, if needed, its available quantity.
  2. 2Share its sales page the way you would share a payment link.
  3. 3Track its orders to prepare and ship.
  4. 4Deactivate the product rather than delete it: the order history stays readable.
GET

List products

Returns the caller's products for the key's environment as a paginated Page.

FieldTypeInRequiredDescription
originenumqueryOptionalFilter by creation origin (API or DASHBOARD).Values APIDASHBOARD
pageablePageablequeryRequired
POST200

Create a product

Creates a product in the caller's catalog. Supply an optional client-owned externalId (unique per merchant) to make the create idempotent: a duplicate externalId returns the existing product with 200 OK.

Schema · CreateProductRequest

FieldTypeInRequiredDescription
namestringbodyRequiredProduct name.
descriptionstringbodyOptionalOptional long description.
imageUrlstringbodyOptionalOptional product image URL.
pricenumberbodyRequiredUnit price in MAD major units.
currencystringbodyOptionalISO-4217 currency; defaults to MAD.
stockQuantityinteger (int32)bodyOptionalOptional stock to track; unlimited when omitted.
expiresAtstring (date-time)bodyOptionalOptional sale-ends timestamp (ISO-8601 UTC), must be in the future.
externalIdstringbodyOptionalOptional client-supplied id, unique per merchant. Creating a product with an externalId that already exists returns the existing product (idempotent replay).
metadataobjectbodyOptionalOptional free-form metadata object, echoed back on reads and in the payment webhook of orders for this product.
GET

Retrieve a product

Fetches a single product by its reference.

FieldTypeInRequiredDescription
referencestringpathRequiredProduct reference.
PATCH

Update a product

Partially updates a product; only the fields present in the body are changed.

Schema · UpdateProductRequest

FieldTypeInRequiredDescription
referencestringpathRequired
namestringbodyOptionalProduct name. Optional; only applied when present.
descriptionstringbodyOptionalProduct description. Optional; only applied when present.
imageUrlstringbodyOptionalProduct image URL. Optional; only applied when present.
pricenumberbodyOptionalUnit price. Optional; only applied when present.
activebooleanbodyOptionalWhether the product is active. Optional; only applied when present.
stockQuantityinteger (int32)bodyOptionalTotal stock quantity. Optional; only applied when present.
expiresAtstring (date-time)bodyOptionalExpiry timestamp of the listing. Optional; only applied when present.
clearExpirationbooleanbodyOptionalSet to true to clear the existing expiration. Optional; only applied when present.
DELETE

Deactivate a product

Deactivates the product so it can no longer be ordered. Returns the updated product.

FieldTypeInRequiredDescription
referencestringpathRequired
GET

List a product's orders

Returns the orders placed for this product as a paginated Page.

FieldTypeInRequiredDescription
referencestringpathRequired
pageablePageablequeryRequired

Talk to an integrator

A question about integration?

Our technical team supports integrators from the first sandbox call through to go-live.