Search Documentation
Search for a documentation page...
Bundles API
REST API endpoints for managing product bundles.
Bundles group existing product variants into a single purchasable package, sold at a discount versus buying each item separately. Each bundle is composed of one or more variants with a quantity and display position, plus an optional discountPercentage applied against the sum of the constituent prices.
List Bundles
Returns lightweight bundle list items (no full composition). Fetch a single bundle to get its constituent products.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | number | 50 | Bundles per page (1-100) |
offset | number | 0 | Bundles to skip |
Response (200)
Get Bundle
Returns a single bundle by UUID, including its constituent products.
Response (200)
Create Bundle
Creates a product bundle composed of existing variants. Slug is auto-generated from the name if omitted and must be unique.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Bundle name |
slug | string | No | URL slug, lowercase (a-z0-9-); auto-generated from name if omitted |
summary | string | No | Short summary |
seo | object | No | SEO metadata (title, description, canonical) |
images | string[] | No | Bundle image URLs |
discountPercentage | number | No | Discount vs. the sum of constituent prices (0-100) |
status | string | No | Publication status: draft, published, or hidden |
variants | object[] | No | Variants that make up the bundle (see below) |
Variant Object
| Field | Type | Required | Description |
|---|---|---|---|
variantId | string | Yes | Variant UUID to include in the bundle |
quantity | number | No | How many of this variant the bundle contains (default: 1) |
position | number | No | Display order within the bundle (default: 0) |
Response (201)
Returns the created bundle with full composition (same shape as Get Bundle). Returns 409 if a bundle with the same slug already exists.
Update Bundle
Partially updates a bundle. Provided fields change; omitted fields are preserved. Passing variants replaces the entire composition.
Request Body
All fields from Create Bundle are accepted and optional.
Response (200)
Returns the updated bundle with full composition.
Delete Bundle
Hard-deletes the bundle by UUID. The composition is cascade-removed; the underlying products and variants are untouched.