roasOS
API referenceProducts

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.

POST
/v1/products/{id}/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.

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication. Use your API key as the bearer token: Authorization: Bearer roasos_sk_...

In: header

Path Parameters

id*string
Formatuuid

Header Parameters

Idempotency-Key*string

A unique string that makes retries safe. Any value 16-255 characters; reuse it only when retrying the exact same request.

Match^[A-Za-z0-9._:-]+$
Length16 <= length <= 255

Request 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    }  }}