Retrieve a product
Returns the full detail of a single product by UUID or SKU, including pricing tiers,
vendor mappings, unit-of-measure settings, tax category, and custom-field values.
Use ?expand[]=variants, ?expand[]=vendors, or ?expand[]=listings to hydrate
nested collections inline. Requires products:read scope.
Polymorphic path parameter: pass a UUID or a SKU (e.g. WDG-PRO-XL, RISER-DOME). If a non-UUID slug is provided it is resolved to the matching product UUID within the entity scope. Returns 404 if no product matches either form. (NEW-GAP-API-V1-POLYMORPHIC-LOOKUP-CROSS-RESOURCE 2026-05-20)
Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_
Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Path Parameters
Product UUID or SKU (e.g. WDG-PRO-XL). Polymorphic lookup resolves SKU to UUID within entity scope.
Query Parameters
Related-resource hydration. Provide one or more paths to expand; nested via dot syntax (e.g. expand[]=line_items.product).
Rules:
- Max depth: 4
- Max paths per request: 10
- List endpoints REQUIRE the "data." prefix on every path (e.g. GET /v1/orders uses expand[]=data.customer, not expand[]=customer)
- Per-relation hydrated count cap: 100 rows. Exceeding rows return reference IDs only with truncated: true.
- Per-path scope assertion: each path requires the corresponding :read scope on the API key. e.g. expanding "customer" on an order requires accounts:read.
Valid expand paths per resource are documented in x-arcus-expand extensions on individual endpoint operations.
10100^[a-zA-Z_][a-zA-Z0-9_.]{0,99}$Sparse fieldset selector. Comma-separated list of top-level fields to include in the response. When omitted, the full default response is returned. The id field is always included. Example: fields=id,name,email
1000Response
Product object
Arcus ERP product (physical/kit/box/service/variant_parent).

