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

# Create course 

> Create a new course (recorded or cohort-based) for your school

Authentication with the "FERMION-API-KEY" header is required to use this endpoint.

Rate limit: Maximum 60 requests in a window of 1m.



## OpenAPI

````yaml https://backend.codedamn.com/webhook/fermion-backend-openapi.yaml post /public/create-course
openapi: 3.0.0
info:
  version: 1.0.0
  title: Fermion Backend API
  description: Documentation for interacting with the Fermion API
  contact:
    name: Fermion Support
    email: support@codedamn.com
servers:
  - url: https://backend.codedamn.com/api
    description: Fermion primary backend server
security: []
externalDocs:
  description: Fermion Docs
  url: https://docs.fermion.app
paths:
  /public/create-course:
    post:
      tags:
        - Course
      summary: 'Create course '
      description: >-
        Create a new course (recorded or cohort-based) for your school


        Authentication with the "FERMION-API-KEY" header is required to use this
        endpoint.


        Rate limit: Maximum 60 requests in a window of 1m.
      requestBody:
        description: API Request Body
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      data:
                        type: object
                        properties:
                          title:
                            type: string
                            minLength: 1
                            description: Title of the course
                          shortDescription:
                            type: string
                            description: Brief description of the course
                          longDescription:
                            type: string
                            description: Detailed description of the course
                          goals:
                            type: array
                            items:
                              type: string
                            description: Array of learning goals/outcomes for the course
                          thumbnailUrl:
                            type: string
                            format: uri
                            description: >-
                              URL of the course thumbnail image (optional, will
                              use default placeholder if not provided)
                          enrollmentValidityInHours:
                            type: integer
                            minimum: 1
                            description: >-
                              Number of hours the enrollment is valid for after
                              purchase (optional)
                          isSyllabusVisibleOnCourseLandingPage:
                            type: boolean
                            description: >-
                              Whether the course syllabus should be visible on
                              the landing page (optional)
                          isCourseItemDiscussionEnabled:
                            type: boolean
                            description: >-
                              Whether discussions are enabled for course items
                              (optional)
                          shouldOnlyAllowManualEnrollmentsBySchoolAdmin:
                            type: boolean
                            description: >-
                              Only admins can enroll students in this course
                              (optional, default: false)
                          status:
                            type: string
                            enum:
                              - Draft
                              - Active
                              - Unlisted
                            description: Initial status of the course (defaults to Draft)
                          courseSpecificData:
                            oneOf:
                              - type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                      - CohortBasedCourse
                                    description: >-
                                      Type of course - CohortBasedCourse for
                                      scheduled cohorts
                                  cohortStartAt:
                                    type: string
                                    description: Cohort start date
                                  cohortEndAt:
                                    type: string
                                    description: Cohort end date
                                  cohortEnrollmentEndAt:
                                    type: string
                                    description: Cohort enrollment end date (optional)
                                required:
                                  - type
                                  - cohortStartAt
                                  - cohortEndAt
                              - type: object
                                properties:
                                  type:
                                    type: string
                                    enum:
                                      - RecordedCourse
                                    description: >-
                                      Type of course - RecordedCourse for
                                      self-paced courses
                                required:
                                  - type
                            description: Course type specific data
                          faqs:
                            type: array
                            items:
                              type: object
                              properties:
                                questionMarkdown:
                                  type: string
                                  description: Question text in markdown format
                                answerMarkdown:
                                  type: string
                                  description: Answer text in markdown format
                              required:
                                - questionMarkdown
                                - answerMarkdown
                            description: >-
                              Array of FAQ objects for the course landing page
                              (optional)
                          reviews:
                            type: array
                            items:
                              type: object
                              properties:
                                ratingOutOf10:
                                  type: number
                                  description: Rating out of 10
                                reviewContent:
                                  type: string
                                  description: Review text content
                                nameOfReviewer:
                                  type: string
                                  description: Name of the reviewer
                                titleOfReviewer:
                                  type: string
                                  description: Job title of the reviewer (optional)
                                workplaceOfReviewer:
                                  type: string
                                  description: Workplace/company of the reviewer (optional)
                                profilePictureUrlOfReviewer:
                                  type: string
                                  format: uri
                                  description: >-
                                    URL of the reviewer profile picture
                                    (optional)
                              required:
                                - ratingOutOf10
                                - reviewContent
                                - nameOfReviewer
                            description: >-
                              Array of review objects for the course landing
                              page (optional)
                        required:
                          - title
                          - shortDescription
                          - longDescription
                          - goals
                          - courseSpecificData
                    required:
                      - data
              required:
                - data
      responses:
        '200':
          description: API Response Body
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    output:
                      anyOf:
                        - type: object
                          properties:
                            status:
                              type: string
                              enum:
                                - ok
                            data:
                              type: object
                              properties:
                                fermionDigitalProductId:
                                  type: string
                                  description: >-
                                    Unique identifier of the created course
                                    product
                                slug:
                                  type: string
                                  description: >-
                                    URL-friendly slug for the course, used in
                                    subsequent API calls
                              required:
                                - fermionDigitalProductId
                                - slug
                          required:
                            - status
                            - data
                        - type: object
                          properties:
                            status:
                              type: string
                              enum:
                                - error
                            errorMessage:
                              type: string
                          required:
                            - status
                            - errorMessage
                  required:
                    - output
      security:
        - FERMION-API-KEY: []
components:
  securitySchemes:
    FERMION-API-KEY:
      name: FERMION-API-KEY
      type: apiKey
      in: header

````