Get a Bundle
Retrieve a bundle and, when you ask for them, its products, its price per currency and whether it can be sold right now.
Endpoint
GET /api/v3/bundles/{bundle}
Path Parameters
| Parameter | Type | Description |
|---|---|---|
bundle | string | The bundle's id, or its external_id when id_type=external is set |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
id_type | string | internal | internal (bundle id) or external (external_id) |
include | string | - | Comma-separated: products, prices, availability. See Included blocks |
fields | string | - | Comma-separated list of fields to return, e.g. id,name. Applied after include |
Response
200 OK with the bundle object under data. Without include, it carries the fields from id to updated_at. The blocks you include are computed at the moment of the request, from the products as they are then.
This bundle, read with ?include=products,prices,availability, cannot be sold: one of its products was withdrawn from sale and another one is no longer among the products your store can sell. Each product says why, availability.reasons sums it up for the bundle, and prices is empty:
{
"data": {
"id": "318",
"external_id": "rock-icons",
"name": "Rock Icons",
"slug": "rock-icons",
"description": "The classics, together",
"cover_url": null,
"private": false,
"published": true,
"published_at": "2026-10-06T14:05:00.000000Z",
"product_url": "https://yourstore.publica.la/library/bundle/rock-icons/318?signature=9f2c4e7a…",
"buy_button_url": "https://yourstore.publica.la/library/bundle/rock-icons/318?signature=9f2c4e7a…&automatically_open_checkout=1",
"created_at": "2026-10-06T14:00:00.000000Z",
"updated_at": "2026-10-06T14:05:00.000000Z",
"products": [
{
"id": "1201",
"position": 0,
"name": "Rock Icons, Volume 1",
"available": true,
"rejection_reason": null
},
{
"id": "1202",
"position": 1,
"name": "Rock Icons, Volume 2",
"available": false,
"rejection_reason": "not_on_sale"
},
{
"id": "1205",
"position": 2,
"name": null,
"available": false,
"rejection_reason": "unresolved"
}
],
"prices": [],
"availability": {
"available": false,
"reasons": ["unresolved_products", "ineligible_products"]
}
}
}
The codes are listed under Rejection reasons and Availability.
Examples
By ID
curl -X GET "https://yourstore.publica.la/api/v3/bundles/318" \
-H "X-User-Token: your-api-token" \
-H "Accept: application/json"
By external_id
curl -X GET "https://yourstore.publica.la/api/v3/bundles/rock-icons?id_type=external" \
-H "X-User-Token: your-api-token" \
-H "Accept: application/json"
With Its Products, Prices and Availability
curl -X GET "https://yourstore.publica.la/api/v3/bundles/318?include=products,prices,availability" \
-H "X-User-Token: your-api-token" \
-H "Accept: application/json"
Only Some Fields
curl -X GET "https://yourstore.publica.la/api/v3/bundles/318?fields=id,name" \
-H "X-User-Token: your-api-token" \
-H "Accept: application/json"
{
"data": {
"id": "318",
"name": "Rock Icons"
}
}
A Block and Some Fields
fields applies after include, so it can keep one of the blocks you included and leave out the rest. For an available bundle:
curl -X GET "https://yourstore.publica.la/api/v3/bundles/319?include=prices,availability&fields=id,prices" \
-H "X-User-Token: your-api-token" \
-H "Accept: application/json"
{
"data": {
"id": "319",
"prices": [{ "currency_id": "USD", "amount": 15 }]
}
}
Without include=prices, the same fields=id,prices returns only id.
Errors
| Status | Condition |
|---|---|
401 | Missing or invalid X-User-Token |
403 | Selling is disabled for the store (Selling is disabled for this store.), or the token does not belong to an administrator. A token without access gets 403 even for a bundle that does not exist |
404 | The bundle does not exist in your store. The body is {"message": "Not found"}, also for a bundle of another store |
422 | id_type other than internal or external, an include other than products, prices or availability, or include sent as an array |
See Also
- Bundles API Overview: the bundle object and its codes
- List Bundles: page through your bundles
- Update a Bundle: change a bundle and publish it