Documentation Index
Fetch the complete documentation index at: https://docs.arcuserp.com/llms.txt
Use this file to discover all available pages before exploring further.
The atomic-create principle
The Arcus Products API accepts the complete nested resource graph in a single POST. You express what you want; the API creates every child in one atomic transaction. If any child fails, the entire request rolls back — no orphan products, no partial state.product_type discriminator
Every product has aproduct_type that controls which children are valid:
| product_type | What it is | Inline children accepted |
|---|---|---|
physical | Standalone stockable item | pricing[], vendors[] |
service | Non-stockable service line | pricing[], vendors[] |
kit | Bill-of-materials assembly | components[], pricing[], vendors[] |
box | Packaging unit (also a kit) | components[], pricing[], vendors[] |
variant_parent | Parent with multiple variants | variants[], each variant may include components[], pricing[], vendors[] |
Full example: variant parent with kit variants
A “Riser Kit” with two kit variants — Dome and Flat — each with their own component assemblies, three qty-break pricing tiers, and a vendor assignment. One POST call.Qty-break pricing with pricing_level_id
Each pricing[] element defines one row in a tiered price book:
| Field | Required | Description |
|---|---|---|
pricing_level_id | Yes (or account_id) | The pricing level this tier applies to. Use GET /v1/pricing-levels to list available levels. |
account_id | Yes (or pricing_level_id) | Account-specific override price instead of a level-based price. |
min_quantity | No | The minimum order quantity that activates this tier. Defaults to 1. Each tier must have a unique min_quantity within the same pricing_level_id scope. |
list_price | No | The sell price at this tier. |
sell_price | No | Explicit sell price (overrides list_price if both provided). |
list_price, sell_price, adjustment) are returned as JavaScript numbers (float), not strings.
Idempotency
IncludeIdempotency-Key: <your-unique-key> on every create call. Replaying the same key within 24 hours returns the original response without re-creating resources.
Standalone kit (no variants)
Error handling
Validation errors return the exactparam path so you know which field in which child failed:
Adding pricing tiers to an existing product
UsePOST /v1/products/{id}/pricing to add tiers incrementally after creation:

