---
title: "Create a product"
description: "Create a product from images your workspace already owns on cdn.roasos.com, or from public https URLs that are imported through /v1/uploads first. Products are workspace resources: every member of the workspace can read, update, and delete them.\n\n`kind` is `physical` (default) or `app`. An app product's images are REAL screenshots taken on the phone, up to 8; every render shows one of them on a phone exactly as given and never redraws the screen. An app never gets a kit. `app_store_url` (app kind only) is information: roasOS reads the public listing for the seller, category, price, rating, description and icon. It never takes screenshots from the listing, because listing images are marketing slides, not the real screen."
url: https://docs.roasos.com/api-reference/products/createProduct
---

# Create a product

Create a product from images your workspace already owns on cdn.roasos.com, or from public https URLs that are imported through /v1/uploads first. Products are workspace resources: every member of the workspace can read, update, and delete them.

`kind` is `physical` (default) or `app`. An app product's images are REAL screenshots taken on the phone, up to 8; every render shows one of them on a phone exactly as given and never redraws the screen. An app never gets a kit. `app_store_url` (app kind only) is information: roasOS reads the public listing for the seller, category, price, rating, description and icon. It never takes screenshots from the listing, because listing images are marketing slides, not the real screen.

## `POST /v1/products`

Endpoint: `POST https://api.roasos.com/v1/products`

Create a product

Create a product from images your workspace already owns on cdn.roasos.com, or from public https URLs that are imported through /v1/uploads first. Products are workspace resources: every member of the workspace can read, update, and delete them.

`kind` is `physical` (default) or `app`. An app product's images are REAL screenshots taken on the phone, up to 8; every render shows one of them on a phone exactly as given and never redraws the screen. An app never gets a kit. `app_store_url` (app kind only) is information: roasOS reads the public listing for the seller, category, price, rating, description and icon. It never takes screenshots from the listing, because listing images are marketing slides, not the real screen.

### Request body

Content type: `application/json`

### Responses

- `201`: Product created
- `400`: Invalid request, or an image is not an immutable object this workspace owns
- `429`: Write rate limit exceeded
- `503`: Upload or storage authority is temporarily unavailable

Read the full reference at https://docs.roasos.com/api-reference/products/createProduct.
