Manage products — lightweight anchor entities for the things you sell. Products can be linked to deals.
| Method | Path | Description |
|---|---|---|
| POST | /products | Create a product |
| GET | /products | List products |
| GET | /products/:id | Get a product |
| PATCH | /products/:id | Update a product |
| DELETE | /products/:id | Delete a product |
POST /products
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Product name |
slug | string | yes | URL-safe identifier (unique per org) |
description | string | no | Product description |
price | integer | no | Price in cents |
currency | string | no | ISO 4217 currency code (e.g. USD) |
is_active | boolean | no | Whether the product is active (default true) |
metadata | object | no | Arbitrary key-value data |
curl -X POST "$REX_URL/products" \
-H "X-Api-Key: $REX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Enterprise Plan",
"slug": "enterprise-plan",
"description": "Full-featured plan for large teams",
"price": 99900,
"currency": "USD"
}'
{
"data": {
"id": "prod_01HQ...",
"name": "Enterprise Plan",
"slug": "enterprise-plan",
"description": "Full-featured plan for large teams",
"price": 99900,
"currency": "USD",
"is_active": true,
"created_at": "2026-03-16T12:00:00Z",
"updated_at": "2026-03-16T12:00:00Z"
}
}
GET /products
| Parameter | Type | Description |
|---|---|---|
cursor | string | Pagination cursor |
limit | integer | Results per page (default 50, max 200) |
is_active | boolean | Filter by active status |
curl "$REX_URL/products?is_active=true" \
-H "X-Api-Key: $REX_API_KEY"
{
"data": [
{
"id": "prod_01HQ...",
"name": "Enterprise Plan",
"slug": "enterprise-plan",
"price": 99900,
"currency": "USD",
"is_active": true,
"created_at": "2026-03-16T12:00:00Z",
"updated_at": "2026-03-16T12:00:00Z"
}
],
"has_more": false
}
GET /products/:id
curl "$REX_URL/products/prod_01HQ..." \
-H "X-Api-Key: $REX_API_KEY"
Same shape as the create response.
PATCH /products/:id
All fields from the create request body are accepted. Only provided fields are updated.
curl -X PATCH "$REX_URL/products/prod_01HQ..." \
-H "X-Api-Key: $REX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"price": 119900
}'
Returns the full updated product.
DELETE /products/:id
curl -X DELETE "$REX_URL/products/prod_01HQ..." \
-H "X-Api-Key: $REX_API_KEY"
204 No Content on success.