---
title: "Create a program"
method: POST
path: "/api/v1/programs"
tags: ["Programs"]
---

# Create a program

`POST /api/v1/programs`

## Request body

- object
  - `program` object
    - `title` string, required — Listing title
    - `description` string, required — Full listing description
    - `path` string, required — Path to the listing, used in URLs
    - `teaser` string — A shorter description of the listing
    - `enrollment_open` boolean
    - `visibility` string — listed, unlisted, or hidden
    - `enrollment_cap` integer
    - `enrollment_fee` number — Enrollment fee
    - `days_to_complete` integer
    - `waitlist` boolean
    - `waitlist_cap` integer
    - `list_order` integer
    - `sku` string
    - `requirement_ids` integer[] — Ordered listing IDs that are requirements
    - `sequential` boolean — Require completing requirements in order
    - `tag_names` string[]

## Response `201`

program created

- object
  - `program` object, required
    - `id` integer, required — Identifier for this listing
    - `visibility` string, required — Visibility in the web UI: listed, unlisted, or hidden
    - `enrollment_open` boolean, required — Open for enrollment
    - `enrollment_open_from` string, nullable, required — Enrollment open from this date-time, if specified
    - `enrollment_open_to` string, nullable, required — Enrollment open until this date-time, if specified
    - `enrollment_cap` integer, nullable, required — Limit for the total number of enrollments
    - `hide_enrollment_info` boolean, required — Hide enrollment info when closed
    - `description` string, required — Full listing description
    - `enrollment_fee` number, required — Enrollment fee
    - `created_at` string, required — Creation timestamp (ISO 8601)
    - `credits` number, nullable, required — Cumulative credit value of the program's requirements
    - `measurement` string, required
    - `updated_at` string, required — Last-updated timestamp (ISO 8601)
    - `short_description` string, required — A short description for this listing
    - `listing_path` string, required — Path to the listing, used in URLs
    - `listing_image` string, nullable, required
    - `currency` string, required — Three-character currency code for the enrollment fee
    - `catalog` object, required — Catalog that owns this listing
      - `id` integer, required
      - `name` string, required
    - `type` string, required — Listing type (Course or Program)
    - `title` string, required — Title of the listing
    - `list_order` integer, nullable, required — Order in which the listing is shown
    - `waitlist` boolean, required — Waitlist enabled
    - `waitlist_cap` integer, nullable, required — Waitlist limit
    - `sku` string, nullable, required — Listing SKU
    - `show_free_banner` boolean, required — Show the 'FREE' mark when free
    - `image_alt_text` string, nullable, required
    - `allowed_payment_types` string[], required — Allowed payment methods
    - `tag_names` string[], required — Tags applied to this listing
    - `listing_url` string, required — The URL of the listing
    - `start_date` string, nullable, required — When the Canvas course starts, if specified
    - `end_date` string, nullable, required — When the Canvas course ends, if specified
    - `canvas_section_id` integer, nullable, required — The Canvas course section's id
    - `associated_account_ids` integer[], required — Other account ids where this product is listed
    - `archived_at` string, nullable, required — Archival date (null if not archived)
    - `sequential` boolean, required — Whether requirements must be completed in order
    - `auto_enroll_courses` boolean, required
    - `requirements` object[], required — The program's requirements (courses and subprograms; distinguish by the type key)
      - `id` integer, required — Identifier for this listing
      - `visibility` string, required — Visibility in the web UI: listed, unlisted, or hidden
      - `enrollment_open` boolean, required — Open for enrollment
      - `enrollment_open_from` string, nullable, required — Enrollment open from this date-time, if specified
      - `enrollment_open_to` string, nullable, required — Enrollment open until this date-time, if specified
      - `enrollment_cap` integer, nullable, required — Limit for the total number of enrollments
      - `hide_enrollment_info` boolean, required — Hide enrollment info when closed
      - `description` string, required — Full listing description
      - `enrollment_fee` number, required — Enrollment fee
      - `created_at` string, required — Creation timestamp (ISO 8601)
      - `credits` number, nullable, required — Cumulative credit value of the program's requirements
      - `measurement` string, required
      - `updated_at` string, required — Last-updated timestamp (ISO 8601)
      - `short_description` string, required — A short description for this listing
      - `listing_path` string, required — Path to the listing, used in URLs
      - `listing_image` string, nullable, required
      - `currency` string, required — Three-character currency code for the enrollment fee
      - `catalog` object, required — Catalog that owns this listing
        - `id` integer, required
        - `name` string, required
      - `type` string, required — Listing type (Course or Program)
      - `title` string, required — Title of the listing
      - `list_order` integer, nullable, required — Order in which the listing is shown
      - `waitlist` boolean, required — Waitlist enabled
      - `waitlist_cap` integer, nullable, required — Waitlist limit
      - `sku` string, nullable, required — Listing SKU
      - `show_free_banner` boolean, required — Show the 'FREE' mark when free
      - `image_alt_text` string, nullable, required
      - `allowed_payment_types` string[], required — Allowed payment methods
      - `tag_names` string[], required — Tags applied to this listing
      - `listing_url` string, required — The URL of the listing
      - `start_date` string, nullable, required — When the Canvas course starts, if specified
      - `end_date` string, nullable, required — When the Canvas course ends, if specified
      - `canvas_section_id` integer, nullable, required — The Canvas course section's id
      - `associated_account_ids` integer[], required — Other account ids where this product is listed
      - `archived_at` string, nullable, required — Archival date (null if not archived)
      - `sequential` boolean
      - `auto_enroll_courses` boolean
      - `canvas_course` object
        - `id` integer, required
      - `instructor_names` string[]
      - `primary_instructor_name` string, nullable
      - `requirements` object[] — Nested requirements for subprograms

---

[API](https://skmtc.net/instructure/apis/canvas-catalog-api.md) · [All operations](https://skmtc.net/instructure/apis/canvas-catalog-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/instructure/canvas-catalog-api/revisions/78578cd3e37a/schema)
