---
title: "Create a product"
method: POST
path: "/entities/Products"
tags: ["Product"]
---

# Create a product

`POST /entities/Products`

## Request

- Base URL: `https://us-east.api.coevera.com/api/v100/rest/spaces/your_space_id`
- URL: `https://us-east.api.coevera.com/api/v100/rest/spaces/your_space_id/entities/Products`
- Auth: HTTP basic
- TypeScript: <https://skmtc.dev/coevera/apis/coevera-crm-api/docs/entities/Products/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates one product and answers 201 with the record. `name` and `unit_symbol` are required, and `sku` must be unique.

## Query parameters

- `validation-level` integer

## Request body

- CreateProductInput: Field values of a new Product record.
  - `modified` string, date-time: Last modification time.
  - `created` string, date-time: Creation time.
  - `picture` object: Product picture. Related CloudObject record; see 'createCloudObjectInput' for its fields.
    - `id` string, uuid: Id of the related CloudObject record.
  - `allowed_pipelines` 1 | 2: Whether this product can be added to all pipelines or only the explicitly linked subset (see product_pipeline_relations). Integer enum value: 1 - All, 2 - Selected
  - `currency_exchange_rates_list_id` string, uuid: Id of the currency exchange rate list applied to this product.
  - `description` string: Free-form description of the product.
  - `name` string, required: Name of the product, shown in catalogues and pickers.
  - `picture_id` string, uuid: Id of the product picture document.
  - `product_category_id` string, uuid: Id of the product category this product belongs to, or empty when it is not categorized.
  - `product_type_id` string, uuid: Id of the product type that classifies this product.
  - `sku` string: Stock-keeping unit (SKU) of the product, unique in the space: a second product with the same `sku` is refused with HTTP 400. A deleted product's `sku` can be used again.
  - `unit_symbol` string, required: Unit of measure shown next to product quantities, such as pcs, kg or hours; required on create.
  - `revision` integer: Revision when entity was lastly changed.
  - `product_pipeline_relations` object[]: Deprecated pipeline connection.
    - `id` string, uuid: Id of the related ProductPipelineRelation record.
  - `product_pipelines` object: Configuration of Pipelines where the Product can be used.
    - `pipelines` string[], required: Ids of the pipelines the product can be added in. Effective only when allowed_pipelines is Selected.
    - `allowed_pipelines` 1 | 2, required: Whether this product can be added to all pipelines or only the explicitly linked subset (see product_pipeline_relations). Integer enum value: 1 - All, 2 - Selected
  - `picture_source_url` string: URL of an image to use as the product picture. The image is downloaded from this URL and checked; only pictures are supported.

## Response `201`

The created Product record.

- object
  - `success` boolean: True when the request succeeded; false on error.
  - `data` Product: Product or service in the catalog that can be added as a line item to opportunities and quotes.
    - `is_delete_protected` boolean, required: True when the record is protected against deletion because it must always exist in the space. Deleting a record that is not protected can still fail on other checks. Read-only.
    - `id` string, uuid, required: Unique identifier of entity.
    - `is_deleted` boolean: Specifies if the entity is considered deleted.
    - `modified` string, date-time: Last modification time.
    - `created` string, date-time: Creation time.
    - `currency_exchange_rates_list` string, uri: Currency exchange rate list used to convert monetary fields linked to this product. Empty to inherit the team space default. Related CurrencyExchangeRatesList record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'CurrencyExchangeRatesList' for its fields.
    - `picture` string, uri: Product picture. Related CloudObject record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'CloudObject' for its fields.
    - `product_category` string, uri: Product category this product belongs to. Categories form a hierarchy used in the catalog browser. Related ProductCategory record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'ProductCategory' for its fields.
    - `product_type` string, uri, required: Product type that classifies this product. Product types are configurable per team space and drive which form, fields and product-line behavior apply. Related ProductType record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'ProductType' for its fields.
    - `allowed_pipelines` 1 | 2: Whether this product can be added to all pipelines or only the explicitly linked subset (see product_pipeline_relations). Integer enum value: 1 - All, 2 - Selected
    - `currency_exchange_rates_list_id` string, uuid: Id of the currency exchange rate list applied to this product.
    - `description` string: Free-form description of the product.
    - `name` string, required: Name of the product, shown in catalogues and pickers.
    - `picture_id` string, uuid: Id of the product picture document.
    - `product_category_id` string, uuid: Id of the product category this product belongs to, or empty when it is not categorized.
    - `product_type_id` string, uuid: Id of the product type that classifies this product.
    - `sku` string: Stock-keeping unit (SKU) of the product, unique in the space: a second product with the same `sku` is refused with HTTP 400.
    - `unit_symbol` string: Unit of measure shown next to product quantities, such as pcs, kg or hours; required on create.
    - `revision` integer: Revision when entity was lastly changed.
    - `product_pipeline_relations` string[]: Deprecated pipeline connection.
    - `product_pipelines` object: Configuration of Pipelines where the Product can be used.
      - `pipelines` string[], required: Ids of the pipelines the product can be added in. Effective only when allowed_pipelines is Selected.
      - `allowed_pipelines` 1 | 2, required: Whether this product can be added to all pipelines or only the explicitly linked subset (see product_pipeline_relations). Integer enum value: 1 - All, 2 - Selected
    - `formatted_name` string, required: Display version of the product name, used in lists and references.
    - `oppty_product_relation_type_id` string, uuid, required: Id of the product line-item type derived from product_type. Used as a filter when listing relations on opportunities and quotes. Read-only.
    - `price_lists` object[]: Active price lists this product is priced in, ordered by name. Read-only; computed by Coevera.
      - `id` string, uuid: Id of the price list.
      - `name` string: Name of the price list.
    - `price_schedules` object[]: Active price schedules this product is priced in, ordered by name. Read-only; computed by Coevera.
      - `id` string, uuid: Id of the price list.
      - `name` string: Name of the price list.

## Other responses

- `400`: Bad request: a bad or unknown parameter (codes 117, 118), a missing permission (code 50), conflicting data (code 2002) or any other API error. The REST API answers 400 where others answer 403 or 409; check `code`.
- `401`: Not authenticated: missing or wrong credentials, a credential of another space, or an expired token (code 401, ERROR_UNAUTHORIZED).
- `422`: Validation failed (code 40000, with the failing fields) or a required parameter is missing (code 119). By default one failed item fails a whole batch and nothing is written.
- `429`: Too many requests (code 182). Wait for the seconds in Retry-After, then retry.
- `500`: Unexpected server error (code 1000, ERROR_UNKNOWN).

---

[API](https://skmtc.dev/coevera/apis/coevera-crm-api.md) - [All operations](https://skmtc.dev/coevera/apis/coevera-crm-api/llms.txt) - [OpenAPI document](https://skmtc.dev/coevera/apis/coevera-crm-api/revisions/40ebbc83f179?raw)
