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

# Create product

> Creates a new product



## OpenAPI

````yaml /developer/api-reference/openapi.json post /products
openapi: 3.1.1
info:
  title: Crevio API V1
  version: 1.0.0
  description: >
    API for the Crevio creator platform — a multi-tenant SaaS for digital
    product sales.

    Uses snake_case keys following Stripe conventions. All resource IDs are
    string IDs (e.g., "prod_abc123").
  contact:
    email: support@crevio.co
    name: Crevio Support
    url: https://docs.crevio.co
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.crevio.co/v1
    description: Production
security:
  - ApiKey: []
tags:
  - name: Account
    description: Current account information
  - name: BlogCategories
    description: Blog post categories
  - name: BlogPosts
    description: Blog content management
  - name: Carts
    description: Shopping cart management
  - name: CheckoutLinks
    description: Shareable checkout links
  - name: Checkouts
    description: Checkout session management
  - name: Customers
    description: Customer relationship management
  - name: Discounts
    description: Discount code management
  - name: Emails
    description: Email sending
  - name: Experiences
    description: Digital experiences (courses, communities, downloads)
  - name: Files
    description: File uploads and external media management
  - name: FormSubmissions
    description: Form submission management
  - name: Forms
  - name: Invoices
    description: Invoice creation, payment, and lifecycle management
  - name: LegalPages
  - name: Me
    description: Current user profile
  - name: OrderItems
    description: Order line items
  - name: Orders
    description: Order history and details
  - name: PriceVariants
    description: Product pricing tiers
  - name: Products
    description: Digital product catalog
  - name: Refunds
    description: Refund management
  - name: Reviews
    description: Product reviews
  - name: Subscriptions
    description: Subscription lifecycle management (cancel, pause, resume)
  - name: Tags
    description: Customer tags
  - name: TaskRuns
    description: Individual execution records for AI tasks.
  - name: Tasks
    description: >-
      AI tasks — scheduled or event-triggered agentic work (cron, interval,
      once, immediate, event).
  - name: WebhookEndpoints
    description: Webhook endpoint management
  - name: WebhookEvents
    description: Webhook event delivery history
  - name: X402Configuration
    description: x402 payment protocol configuration
paths:
  /products:
    post:
      tags:
        - Products
      summary: Create product
      description: Creates a new product
      operationId: createProduct
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductRequest'
      responses:
        '201':
          description: Product created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - ApiKey: []
      x-codeSamples:
        - lang: typescript
          label: Typescript (SDK)
          source: |-
            import { Crevio } from "@crevio/sdk";

            const crevio = new Crevio({
              apiKey: process.env["CREVIO_API_KEY"] ?? "",
            });

            async function run() {
              const result = await crevio.products.create({});

              console.log(result);
            }

            run();
components:
  schemas:
    ProductRequest:
      type: object
      properties:
        name:
          type: string
        status:
          type: string
          enum:
            - draft
            - active
            - archived
        description:
          type: string
        body_html:
          type: string
        slug:
          type: string
        button_cta:
          type:
            - string
            - 'null'
        available_from:
          type:
            - string
            - 'null'
          format: date-time
        available_until:
          type:
            - string
            - 'null'
          format: date-time
        tax_code:
          type:
            - string
            - 'null'
    Product:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        name:
          type: string
        slug:
          type: string
        status:
          type: string
          enum:
            - draft
            - active
            - archived
        description:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        body_html:
          type: string
        button_cta:
          type:
            - string
            - 'null'
        url:
          type: string
        available_from:
          type:
            - string
            - 'null'
          format: date-time
        available_until:
          type:
            - string
            - 'null'
          format: date-time
        published_at:
          type:
            - string
            - 'null'
          format: date-time
        reviews_count:
          type: integer
        average_rating:
          type:
            - number
            - 'null'
        seo:
          oneOf:
            - type: string
            - $ref: '#/components/schemas/Seo'
            - type: 'null'
          description: ID by default, full object when expanded
        media_gallery:
          type: array
          items:
            $ref: '#/components/schemas/MediaGalleryItem'
        price_variants:
          type: array
          items:
            $ref: '#/components/schemas/PriceVariant'
        reviews:
          type: array
          items:
            $ref: '#/components/schemas/Review'
      required:
        - id
        - object
        - name
        - slug
        - status
        - description
        - created_at
        - updated_at
        - body_html
        - button_cta
        - url
        - available_from
        - available_until
        - published_at
        - reviews_count
        - average_rating
        - media_gallery
        - price_variants
    Seo:
      type: object
      properties:
        title:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
      required:
        - title
        - description
    MediaGalleryItem:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        url:
          type: string
      required:
        - id
        - type
        - url
    PriceVariant:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        name:
          type: string
        amount:
          type:
            - integer
            - 'null'
        amount_type:
          type: string
          enum:
            - free
            - fixed
            - custom
        billing_type:
          type: string
          enum:
            - subscription
            - one_time
            - payment_plan
        recurring_interval:
          type:
            - string
            - 'null'
          enum:
            - day
            - week
            - month
            - year
            - null
        interval_count:
          type: integer
        installment_count:
          type:
            - integer
            - 'null'
        setup_fee_amount:
          type:
            - integer
            - 'null'
        trial_period_days:
          type:
            - integer
            - 'null'
        revoke_after_days:
          type:
            - integer
            - 'null'
        quantity_available:
          type:
            - integer
            - 'null'
        archived:
          type:
            - boolean
            - 'null'
        position:
          type: integer
        hidden:
          type:
            - boolean
            - 'null'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        currency:
          type:
            - string
            - 'null'
        discounted_from_amount:
          type:
            - integer
            - 'null'
        minimum_amount:
          type:
            - integer
            - 'null'
        maximum_amount:
          type:
            - integer
            - 'null'
        preset_amount:
          type:
            - integer
            - 'null'
        waitlist:
          type: boolean
        benefits:
          type: array
          items:
            type: string
        purchase_url:
          type: string
        product:
          type: string
      required:
        - id
        - object
        - name
        - amount
        - amount_type
        - billing_type
        - recurring_interval
        - interval_count
        - installment_count
        - setup_fee_amount
        - trial_period_days
        - revoke_after_days
        - quantity_available
        - archived
        - position
        - hidden
        - created_at
        - updated_at
        - currency
        - discounted_from_amount
        - minimum_amount
        - maximum_amount
        - preset_amount
        - waitlist
        - purchase_url
        - product
    Review:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        rating:
          type: integer
        customer_name:
          type:
            - string
            - 'null'
        content:
          type:
            - string
            - 'null'
        created_at:
          type: string
          format: date-time
        customer_image_url:
          type:
            - string
            - 'null'
      required:
        - id
        - object
        - rating
        - customer_name
        - content
        - created_at
        - customer_image_url
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - api_error
                - invalid_request_error
                - validation_error
            code:
              type: string
            message:
              type: string
            param:
              type: string
            errors:
              type: object
          required:
            - type
            - message
      required:
        - error
  responses:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request_error
              code: bad_request
              message: The request was malformed or contained invalid parameters
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request_error
              code: authentication_required
              message: You did not provide an API key.
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request_error
              code: forbidden
              message: You do not have permission to perform this action
    UnprocessableEntity:
      description: Validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: validation_error
              code: validation_failed
              message: Email is required
              errors:
                email:
                  - can't be blank
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: api_error
              code: internal_error
              message: An unexpected error occurred
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: Authorization
      description: 'API key in the format: Bearer {api_token}'

````