---
title: "Create a draft product"
method: POST
path: "/api/products"
tags: ["Products"]
---

# Create a draft product

`POST /api/products`

## Request body

- ProductCreateRequest — Payload for creating a draft product. Send `title` and `type`. After creation, use the update endpoint for metadata, publish, and privacy changes.
  - `title` string, required — Product title shown in CourseLit.
  - `type` 'course' | 'download' | 'blog', required — CourseLit product type. Use `course` for lesson-based learning products.

## Response `201`

Success.

- Product
  - `productId` string
  - `type` 'course' | 'download' | 'blog'
  - `title` string
  - `slug` string
  - `description` string
  - `published` boolean
  - `privacy` string
  - `tags` string[]
  - `featuredImage` object
  - `pageId` string
  - `defaultPaymentPlan` string
  - `paymentPlans` PaymentPlan[]
    - `planId` string
    - `name` string
    - `type` 'free' | 'onetime' | 'emi' | 'subscription'
    - `entityId` string
    - `entityType` string
    - `oneTimeAmount` number
    - `emiAmount` number
    - `emiTotalInstallments` number
    - `subscriptionMonthlyAmount` number
    - `subscriptionYearlyAmount` number
    - `description` string
    - `isDefault` boolean
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

## Other responses

- `400` — Unsupported or invalid product field.
- `422` — Product could not be created.

---

[API](https://skmtc.net/codelitdev/apis/courselit-rest-api.md) · [All operations](https://skmtc.net/codelitdev/apis/courselit-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/codelitdev/courselit-rest-api/versions/3b48f60910dc/schema)
