Download OpenAPI specification:
The Bolder API is a hypermedia-driven REST API following the HAL (Hypertext Application Language) specification.
Every response includes a _links object with related resources and actions. Links use the btc: CURIE
namespace — for example btc:products expands to https://developers.bootic.net/rels/products.
Non-GET actions (POST, PUT, DELETE) are described by links that carry a method property.
Templated links (e.g. pagination, filters) carry "templated": true and use RFC 6570 URI Templates.
Embedded sub-resources live in _embedded and follow the same HAL structure.
List endpoints return a paginated results envelope:
{
"_links": {
"self": { "href": "…?page=1" },
"next": { "href": "…?page=2" },
"last": { "href": "…?page=10" }
},
"total_items": 500,
"per_page": 50,
"page": 1,
"_embedded": { "items": [ … ] }
}
All requests require a Bearer access token obtained via OAuth 2.0.
Authorization: Bearer YOUR-ACCESS-TOKEN
See the Authentication section for the full list of supported OAuth 2.0 flows.
OAuth 2.0 access tokens are issued by https://auth.onbolder.com. The following flows are supported:
All token requests go to POST https://auth.onbolder.com/oauth/token.
| Scope | Description |
|---|---|
public |
Read-only access to publicly available data |
admin |
Full read/write access scoped to the authenticated account |
Returns the authenticated user's account information and an embedded list of their shops, each carrying HAL links to all available actions (products, orders, contacts, theme, etc.).
{- "_links": {
- "btc:all_products": {
- "templated": true,
- "title": "All products, with search and filters"
}
}, - "uid": 2,
- "email": "user@site.com",
- "user_name": "johnnie85",
- "scopes": "admin,public",
- "_embedded": {
- "shops": [
- {
- "id": 47,
- "subdomain": "acme",
- "url": "acme.bootic.net",
- "name": "Acme",
- "currency_code": "CLP"
}
]
}
}Returns a paginated list of shops accessible to the authenticated account.
| page | integer Default: 1 Page number |
| per_page | integer Default: 50 Items per page |
{- "total_items": 0,
- "page": 0,
- "per_page": 0,
- "_links": {
- "self": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "next": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "last": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}, - "_embedded": {
- "items": [
- {
- "id": "string",
- "name": "string",
- "subdomain": "string",
- "url": "string",
- "description": "string",
- "currency_code": "string",
- "locale": "string",
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "product_counts": {
- "visible": 0,
- "hidden": 0
}, - "_links": { }
}
]
}
}Returns full details for a single shop, including HAL links for all available actions (products, orders, contacts, theme, variants).
| id required | string Shop ID or subdomain |
{- "id": "string",
- "name": "string",
- "subdomain": "string",
- "url": "string",
- "description": "string",
- "currency_code": "string",
- "locale": "string",
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "product_counts": {
- "visible": 0,
- "hidden": 0
}, - "_links": { },
- "analytics_id": "string",
- "asset_count": 0,
- "_embedded": {
- "account": {
- "status": "string",
- "plan": "string",
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z"
}, - "branches": [
- {
- "id": 0,
- "name": "string",
- "type": "string",
- "allow_local_pickup": true,
- "_embedded": {
- "address": {
- "street": "string",
- "street_2": "string",
- "locality_name": "string",
- "region_name": "string",
- "country_name": "string",
- "country_code": "string",
- "postal_code": "string",
- "lat_long": "string"
}
}
}
]
}
}Returns a paginated list of products across all shops accessible to the token. Supports rich filtering, full-text search, and sorting.
| page | integer Default: 1 Page number |
| per_page | integer Default: 50 Items per page |
| q | string Full-text search query |
| status | string Default: "visible" Enum: "visible" "hidden" "all" Visibility status filter |
| shop_subdomains | string Comma-separated shop subdomains, e.g. |
| shop_ids | string Comma-separated shop IDs, e.g. |
| collections | string Comma-separated collection slugs, e.g. |
| tags | string Comma-separated tag names, e.g. |
| variants | string Comma-separated variant titles, e.g. |
| sku | string Comma-separated SKU codes |
| currency | string Currency code, e.g. |
| price_gte | integer Minimum price in cents (inclusive) |
| price_lte | integer Maximum price in cents (inclusive) |
| discount_percentage_gte | number Minimum discount percentage (inclusive) |
| discount_percentage_lte | number Maximum discount percentage (inclusive) |
| created_on_gte | string <date-time> Created on or after, e.g. |
| created_on_lte | string <date-time> Created on or before |
| updated_on_gte | string <date-time> Updated on or after |
| updated_on_lte | string <date-time> Updated on or before |
| sort | string Default: "created_on.desc" Enum: "title.asc" "title.desc" "price.asc" "price.desc" "created_on.asc" "created_on.desc" "updated_on.asc" "updated_on.desc" "discount_percentage.asc" "discount_percentage.desc" Sort column and direction |
{- "total_items": 0,
- "page": 0,
- "per_page": 0,
- "_links": {
- "self": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "next": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "last": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}, - "_embedded": {
- "items": [
- {
- "id": "string",
- "slug": "string",
- "title": "string",
- "status": "visible",
- "price": 0,
- "price_comparison": 0,
- "discount_percentage": 0,
- "currency_code": "string",
- "vendor": "string",
- "tags": [
- "string"
], - "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { },
- "_embedded": {
- "shop": {
- "id": "string",
- "name": "string",
- "subdomain": "string",
- "url": "string",
- "description": "string",
- "currency_code": "string",
- "locale": "string",
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "product_counts": {
- "visible": 0,
- "hidden": 0
}, - "_links": { }
}, - "image": {
- "file_name": "string",
- "title": "string",
- "_links": {
- "thumbnail": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "small": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "medium": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "large": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "original": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}
}, - "variants": [
- {
- "id": 0,
- "title": "string",
- "sku": "string",
- "price": 0,
- "price_comparison": 0,
- "stock": 0,
- "available_if_no_stock": true,
- "weight_in_grams": 0
}
], - "collections": [
- {
- "id": 0,
- "title": "string",
- "slug": "string",
- "shop_id": 0
}
]
}
}
]
}
}Returns full details for a single product including embedded variants, images, collections and custom attributes.
| id required | string Product ID or slug |
{- "id": "string",
- "slug": "string",
- "title": "string",
- "status": "visible",
- "price": 0,
- "price_comparison": 0,
- "discount_percentage": 0,
- "currency_code": "string",
- "vendor": "string",
- "tags": [
- "string"
], - "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { },
- "_embedded": {
- "shop": {
- "id": "string",
- "name": "string",
- "subdomain": "string",
- "url": "string",
- "description": "string",
- "currency_code": "string",
- "locale": "string",
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "product_counts": {
- "visible": 0,
- "hidden": 0
}, - "_links": { }
}, - "image": {
- "file_name": "string",
- "title": "string",
- "_links": {
- "thumbnail": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "small": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "medium": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "large": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "original": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}
}, - "variants": [
- {
- "id": 0,
- "title": "string",
- "sku": "string",
- "price": 0,
- "price_comparison": 0,
- "stock": 0,
- "available_if_no_stock": true,
- "weight_in_grams": 0,
- "_links": { }
}
], - "collections": [
- {
- "id": 0,
- "title": "string",
- "slug": "string",
- "shop_id": 0
}
], - "images": [
- {
- "file_name": "string",
- "title": "string",
- "_links": {
- "thumbnail": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "small": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "medium": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "large": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "original": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}
}
], - "custom_attributes": [
- {
- "id": 0,
- "name": "string",
- "value": "string",
- "field_type": "string",
- "required": true,
- "key": "string"
}
]
}, - "description": "string"
}Creates a new product in the given shop. Requires admin scope.
| shop_id required | string Shop ID or subdomain |
| title | string Product title. Required on create. |
| price | integer Price in cents |
| price_comparison | integer "Was" price in cents |
| description | string |
| status | string Default: "hidden" Enum: "visible" "hidden" |
| product_type_name | string Name for new or existing product type |
| vendor | string |
| tags | Array of strings |
Array of objects | |
Array of objects (VariantInput) | |
Array of objects (CustomAttributeInput) |
{- "title": "iPhone 5",
- "price": 20020,
- "price_comparison": 20122,
- "description": "iPhone 5 by Apple",
- "status": "visible",
- "product_type_name": "Smart phones",
- "tags": [
- "communications",
- "handheld"
], - "vendor": "Acme",
- "variants": [
- {
- "title": "White",
- "sku": "1234R",
- "available_if_no_stock": 1,
- "stock": 102,
- "weight_in_grams": 340
}
], - "collections": [
- {
- "id": 1234
}, - {
- "title": "A new collection"
}
]
}{- "id": "string",
- "slug": "string",
- "title": "string",
- "status": "visible",
- "price": 0,
- "price_comparison": 0,
- "discount_percentage": 0,
- "currency_code": "string",
- "vendor": "string",
- "tags": [
- "string"
], - "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { },
- "_embedded": {
- "shop": {
- "id": "string",
- "name": "string",
- "subdomain": "string",
- "url": "string",
- "description": "string",
- "currency_code": "string",
- "locale": "string",
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "product_counts": {
- "visible": 0,
- "hidden": 0
}, - "_links": { }
}, - "image": {
- "file_name": "string",
- "title": "string",
- "_links": {
- "thumbnail": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "small": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "medium": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "large": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "original": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}
}, - "variants": [
- {
- "id": 0,
- "title": "string",
- "sku": "string",
- "price": 0,
- "price_comparison": 0,
- "stock": 0,
- "available_if_no_stock": true,
- "weight_in_grams": 0,
- "_links": { }
}
], - "collections": [
- {
- "id": 0,
- "title": "string",
- "slug": "string",
- "shop_id": 0
}
], - "images": [
- {
- "file_name": "string",
- "title": "string",
- "_links": {
- "thumbnail": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "small": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "medium": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "large": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "original": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}
}
], - "custom_attributes": [
- {
- "id": 0,
- "name": "string",
- "value": "string",
- "field_type": "string",
- "required": true,
- "key": "string"
}
]
}, - "description": "string"
}Updates an existing product. All fields are optional — only supplied fields are updated.
Requires admin scope.
| shop_id required | string Shop ID or subdomain |
| id required | string Product ID or slug |
| title | string Product title. Required on create. |
| price | integer Price in cents |
| price_comparison | integer "Was" price in cents |
| description | string |
| status | string Default: "hidden" Enum: "visible" "hidden" |
| product_type_name | string Name for new or existing product type |
| vendor | string |
| tags | Array of strings |
Array of objects | |
Array of objects (VariantInput) | |
Array of objects (CustomAttributeInput) |
{- "title": "string",
- "price": 0,
- "price_comparison": 0,
- "description": "string",
- "status": "visible",
- "product_type_name": "string",
- "vendor": "string",
- "tags": [
- "string"
], - "collections": [
- {
- "id": 0,
- "title": "string"
}
], - "variants": [
- {
- "title": "string",
- "sku": "string",
- "stock": 1,
- "available_if_no_stock": 0,
- "weight_in_grams": 0,
- "price": 0,
- "price_comparison": 0
}
], - "custom_attributes": [
- {
- "name": "string",
- "value": "string",
- "field_type": "string",
- "required": false
}
]
}{- "id": "string",
- "slug": "string",
- "title": "string",
- "status": "visible",
- "price": 0,
- "price_comparison": 0,
- "discount_percentage": 0,
- "currency_code": "string",
- "vendor": "string",
- "tags": [
- "string"
], - "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { },
- "_embedded": {
- "shop": {
- "id": "string",
- "name": "string",
- "subdomain": "string",
- "url": "string",
- "description": "string",
- "currency_code": "string",
- "locale": "string",
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "product_counts": {
- "visible": 0,
- "hidden": 0
}, - "_links": { }
}, - "image": {
- "file_name": "string",
- "title": "string",
- "_links": {
- "thumbnail": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "small": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "medium": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "large": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "original": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}
}, - "variants": [
- {
- "id": 0,
- "title": "string",
- "sku": "string",
- "price": 0,
- "price_comparison": 0,
- "stock": 0,
- "available_if_no_stock": true,
- "weight_in_grams": 0,
- "_links": { }
}
], - "collections": [
- {
- "id": 0,
- "title": "string",
- "slug": "string",
- "shop_id": 0
}
], - "images": [
- {
- "file_name": "string",
- "title": "string",
- "_links": {
- "thumbnail": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "small": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "medium": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "large": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "original": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}
}
], - "custom_attributes": [
- {
- "id": 0,
- "name": "string",
- "value": "string",
- "field_type": "string",
- "required": true,
- "key": "string"
}
]
}, - "description": "string"
}Returns details for a single product variant.
| shop_id required | string Shop ID or subdomain |
| id required | integer Variant ID |
{- "id": 0,
- "title": "string",
- "sku": "string",
- "price": 0,
- "price_comparison": 0,
- "stock": 0,
- "available_if_no_stock": true,
- "weight_in_grams": 0,
- "_links": { }
}Updates an existing variant. You can also look up the variant by sku instead of id
by passing ?sku=YOUR_SKU as a query parameter. Requires admin scope.
| shop_id required | string Shop ID or subdomain |
| id required | string Variant ID (or any value when using |
| sku | string Look up variant by SKU instead of ID |
| title | string Required on create |
| sku | string Must be unique within the shop |
| stock | integer Default: 1 |
| available_if_no_stock | integer Default: 1 Enum: 0 1
|
| weight_in_grams | integer |
| price | integer Override product price for this variant (cents) |
| price_comparison | integer Override comparison price for this variant (cents) |
{- "title": "string",
- "sku": "string",
- "stock": 1,
- "available_if_no_stock": 0,
- "weight_in_grams": 0,
- "price": 0,
- "price_comparison": 0
}{- "id": 0,
- "title": "string",
- "sku": "string",
- "price": 0,
- "price_comparison": 0,
- "stock": 0,
- "available_if_no_stock": true,
- "weight_in_grams": 0,
- "_links": { }
}Adds a new variant to an existing product. Requires admin scope.
| product_id required | string Product ID or slug |
| title | string Required on create |
| sku | string Must be unique within the shop |
| stock | integer Default: 1 |
| available_if_no_stock | integer Default: 1 Enum: 0 1
|
| weight_in_grams | integer |
| price | integer Override product price for this variant (cents) |
| price_comparison | integer Override comparison price for this variant (cents) |
{- "title": "Large",
- "sku": "SKU-LG",
- "stock": 10,
- "available_if_no_stock": 0,
- "weight_in_grams": 200
}{- "id": 0,
- "title": "string",
- "sku": "string",
- "price": 0,
- "price_comparison": 0,
- "stock": 0,
- "available_if_no_stock": true,
- "weight_in_grams": 0,
- "_links": { }
}Uploads a new image to a product. The image data must be Base64-encoded and sent in the
data field along with the file name and MIME type. Requires admin scope.
| product_id required | string Product ID or slug |
| data required | string Base64-encoded image data URI ( |
| file_name required | string |
| title | string |
| description | string |
{- "data": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
- "file_name": "photo.jpg",
- "title": "Front view"
}{- "file_name": "string",
- "title": "string",
- "description": "string",
- "_links": {
- "thumbnail": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "small": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "medium": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "large": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "original": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "btc:delete_product_asset": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}
}Returns a paginated list of orders for a shop. Requires admin scope.
Supports filtering by status, date ranges, amounts, and geo-location.
| shop_id required | string Shop ID or subdomain |
| page | integer Default: 1 Page number |
| per_page | integer Default: 50 Items per page |
| q | string Full-text search |
| status | string Comma-separated order statuses. Use |
| code | string Order code, e.g. |
| product_id | integer Filter by product ID |
| payment_method | string Payment method slug, e.g. |
| created_on_gte | string <date> Created on or after |
| created_on_lte | string <date> Created on or before |
| updated_on_gte | string <date> |
| updated_on_lte | string <date> |
| pending_on_gte | string <date> |
| pending_on_lte | string <date> |
| closed_on_gte | string <date> |
| closed_on_lte | string <date> |
| shipped_on_gte | string <date> |
| shipped_on_lte | string <date> |
| net_total_gte | integer Net total in cents, minimum |
| net_total_lte | integer Net total in cents, maximum |
| total_gte | integer |
| total_lte | integer |
| shipping_total_gte | integer |
| shipping_total_lte | integer |
| discount_total_gte | integer |
| discount_total_lte | integer |
| lat_long | string Latitude,longitude pair for geo-filtering, e.g. |
| distance | string Default: "5km" Radius from |
| sort | string Default: "created_on.desc" Enum: "created_on.asc" "created_on.desc" "updated_on.asc" "updated_on.desc" "pending_on.asc" "pending_on.desc" "closed_on.asc" "closed_on.desc" "shipped_on.asc" "shipped_on.desc" |
{- "total_items": 0,
- "page": 0,
- "per_page": 0,
- "_links": {
- "self": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "next": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "last": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}, - "_embedded": {
- "items": [
- {
- "id": 0,
- "shop_id": 0,
- "code": "string",
- "status": "checkout",
- "net_total": 0,
- "total": 0,
- "shipping_total": 0,
- "shipping_description": "string",
- "discount_total": 0,
- "tracking_code": "string",
- "courier_name": "string",
- "total_weight_in_grams": 0,
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "pending_on": "2019-08-24T14:15:22Z",
- "closed_on": "2019-08-24T14:15:22Z",
- "shipped_on": "2019-08-24T14:15:22Z",
- "fulfillment": {
- "fulfillment_method": "shipping"
}, - "payment_info": {
- "type": "string",
- "name": "string",
- "auth_code": "string",
- "transaction_id": "string"
}, - "_links": { }
}
]
}
}Creates a new order in checkout state with the given line items, contact and shipping address.
Returns the new order including web checkout and cart links. Requires admin scope.
| shop_id required | string Shop ID or subdomain |
Array of objects (LineItemInput) | |
object (ContactInput) | |
object (AddressInput) |
{- "line_items": [
- {
- "variant_id": 1234,
- "units": 2
}
], - "contact": {
- "email": "joe@bloggs.com",
- "name": "Joe Bloggs",
- "phone_number": "12322222222"
}, - "address": {
- "street": "Av. Brasil 20",
- "street_2": "4to piso",
- "locality_name": "Valparaiso",
- "region_name": "Valparaiso",
- "country_code": "CL"
}
}{- "id": 0,
- "shop_id": 0,
- "code": "string",
- "status": "checkout",
- "net_total": 0,
- "total": 0,
- "shipping_total": 0,
- "shipping_description": "string",
- "discount_total": 0,
- "tracking_code": "string",
- "courier_name": "string",
- "total_weight_in_grams": 0,
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "pending_on": "2019-08-24T14:15:22Z",
- "closed_on": "2019-08-24T14:15:22Z",
- "shipped_on": "2019-08-24T14:15:22Z",
- "fulfillment": {
- "fulfillment_method": "shipping"
}, - "payment_info": {
- "type": "string",
- "name": "string",
- "auth_code": "string",
- "transaction_id": "string"
}, - "_links": { },
- "_embedded": {
- "contact": {
- "id": 0,
- "name": "string",
- "email": "string",
- "phone_number": "string"
}, - "address": {
- "street": "string",
- "street_2": "string",
- "locality_name": "string",
- "region_name": "string",
- "country_name": "string",
- "country_code": "string",
- "postal_code": "string",
- "lat_long": "string"
}, - "line_items": [
- {
- "product_id": 0,
- "product_title": "string",
- "unit_price": 0,
- "units": 0,
- "discount_total": 0,
- "net_total": 0,
- "total": 0,
- "variant_id": 0,
- "variant_title": "string",
- "variant_sku": "string",
- "weight_in_grams": 0
}
], - "promotion": {
- "name": "string",
- "discount": 0,
- "discount_type": "$",
- "free_shipping": true
}, - "discounts": [
- { }
]
}
}Returns full details for a single order. Requires admin scope.
| shop_id required | string Shop ID or subdomain |
| code required | string Order code (e.g. |
{- "id": 0,
- "shop_id": 0,
- "code": "string",
- "status": "checkout",
- "net_total": 0,
- "total": 0,
- "shipping_total": 0,
- "shipping_description": "string",
- "discount_total": 0,
- "tracking_code": "string",
- "courier_name": "string",
- "total_weight_in_grams": 0,
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "pending_on": "2019-08-24T14:15:22Z",
- "closed_on": "2019-08-24T14:15:22Z",
- "shipped_on": "2019-08-24T14:15:22Z",
- "fulfillment": {
- "fulfillment_method": "shipping"
}, - "payment_info": {
- "type": "string",
- "name": "string",
- "auth_code": "string",
- "transaction_id": "string"
}, - "_links": { },
- "_embedded": {
- "contact": {
- "id": 0,
- "name": "string",
- "email": "string",
- "phone_number": "string"
}, - "address": {
- "street": "string",
- "street_2": "string",
- "locality_name": "string",
- "region_name": "string",
- "country_name": "string",
- "country_code": "string",
- "postal_code": "string",
- "lat_long": "string"
}, - "line_items": [
- {
- "product_id": 0,
- "product_title": "string",
- "unit_price": 0,
- "units": 0,
- "discount_total": 0,
- "net_total": 0,
- "total": 0,
- "variant_id": 0,
- "variant_title": "string",
- "variant_sku": "string",
- "weight_in_grams": 0
}
], - "promotion": {
- "name": "string",
- "discount": 0,
- "discount_type": "$",
- "free_shipping": true
}, - "discounts": [
- { }
]
}
}Updates an order that is in checkout state. Use this to set or modify line items,
contact information, and shipping address. Requires admin scope.
The returned order includes btc:web_checkout and btc:web_cart links for directing
customers to complete payment.
Line item tips:
units: -1 to remove a line itememail; new contacts require name and phone_number too| shop_id required | string Shop ID or subdomain |
| code required | string Order code or ID |
Array of objects (LineItemInput) Pass | |
object (ContactInput) | |
object |
{- "line_items": [
- {
- "variant_id": 0,
- "units": 0
}
], - "contact": {
- "email": "string",
- "name": "string",
- "phone_number": "string",
- "company": "string"
}, - "address": {
- "id": 0
}
}{- "id": 0,
- "shop_id": 0,
- "code": "string",
- "status": "checkout",
- "net_total": 0,
- "total": 0,
- "shipping_total": 0,
- "shipping_description": "string",
- "discount_total": 0,
- "tracking_code": "string",
- "courier_name": "string",
- "total_weight_in_grams": 0,
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "pending_on": "2019-08-24T14:15:22Z",
- "closed_on": "2019-08-24T14:15:22Z",
- "shipped_on": "2019-08-24T14:15:22Z",
- "fulfillment": {
- "fulfillment_method": "shipping"
}, - "payment_info": {
- "type": "string",
- "name": "string",
- "auth_code": "string",
- "transaction_id": "string"
}, - "_links": { },
- "_embedded": {
- "contact": {
- "id": 0,
- "name": "string",
- "email": "string",
- "phone_number": "string"
}, - "address": {
- "street": "string",
- "street_2": "string",
- "locality_name": "string",
- "region_name": "string",
- "country_name": "string",
- "country_code": "string",
- "postal_code": "string",
- "lat_long": "string"
}, - "line_items": [
- {
- "product_id": 0,
- "product_title": "string",
- "unit_price": 0,
- "units": 0,
- "discount_total": 0,
- "net_total": 0,
- "total": 0,
- "variant_id": 0,
- "variant_title": "string",
- "variant_sku": "string",
- "weight_in_grams": 0
}
], - "promotion": {
- "name": "string",
- "discount": 0,
- "discount_type": "$",
- "free_shipping": true
}, - "discounts": [
- { }
]
}
}Updates one or more order attributes across multiple orders at once. Currently supports
updating status. The operation is not transactional — orders that fail validation are
reported in invalid_items while successfully updated ones appear in valid_items.
Requires admin scope.
| shop_id required | string Shop ID or subdomain |
| ids required | Array of integers Array of order IDs to update |
required | object Attributes to apply to all orders |
{- "ids": [
- 577048,
- 12001
], - "additions": {
- "status": "shipped"
}
}{- "ids": [
- 0
], - "additions": { },
- "removals": { },
- "_embedded": {
- "valid_items": [
- {
- "id": 0,
- "shop_id": 0,
- "code": "string",
- "status": "checkout",
- "net_total": 0,
- "total": 0,
- "shipping_total": 0,
- "shipping_description": "string",
- "discount_total": 0,
- "tracking_code": "string",
- "courier_name": "string",
- "total_weight_in_grams": 0,
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "pending_on": "2019-08-24T14:15:22Z",
- "closed_on": "2019-08-24T14:15:22Z",
- "shipped_on": "2019-08-24T14:15:22Z",
- "fulfillment": {
- "fulfillment_method": "shipping"
}, - "payment_info": {
- "type": "string",
- "name": "string",
- "auth_code": "string",
- "transaction_id": "string"
}, - "_links": { }
}
], - "invalid_items": [
- { }
]
}
}Returns a paginated list of contacts (customers) for a shop. Requires admin scope.
| shop_id required | string Shop ID or subdomain |
| page | integer Default: 1 Page number |
| per_page | integer Default: 50 Items per page |
| q | string Full-text search (name, email) |
| created_on_gte | string <date> |
| created_on_lte | string <date> |
| updated_on_gte | string <date> |
| updated_on_lte | string <date> |
| sort | string |
{- "total_items": 0,
- "page": 0,
- "per_page": 0,
- "_links": {
- "self": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "next": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "last": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}, - "_embedded": {
- "items": [
- {
- "id": 0,
- "name": "string",
- "email": "string",
- "phone_number": "string",
- "company": "string",
- "opt_in": true,
- "available_orders_count": 0,
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z"
}
]
}
}Returns a paginated list of webhook subscriptions for a shop.
| shop_id required | integer |
| page | integer Default: 1 Page number |
| per_page | integer Default: 50 Items per page |
| status | string Enum: "pending" "active" "failed_activation" "failed" "disabled" |
{- "total_items": 0,
- "page": 0,
- "per_page": 0,
- "_links": {
- "self": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "next": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}, - "last": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}, - "_embedded": {
- "items": [
- {
- "id": 0,
- "status": "pending",
- "topic": "string",
- "url": "string",
- "notify_origin": true,
- "auth": {
- "type": "none",
- "username": "string",
- "password": "string"
}, - "error_count": 0,
- "last_error": "string",
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { }
}
]
}
}Creates a new webhook subscription. After creation the API sends a verification POST to
your url containing a X-Hook-Ping header. Your endpoint must respond with a matching
X-Hook-Pong header to activate the subscription.
| Status | Description |
|---|---|
pending |
Created, awaiting verification |
active |
Verified and receiving events |
failed_activation |
Verification was rejected |
failed |
Disabled after 3 consecutive delivery failures |
disabled |
Manually disabled or target returned 410 |
Orders: orders, orders.created, orders.created.checkout, orders.updated,
orders.updated.placed, orders.updated.closed, orders.updated.shipped,
orders.updated.cancelled, orders.deleted
Products: products, products.created, products.updated, products.deleted,
products.updated.variants.created, products.updated.variants.updated,
products.updated.variants.deleted, products.updated.assets.created,
products.updated.assets.deleted
| shop_id required | integer |
| topic required | string Event topic to subscribe to, e.g. |
| url required | string URL to POST event notifications to |
| notify_origin | boolean Default: true Whether to notify the originating app |
object (SubscriptionAuth) |
{- "topic": "orders.updated.placed",
- "notify_origin": true,
- "auth": {
- "type": "basic",
- "username": "foo",
- "password": "bar"
}
}{- "id": 0,
- "status": "pending",
- "topic": "string",
- "url": "string",
- "notify_origin": true,
- "auth": {
- "type": "none",
- "username": "string",
- "password": "string"
}, - "error_count": 0,
- "last_error": "string",
- "created_on": "2019-08-24T14:15:22Z",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { }
}Returns the active theme for a shop, including all templates and static assets.
Requires admin scope.
| shop_id required | string Shop ID or subdomain |
{- "id": "string",
- "title": "string",
- "production": true,
- "settings": { },
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { },
- "_embedded": {
- "templates": [
- {
- "id": "string",
- "file_name": "string",
- "name": "string",
- "content_type": "html",
- "body": "string",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { }
}
], - "assets": [
- {
- "id": "string",
- "file_name": "string",
- "content_type": "string",
- "file_size": 0,
- "digest": "string",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": {
- "file": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}
}
]
}
}Updates the settings object for a theme. Requires admin scope.
| id required | string Theme ID |
object Theme settings key/value pairs (theme-specific) |
{- "settings": { }
}{- "id": "string",
- "title": "string",
- "production": true,
- "settings": { },
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { },
- "_embedded": {
- "templates": [
- {
- "id": "string",
- "file_name": "string",
- "name": "string",
- "content_type": "html",
- "body": "string",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { }
}
], - "assets": [
- {
- "id": "string",
- "file_name": "string",
- "content_type": "string",
- "file_size": 0,
- "digest": "string",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": {
- "file": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}
}
]
}
}Adds a new HTML, CSS or JavaScript template to a theme. The file_name extension
determines the content type (html, css, js). Requires admin scope.
| theme_id required | string |
| file_name required | string File name including extension, e.g. |
| body required | string Template content |
{- "file_name": "about.html",
- "body": "<h1>About Us</h1>"
}{- "id": "string",
- "file_name": "string",
- "name": "string",
- "content_type": "html",
- "body": "string",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { }
}Updates the body of an existing theme template. Requires admin scope.
| theme_id required | string |
| id required | string Template ID |
| file_name required | string File name including extension, e.g. |
| body required | string Template content |
{- "file_name": "string",
- "body": "string"
}{- "id": "string",
- "file_name": "string",
- "name": "string",
- "content_type": "html",
- "body": "string",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": { }
}Uploads a new static asset (image, font, etc.) to a theme. The file data must be
Base64-encoded. Requires admin scope.
| theme_id required | string |
| file_name required | string |
| data required | string Base64-encoded file data URI |
{- "file_name": "logo.png",
- "data": "data:image/png;base64,iVBORw0KGgoAAAANS..."
}{- "id": "string",
- "file_name": "string",
- "content_type": "string",
- "file_size": 0,
- "digest": "string",
- "updated_on": "2019-08-24T14:15:22Z",
- "_links": {
- "file": {
- "href": "string",
- "method": "string",
- "title": "string",
- "type": "string",
- "templated": true
}
}
}