Build or rebuild the product kit
Builds or rebuilds the product kit: cutouts from the raw photos, the generated angle set (`full: true` = 8, or an explicit `angles` list), the fidelity check and the structured facts. Asynchronous — returns a queued job whose result publishes onto the product. Requires an Idempotency-Key. The first 5 kits per workspace are included; the reservation is still made and refunded on settlement. An empty body asks for the free reference sheet and answers 202 `{ status: queued, kind: reference_sheet }`. Quote first: send `quote_only: true` to get a `quote_id` and the credits (200, no charge, valid for 10 minutes), then send the same body with that `quote_id` and the same Idempotency-Key. The confirm charges exactly the quoted credits. A confirm whose input, price or kit version differs from the quote is refused, and a retried confirm returns the first answer and is never charged twice. With `quote_only` or `quote_id` and neither `full` nor `angles`, the call builds the 4 core angles. A body with no quote field still builds in one step.
Builds or rebuilds the product kit: cutouts from the raw photos, the generated angle set (full: true = 8, or an explicit angles list), the fidelity check and the structured facts. Asynchronous — returns a queued job whose result publishes onto the product. Requires an Idempotency-Key. The first 5 kits per workspace are included; the reservation is still made and refunded on settlement. An empty body asks for the free reference sheet and answers 202 { status: queued, kind: reference_sheet }. Quote first: send quote_only: true to get a quote_id and the credits (200, no charge, valid for 10 minutes), then send the same body with that quote_id and the same Idempotency-Key. The confirm charges exactly the quoted credits. A confirm whose input, price or kit version differs from the quote is refused, and a retried confirm returns the first answer and is never charged twice. With quote_only or quote_id and neither full nor angles, the call builds the 4 core angles. A body with no quote field still builds in one step.
Authorization
bearerAuth API key authentication. Use your API key as the bearer token: Authorization: Bearer roasos_sk_...
In: header
Path Parameters
uuidHeader Parameters
A unique string that makes retries safe. Any value 16-255 characters; reuse it only when retrying the exact same request.
^[A-Za-z0-9._:-]+$16 <= length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/products/497f6eca-6276-4993-bfeb-53cbbbba6f08/kit" \ -H "Idempotency-Key: stringstringstri" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "kind": "quote", "quote_id": "3c071a1d-db86-46a7-9dc8-72ba3fbca992", "reserved_credits": 1, "expires_at": "2019-08-24T14:15:22Z", "pricing_version": "string", "authorization": { "status": "auto_approved" }, "confirmation": { "generation_type": "product_kit", "product_id": "0d012afa-f885-4e65-aeca-37e27701e2d1", "kit_version": 1, "angles": [ "front" ], "included": true } }}Delete a product
Previous Page
Create an upload
Direct mode returns a one-use write target: POST the exact bytes to put_url with put_headers, then poll GET /v1/uploads/{id} until status is ready. Import mode gives a public https source_url instead; the worker fetches, checks, and stores the object and returns it ready.