Request a composite render
Create an asynchronous composite from selections on one ready area set. The response is created before capture dispatch and normally starts in queued; poll the returned resource until it is succeeded or failed.
The server snapshots the set geometry and resolved catalog selections, so later edits or deletion of the area set do not change this render. Omitted style, style options, materials and animation use the selected model/product defaults. Product and material values may be public ids or registered SKUs; the request vocabulary otherwise matches the catalog DTO.
A successful composition cache hit creates a new succeeded resource that shares the immutable artifact. An idempotency replay returns the original resource instead. The cache is not invalidated by catalog content edits; catalog-aware purge is planned for ticket 12.
Publishable key (browser-safe), sent as Authorization: Bearer pk_…. This is the lower API-key tier and is sufficient for browser-safe routes that require the pk tier. Requests using a publishable key are additionally validated against the key's domain allowlist via the Origin header. Used for upload, areas, renders, polling, catalog reads, and history (history additionally requires a visitor token).
In: header
Header Parameters
A caller-generated key for one create attempt. Reusing it with the same canonical request returns the original resource; reusing it with different selections returns idempotency_key_reused.
length <= 200Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Request a render for a subset of one ready area set. Omitted selections use the selected model's published defaults; server-owned geometry, denoise and prompt values are never accepted from the caller.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X POST "https://example.com/renders" \ -H "Content-Type: application/json" \ -d '{ "areaSet": "aset_9mK3pQ7wZxN2vC5tBhLr", "areas": [ { "area": "string", "product": "string" } ] }'{ "id": "ren_2pL7vQ4mXa9cN6tBhRzK", "status": "queued", "areaSet": "aset_9mK3pQ7wZxN2vC5tBhLr", "image": "img_7bQ2mR9vXpL4dK1sZeCt", "url": "https://api.viewa.com/api/v1/renders/ren_2pL7vQ4mXa9cN6tBhRzK/file", "error": { "code": "capture_failed", "detail": "string" }, "areas": [ { "area": "area_4nH8xW2qTvB6yJ0aRmDp", "product": "prod_3xK9aQ0ZbW7mNc2LpRvT", "style": "s-wave", "styleOptions": [ { "type": "string", "value": "string" } ], "materials": [ { "optionId": "string", "material": "string" } ], "animation": [ 0 ] } ]}