Overview
By default, the Arcus API returns only references (UUIDs) for related resources. Use?expand[]=<field> to hydrate those references inline in a single request, eliminating N+1 API calls.
This is identical to Stripe’s expand behavior.
Basic usage
Response comparison
Where expand applies
expand[] is a read option, and at this release GET /v1/products and GET /v1/products/{id} are the endpoints where it runs: they apply expand[], require the data. prefix on the list, and check the 403 insufficient_scope scope for each path. The order endpoints do not act on expand[] and check no expand scope: GET /v1/orders never reads it, and GET /v1/orders/{id} always returns the line items, payments, tax lines and packages inline. PATCH and DELETE take no expand[] either.
GET /v1/orders/{id} takes either the order’s UUID or its human-readable order number (for example SO-001234) as {id}. By default GET /v1/orders lists only quotes, sales orders, and invoices; pass document_type to include other order documents.
Multiple expansions
Pass several paths in oneexpand parameter, separated by commas, to hydrate multiple fields. Put the list in expand, not in expand[]: a comma inside an expand[] value returns 400 Bad Request with code: invalid_expand_param.
Nested expansion
Dot notation can nest expand paths up to 4 levels deep, but no nested path on the products endpoints returns related records at this release, so there is no nested example here; request each field as its own path.List endpoints: the data. prefix
On list endpoints, all expand paths require the data. prefix:
data. prefix on a list endpoint returns 400 Bad Request with code: invalid_expand_list_requires_data_prefix.
Limits
Scope requirements
Each expand path requires the corresponding read scope on your API key, in addition to the endpoint’s own read scope. A missing scope returns403 Forbidden with code: insufficient_scope and a required field naming the scope. This check runs on the endpoints named under Where expand applies; the order endpoints check no expand scope because they do not act on expand[].
SDK usage
Available expand paths per resource
Valid expand paths are documented on each endpoint’s reference page under the Expandable fields section. Requesting an invalid path returns400 Bad Request with code: invalid_expand_unknown_field and a list of valid paths.
