Create a bundle
Creates a bundle from existing items.
Bundles cannot contain other bundles and do not create stock on their own.
https://rest.boxhero-app.com/v1/bundlesการยืนยันสิทธิ์
หัวข้อที่มีชื่อว่า “การยืนยันสิทธิ์”เฮดเดอร์การยืนยันตัวตนแบบ Bearer ในรูปแบบ Bearer <token> โดย <token> คือ โทเค็น API ของคุณ
เนื้อหาคำขอ
หัวข้อที่มีชื่อว่า “เนื้อหาคำขอ”Bundle display name.
Stock Keeping Unit. Must be unique across active bundles in the team.
Primary bundle barcode.
Public URL of the bundle photo.
Free-text memo.
Cost per bundle, as a decimal string.
Selling price per bundle, as a decimal string.
Component list. When provided on update, this replaces the full component list.
แสดงพร็อพเพอร์ตี
Component item id. Mutually exclusive with item_sku.
Component item SKU (case-insensitive). Mutually exclusive with item_id.
Quantity of this item required per bundle.
การตอบกลับ
หัวข้อที่มีชื่อว่า “การตอบกลับ”201The created bundle’s id.
Id of the newly created bundle.
400Request validation failed, such as duplicate SKU or duplicate/invalid component items.
Unique exception id (ex_ followed by 32 lowercase hex chars, no dashes — e.g. ex_8f5c0c8e0e0a4a3c9b3f4f2c4f6c8d2a). Quote this in support tickets so we can find the request in our logs.
Stable, machine-readable error code (RFC 7807-style URI fragment). Branch your error handling on this, not on title.
ค่าที่เป็นไปได้/errors/not-found/errors/invalid-request/errors/invalid-team-mode/errors/tokens/invalid/errors/tokens/required/errors/too-many-requests/errors/core/usage-limit-exceeded/errors/core/forbidden/errors/core/unhandled/errors/unhandled
Human-readable summary of the error, in English.
Request correlation id (rq_ followed by 32 lowercase hex chars, no dashes — e.g. rq_01abf3...). Identical to the X-Correlation-Id response header. Pass an X-Correlation-Id request header to thread your trace through to ours.
Pointer to the specific failing resource (e.g. /items/12345). Path-only, no /v1 version prefix.
Sub-reason code surfaced from upstream BoxHero core (on core-mapped 4xx) or from the gateway itself (e.g. not-available-for-api-token on 403). Use this for fine-grained branching after dispatching on type.
Field-level error details. Present on /errors/invalid-request (400) responses. Each entry locates a single failure via JSONPath-like path segments and a human-readable message.
แสดงพร็อพเพอร์ตี
401Missing or invalid API token.
Unique exception id (ex_ followed by 32 lowercase hex chars, no dashes — e.g. ex_8f5c0c8e0e0a4a3c9b3f4f2c4f6c8d2a). Quote this in support tickets so we can find the request in our logs.
Stable, machine-readable error code (RFC 7807-style URI fragment). Branch your error handling on this, not on title.
ค่าที่เป็นไปได้/errors/not-found/errors/invalid-request/errors/invalid-team-mode/errors/tokens/invalid/errors/tokens/required/errors/too-many-requests/errors/core/usage-limit-exceeded/errors/core/forbidden/errors/core/unhandled/errors/unhandled
Human-readable summary of the error, in English.
Request correlation id (rq_ followed by 32 lowercase hex chars, no dashes — e.g. rq_01abf3...). Identical to the X-Correlation-Id response header. Pass an X-Correlation-Id request header to thread your trace through to ours.
Pointer to the specific failing resource (e.g. /items/12345). Path-only, no /v1 version prefix.
Sub-reason code surfaced from upstream BoxHero core (on core-mapped 4xx) or from the gateway itself (e.g. not-available-for-api-token on 403). Use this for fine-grained branching after dispatching on type.
Field-level error details. Present on /errors/invalid-request (400) responses. Each entry locates a single failure via JSONPath-like path segments and a human-readable message.
แสดงพร็อพเพอร์ตี
429Rate limit exceeded. Check RateLimit, Retry-After, and X-RateLimit-* response headers before retrying.
Unique exception id (ex_ followed by 32 lowercase hex chars, no dashes — e.g. ex_8f5c0c8e0e0a4a3c9b3f4f2c4f6c8d2a). Quote this in support tickets so we can find the request in our logs.
Stable, machine-readable error code (RFC 7807-style URI fragment). Branch your error handling on this, not on title.
ค่าที่เป็นไปได้/errors/not-found/errors/invalid-request/errors/invalid-team-mode/errors/tokens/invalid/errors/tokens/required/errors/too-many-requests/errors/core/usage-limit-exceeded/errors/core/forbidden/errors/core/unhandled/errors/unhandled
Human-readable summary of the error, in English.
Request correlation id (rq_ followed by 32 lowercase hex chars, no dashes — e.g. rq_01abf3...). Identical to the X-Correlation-Id response header. Pass an X-Correlation-Id request header to thread your trace through to ours.
Pointer to the specific failing resource (e.g. /items/12345). Path-only, no /v1 version prefix.
Sub-reason code surfaced from upstream BoxHero core (on core-mapped 4xx) or from the gateway itself (e.g. not-available-for-api-token on 403). Use this for fine-grained branching after dispatching on type.
Field-level error details. Present on /errors/invalid-request (400) responses. Each entry locates a single failure via JSONPath-like path segments and a human-readable message.
แสดงพร็อพเพอร์ตี
คำขอ
curl --request POST \ --url 'https://rest.boxhero-app.com/v1/bundles' \ --header "Authorization: Bearer $BOXHERO_API_TOKEN" \ --header 'Content-Type: application/json' \ --data '{ "name": "Starter kit", "sku": "BUNDLE-STARTER", "barcode": "8801234567890", "cost": "12.50", "price": "29.99", "components": [ { "item_id": 14290445, "quantity": 1 }, { "item_id": 14290446, "quantity": 2 } ] }'const response = await fetch("https://rest.boxhero-app.com/v1/bundles", { method: "POST", headers: { Authorization: `Bearer ${process.env.BOXHERO_API_TOKEN}`, "Content-Type": "application/json", }, body: JSON.stringify({ "name": "Starter kit", "sku": "BUNDLE-STARTER", "barcode": "8801234567890", "cost": "12.50", "price": "29.99", "components": [ { "item_id": 14290445, "quantity": 1 }, { "item_id": 14290446, "quantity": 2 } ] }),});const data = await response.json();import osimport requests
response = requests.post( "https://rest.boxhero-app.com/v1/bundles", headers={ "Authorization": "Bearer " + os.environ["BOXHERO_API_TOKEN"], }, json={ "name": "Starter kit", "sku": "BUNDLE-STARTER", "barcode": "8801234567890", "cost": "12.50", "price": "29.99", "components": [ { "item_id": 14290445, "quantity": 1, }, { "item_id": 14290446, "quantity": 2, }, ], },)data = response.json()POST /v1/bundles HTTP/1.1Host: rest.boxhero-app.comAuthorization: Bearer <token>Content-Type: application/json
{ "name": "Starter kit", "sku": "BUNDLE-STARTER", "barcode": "8801234567890", "cost": "12.50", "price": "29.99", "components": [ { "item_id": 14290445, "quantity": 1 }, { "item_id": 14290446, "quantity": 2 } ]}การตอบกลับ
{ "id": 4042}{ "id": "ex_8f5c0c8e-0e0a-4a3c-9b3f-4f2c4f6c8d2a", "correlationID": "01J9X8K9XZ4ZWV9T8MQ8B7H7C2", "type": "/errors/invalid-request", "title": "Request validation failed, such as duplicate SKU or duplicate/invalid component items.", "instance": "/bundles"}{ "id": "ex_8f5c0c8e-0e0a-4a3c-9b3f-4f2c4f6c8d2a", "correlationID": "01J9X8K9XZ4ZWV9T8MQ8B7H7C2", "type": "/errors/tokens/required", "title": "Missing API token. Provide a Bearer token in the Authorization header.", "example": "Bearer wqnot0dlysdg5vymubzi4kiv"}{ "id": "ex_8f5c0c8e-0e0a-4a3c-9b3f-4f2c4f6c8d2a", "correlationID": "01J9X8K9XZ4ZWV9T8MQ8B7H7C2", "type": "/errors/too-many-requests", "title": "Too many requests.", "instance": "/bundles", "retryAfter": 60}