---
title: "OpptyProductRelations.create"
method: POST
path: "/entities/OpptyProductRelations"
tags: ["Product Line Items"]
---

# OpptyProductRelations.create

`POST /entities/OpptyProductRelations`

## 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/OpptyProductRelations`
- Auth: HTTP basic
- TypeScript: <https://skmtc.dev/coevera/apis/coevera-crm-api/docs/entities/OpptyProductRelations/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a OpptyProductRelation record.

## Query parameters

- `validation-level` integer

## Request body

- CreateOpptyProductRelationInput: Field values of a new OpptyProductRelation record.
  - `modified` string, date-time: Last modification time.
  - `created` string, date-time: Creation time.
  - `paired_oppty_product_relation` object: Counterpart line item on the paired record (e.g. matching line on the active quote when this line is on the opportunity, or vice versa). Empty when there is no pairing. Related OpptyProductRelation record; see 'createOpptyProductRelationInput' for its fields.
    - `id` string, uuid: Id of the related OpptyProductRelation record.
  - `amount` number, double: Total amount of the line item (price * quantity, with discounts applied).
  - `comment` string: Free-form note describing this line item.
  - `currency_exchange_rates_list_id` string, uuid: Id of the currency exchange rate list used to convert this line item, inherited from the parent opportunity or quote.
  - `online_form_field_id` string, uuid: Id of the online form field in which the respondent selected this product, or empty when the line item did not come from a form submission.
  - `online_form_id` string, uuid: Id of the online form submission this line item came from, or empty when it was not created through a form.
  - `oppty_id` string, uuid: Id of the opportunity.
  - `oppty_product_relation_type_id` string, uuid: Id of the line-item type.
  - `paired_oppty_product_relation_id` string, uuid: Id of the paired line item.
  - `price` number, double: Per-unit price of the line item. Defaults to the product price from the price list when not supplied explicitly.
  - `product_id` string, uuid, required: Id of the product on this line item. Set on create; cannot be changed afterwards.
  - `quantity` number, double: Number of product units on this line item; a line item created without it gets 1.
  - `quote_id` string, uuid: Id of the quote this line item belongs to. Mutually exclusive with oppty_id.
  - `section_id` string, uuid: Identifier of the product section this line belongs to (see the product_sections JSON layout on the parent opportunity or quote).
  - `sort_order` integer: Display order of the line item within its section. Maintained automatically when lines are added or moved.
  - `revision` integer: Revision when entity was lastly changed.
  - `revenue_schedule` object: Per-line revenue schedule splitting the line amount across periods. Available only when revenue scheduling is configured at product-amount level. Related OpptyProductRelationRevenueSchedule record; see 'createOpptyProductRelationRevenueScheduleInput' for its fields.
    - `id` string, uuid: Id of the related OpptyProductRelationRevenueSchedule record.

## Response `201`

The created OpptyProductRelation record.

- object
  - `success` boolean: True when the request succeeded; false on error.
  - `data` OpptyProductRelation: Product line item on an opportunity or quote, with its quantity, price and discount.
    - `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 this line item, inherited from the parent opportunity or quote. 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.
    - `online_form_field` string, uri: Online form field that produced this line item, or empty when not applicable. Related Field record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'Field' for its fields.
    - `online_form` string, uri: Online form this line item came from when the related opportunity was created through a form submission, or empty otherwise. Related OnlineForm record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'OnlineForm' for its fields.
    - `oppty` string, uri: Opportunity this line item belongs to. Set on create; mutually exclusive with quote. Related Opportunity record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'Opportunity' for its fields.
    - `oppty_product_relation_type` string, uri, required: Line-item type that drives the form layout for this product line. Resolved from the product type on create. Related OpptyProductRelationType record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'OpptyProductRelationType' for its fields.
    - `paired_oppty_product_relation` string, uri: Counterpart line item on the paired record (e.g. matching line on the active quote when this line is on the opportunity, or vice versa). Empty when there is no pairing. Related OpptyProductRelation record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'OpptyProductRelation' for its fields.
    - `product` string, uri, required: Product on this line item. Set on create; cannot be changed afterwards. Related Product record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'Product' for its fields.
    - `quote` string, uri: Quote this line item belongs to. Set on create; mutually exclusive with opportunity. Related Quote record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'Quote' for its fields.
    - `amount` number, double: Total amount of the line item (price * quantity, with discounts applied).
    - `comment` string: Free-form note describing this line item.
    - `currency_exchange_rates_list_id` string, uuid: Id of the currency exchange rate list used to convert this line item, inherited from the parent opportunity or quote.
    - `online_form_field_id` string, uuid: Id of the online form field in which the respondent selected this product, or empty when the line item did not come from a form submission.
    - `online_form_id` string, uuid: Id of the online form submission this line item came from, or empty when it was not created through a form.
    - `oppty_id` string, uuid: Id of the opportunity.
    - `oppty_product_relation_type_id` string, uuid: Id of the line-item type.
    - `paired_oppty_product_relation_id` string, uuid: Id of the paired line item.
    - `price` number, double: Per-unit price of the line item. Defaults to the product price from the price list when not supplied explicitly.
    - `product_id` string, uuid, required: Id of the product; required on create.
    - `quantity` number, double: Number of product units on this line item; a line item created without it gets 1.
    - `quote_id` string, uuid: Id of the quote this line item belongs to. Mutually exclusive with oppty_id.
    - `section_id` string, uuid: Identifier of the product section this line belongs to (see the product_sections JSON layout on the parent opportunity or quote).
    - `sort_order` integer: Display order of the line item within its section. Maintained automatically when lines are added or moved.
    - `revision` integer: Revision when entity was lastly changed.
    - `revenue_schedule` string, uri: Per-line revenue schedule splitting the line amount across periods. Available only when revenue scheduling is configured at product-amount level. Related OpptyProductRelationRevenueSchedule record, returned as the URI of the record. With the 'expand' parameter the full record is returned instead; see 'OpptyProductRelationRevenueSchedule' for its fields.
    - `discount_value` number, double: Absolute discount of this line item against the product's price-list price, computed: a write that sends it is refused with HTTP 400, code 117. Set `price` instead.
    - `discount_percentage` number, double: Percentage discount of this line item against the product's price-list price, computed: a write that sends it is refused with HTTP 400, code 117. Set `price` instead.
    - `modified_by_user` string, date-time: Timestamp of the most recent modification made by an end user (excluding system changes). Read-only; computed by Coevera.

## 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)
