> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blink.store/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a new product

> Creates a new product within the store identified by `x-store-id`. Requires `name`, `pricing_model`, and `price` in the request body. Optionally includes description and other attributes. Valid pricing models are `one_time`, `subscription`, `pay_what_you_want`, and `tiered`. Ensures the new product is not archived.



## OpenAPI

````yaml /api-reference/blink-api.json post /v1/products
openapi: 3.0.0
info:
  title: Blink API
  description: Comprehensive API documentation for Blink.
  version: 1.0.0
servers:
  - url: https://api.blink.store/v1
security:
  - storeIdHeader: []
tags:
  - name: Invoices
    description: Unified merchant of record invoices for products and subscriptions.
  - name: Geo Pricing
    description: Resolve Purchasing Power Parity (PPP) localized pricing.
paths:
  /v1/products:
    post:
      tags:
        - Products
      summary: Create a new product
      description: >-
        Creates a new product within the store identified by `x-store-id`.
        Requires `name`, `pricing_model`, and `price` in the request body.
        Optionally includes description and other attributes. Valid pricing
        models are `one_time`, `subscription`, `pay_what_you_want`, and
        `tiered`. Ensures the new product is not archived.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProductRequest'
      responses:
        '201':
          description: Product created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductDetails'
        '400':
          description: Bad Request - Required fields missing or invalid.
        '401':
          description: Unauthorized - Store ID header missing.
        '409':
          description: Conflict - Product with similar attributes already exists.
        '500':
          description: Internal Server Error.
      security:
        - storeIdHeader: []
components:
  schemas:
    CreateProductRequest:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        pricing_model:
          type: string
          enum:
            - one_time
            - subscription
            - pay_what_you_want
            - tiered
        price:
          type: integer
        status:
          type: string
        subscription_interval:
          type: string
        trial_days:
          type: integer
        preview_link:
          type: string
        requires_license_key:
          type: boolean
        license_key_activation_limit:
          type: integer
        cart_recovery_enabled:
          type: boolean
        customer_portal_visibility:
          type: string
      required:
        - name
        - pricing_model
        - price
    ProductDetails:
      type: object
      properties:
        id:
          type: string
        store_id:
          type: string
        name:
          type: string
        description:
          type: string
        preview_link:
          type: string
        pricing_model:
          type: string
        price:
          type: number
        currency:
          type: string
        status:
          type: string
        created_at:
          type: string
          format: date-time
        subscription_interval:
          type: string
        trial_days:
          type: integer
        pricing_tiers:
          type: string
        package_size:
          type: integer
        metered_prices:
          type: string
        requires_license_key:
          type: boolean
        license_key_activation_limit:
          type: integer
        cart_recovery_enabled:
          type: boolean
        customer_portal_visibility:
          type: boolean
        variants:
          type: array
          items:
            $ref: '#/components/schemas/ProductVariantDetails'
        deliverables:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              type:
                type: string
              title:
                type: string
              description:
                type: string
              url:
                type: string
              button_label:
                type: string
              created_at:
                type: string
                format: date-time
        images:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              file_url:
                type: string
              position:
                type: integer
    ProductVariantDetails:
      type: object
      properties:
        id:
          type: string
        product_id:
          type: string
        name:
          type: string
        description:
          type: string
        price:
          type: number
        subscription_interval:
          type: string
        trial_days:
          type: integer
        is_active:
          type: boolean
        requires_license_key:
          type: boolean
        license_key_activation_limit:
          type: integer
        created_at:
          type: string
          format: date-time
        deliverables:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              type:
                type: string
              title:
                type: string
              description:
                type: string
              url:
                type: string
              button_label:
                type: string
              created_at:
                type: string
                format: date-time
  securitySchemes:
    storeIdHeader:
      type: apiKey
      in: header
      name: x-store-id

````