---
title: "Create a New Course"
method: POST
path: "/api/v2/content/courses"
tags: ["Content - Courses"]
---

# Create a New Course

`POST /api/v2/content/courses`

This endpoint creates a new course in the system and optionally creates visibility group relationships. <br><br>For Global Admin Tool Organizations, if the `X-Degreed-Organization-Code` header is included, the endpoint will create content for the Tenant Organization related to the header value as long as the organization is a member of the Global Admin Tool Organization. <br><br>**Note:** When visibility groups are set for content, the groups must either be (a) all of privacy level `Administrative` or (b) all of a non- `Administrative` privacy level. Non- `Administrative` privacy levels include `Open`, `Closed` and `Private`. Content in `Administrative` groups is only visible to users in the `Administrative` groups. If the content is not associated with any Administrative groups, the content is visible to all users in the organization. A group's privacy level can be retrieved from the [Get a Specific Group]() endpoint.<h3>Required Scope</h3>`content:write`

## Headers

- `X-Degreed-Organization-Code` string

## Request body

- ContentCoursesBody
  - `data` Apiv2contentcoursesData
    - `attributes` Apiv2contentcoursesDataAttributes
      - `external-id` string, required — The external ID of the course.
      - `title` string, nullable, required — The title of the course.
      - `summary` string, nullable — Short summary of the course.
      - `publish-date` string, date-time — Date the course was published.
      - `url` string, required — URL location where more information can be found.
      - `obsolete` boolean — If the course should be marked as obsolete.
      - `image-url` string, nullable — Cover image of the course.
      - `language` string, nullable — Spoken language of the course.
      - `duration` number, double, nullable — Length of the course. Type is supplied with `duration-type`.
      - `duration-type` string, nullable — Seconds, minutes, hours, or days.
      - `cost-units` number, double, nullable — Units for the cost.
      - `cost-unit-type` string, nullable — The cost unit type can be any currency
      - `format` string, nullable — Format of the course. This value appears in the UI as a filter option in search. Previously, only a list of acceptable values were allowed, however, now any value is allowed.
      - `difficulty` string, nullable — Describes the difficulty level of the course.
      - `video-url` string, nullable — If the course has a video, supply the URL where the video can be accessed.
      - `continuing-education-units` integer, nullable — Number of credits a user can earn from the completion of the content.
      - `owner-id` string — The unique ID of the group or user that owns the content.
      - `owner-type` string — Must be either "user" or "group".
      - `visibility-groups` GroupRelationship[], nullable — The relationship `id` of the relationship object must be the id of the visibility group and the type of the relationship must be groups.
        - `id` string, nullable
        - `type` string, nullable

## Response `201`

Success

- PostedCourse
  - `data` PostedCourseData
    - `type` string
    - `id` string
    - `attributes` PostedCourseDataAttributes
      - `provider-code` string, nullable — Unique provider code.
      - `degreed-url` string, nullable — URL location of course within Degreed UI.
      - `title` string, nullable — The title of the course.
      - `summary` string, nullable — Short summary of the course.
      - `url` string, nullable — URL location where more information can be found.
      - `obsolete` boolean
      - `image-url` string, nullable — Cover image of the course.
      - `language` string, nullable — The language of the course.
      - `duration` integer, nullable — The duration of the course.
      - `duration-type` string, nullable — The duration type of the course.
      - `learning-minutes` integer — The calculated value that corresponds with the learning minutes displayed on content cards in the UI.
      - `cost-units` integer, nullable — The cost units of the course.
      - `cost-unit-type` string, nullable — The cost unit type of the course.
      - `format` string, nullable — The format of the course.
      - `difficulty` string, nullable — The format of the course.
      - `video-url` string, nullable — URL location where course video can be found.
      - `owner` string, nullable — `owner` is usually the author of an course.
      - `publish-date` string, date-time — Date the course was published. (UTC)
      - `created-at` string, date-time — Date that the course was created. (UTC)
      - `modified-at` string, date-time — Date that the course was last modified. (UTC)
      - `external-id` string, nullable — The external ID of the course.
      - `continuing-education-units` integer, nullable — Number of credits a user can earn from the completion of the content.
    - `links` SelfLink
      - `self` string
    - `relationships` GroupRelationshipsInner[]
      - `visibility-groups` GroupRelationshipInner
        - `data` GroupRelationshipInnerData
          - `id` string, nullable
          - `type` string, nullable

---

[API](https://skmtc.net/degreed/apis/degreed-api-web.md) · [All operations](https://skmtc.net/degreed/apis/degreed-api-web/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/degreed/degreed-api-web/revisions/4a22b709515c/schema)
