---
title: "POST /api/entitlements"
method: POST
path: "/api/entitlements"
tags: ["api", "entitlements"]
---

# POST /api/entitlements

`POST /api/entitlements`

Create a new entitlement

## Request body

- object
  - `name` string, required — The name of the entitlement
  - `publicName` string, required — The public name of the entitlement
  - `conditions` EntitlementConditionTree
    - `$or` EntitlementConditionTree[]
    - `$and` EntitlementConditionTree[]
    - `$condition` union
      - object
        - `type` 'product_in_cart', required
        - `config` object, required
          - `productId` string, required
          - `productVariantId` string, required
          - `minQuantity` number
          - `maxQuantity` number
      - object
        - `type` 'has_membership', required
        - `config` object, required
          - `membershipProgramId` string, required
      - object
        - `type` 'is_in_segment', required
        - `config` object, required
          - `segmentSlug` string, required
      - object
        - `type` 'sales_channel', required
        - `config` object, required
          - `salesChannelId` string, required
      - object
        - `type` 'event_has_attribute', required
        - `config` object, required
          - `attributeId` string, required
          - `slug` string, required
          - `value` string, required
  - `modifiers` union[], required — The checkout modifiers applied when this entitlement matches
    - union
      - object
        - `_id` string, required
        - `type` 'var_discount', required
        - `config` object, required
          - `value` number, required — Discount percentage
          - `max` number, nullable — Maximum discount amount
      - object
        - `_id` string, required
        - `type` 'fix_discount', required
        - `config` object, required
          - `amount` number, required — Fixed discount amount
      - object
        - `_id` string, required
        - `type` 'waive_fees', required
        - `config` object, required
  - `active` boolean — Whether the entitlement is active

## Response `201`

Created

- EntitlementResource
  - `_id` string, required — The ID of the entitlement
  - `name` string, required — The name of the entitlement
  - `publicName` string, required — The public name of the entitlement
  - `active` boolean — Whether the entitlement is active
  - `conditions` EntitlementConditionTree
    - `$or` EntitlementConditionTree[]
    - `$and` EntitlementConditionTree[]
    - `$condition` union
      - object
        - `type` 'product_in_cart', required
        - `config` object, required
          - `productId` string, required
          - `productVariantId` string, required
          - `minQuantity` number
          - `maxQuantity` number
      - object
        - `type` 'has_membership', required
        - `config` object, required
          - `membershipProgramId` string, required
      - object
        - `type` 'is_in_segment', required
        - `config` object, required
          - `segmentSlug` string, required
      - object
        - `type` 'sales_channel', required
        - `config` object, required
          - `salesChannelId` string, required
      - object
        - `type` 'event_has_attribute', required
        - `config` object, required
          - `attributeId` string, required
          - `slug` string, required
          - `value` string, required
  - `modifiers` union[], required — The checkout modifiers applied when this entitlement matches
    - union
      - object
        - `_id` string, required
        - `type` 'var_discount', required
        - `config` object, required
          - `value` number, required — Discount percentage
          - `max` number, nullable — Maximum discount amount
      - object
        - `_id` string, required
        - `type` 'fix_discount', required
        - `config` object, required
          - `amount` number, required — Fixed discount amount
      - object
        - `_id` string, required
        - `type` 'waive_fees', required
        - `config` object, required
  - `sellerId` string, required — The ID of the seller owning the entitlement
  - `createdAt` string, date-time, required — An ISO timestamp indicating when the entitlement was created.
  - `updatedAt` string, date-time, required — An ISO timestamp indicating when the entitlement was updated.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized

---

[API](https://skmtc.net/vivenu/apis/vivenu-api.md) · [All operations](https://skmtc.net/vivenu/apis/vivenu-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/vivenu/vivenu-api/revisions/36be0dca14e7/schema)
