---
title: "Archive or restore a course"
method: PUT
path: "/api/v2/courses/{courseId}/archive"
tags: ["Courses"]
---

# Archive or restore a course

`PUT /api/v2/courses/{courseId}/archive`

> 🔑
>
> Required OAuth scope: `courses:write`.

Archives or restores a course. Archiving a course doesn't remove it from paths where it is included. It simply prevents the course from being added to new paths. The archived course will still be accessible in existing paths, but it will be hidden from search results. Statistics are kept and not deleted.

## Path parameters

- `courseId` string, ObjectId, required

## Headers

- `360-api-version` 'v2.0', required

## Request body

- ArchiveCourseBody
  - `archived` boolean, required — If true, archives the course. If false, restores the course.

## Response `200`

Returns the updated course.

- CourseDTO
  - `name` string, required — The title of the course.
  - `sourceLang` 'bg' | 'cs' | 'da' | 'de' | 'el' | 'en' | 'es' | 'fi' | 'fr' | 'hr' | 'ht_HT' | 'hu' | 'id' | 'it' | 'ja' | 'kar_MM' | 'ko' | 'lt' | 'mh_MH' | 'nl' | 'nl_BE' | 'no' | 'pl' | 'pt' | 'ro' | 'ru' | 'rw_RW' | 'sk' | 'sl' | 'so_SO' | 'sv' | 'sw_KE' | 'th' | 'ti_ET' | 'tr' | 'uk' | 'zh' | 'am_ET' | 'bn' | 'bs' | 'ca' | 'cy' | 'en_CA' | 'en_GB' | 'es_AR' | 'es_MX' | 'et' | 'fr_CA' | 'gu' | 'he_IL' | 'hy' | 'kk' | 'km' | 'lo' | 'lv' | 'mi' | 'mn_MN' | 'mr' | 'ms' | 'my_MM' | 'nn_NO' | 'or' | 'pa' | 'pt_BR' | 'pt_MZ' | 'rn_BI' | 'si' | 'ta' | 'te' | 'tl_PH' | 'ur' | 'uz' | 'yo_NG' | 'zh_tw' | 'el' | 'hi' | 'sr' | 'ar' | 'vi' | 'zh_HANT', required — The language in which the course is created.
  - `authorId` string, ObjectId, required — The unique ID of the author of the course.
  - `groupId` string, ObjectId, required — The unique ID of the group where the course was created.
  - `coAuthorIds` string[], required — The list of unique IDs of the co-authors of the course.
  - `description` string — The description of the course.
  - `duration` number — An estimate of the time required to complete the course. The expected value is a number of minutes.
  - `_id` string, ObjectId, required — The unique ID of the course.
  - `createdAt` string, date-time, required — The date and time when the course was created, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)).
  - `defaultLang` 'bg' | 'cs' | 'da' | 'de' | 'el' | 'en' | 'es' | 'fi' | 'fr' | 'hr' | 'ht_HT' | 'hu' | 'id' | 'it' | 'ja' | 'kar_MM' | 'ko' | 'lt' | 'mh_MH' | 'nl' | 'nl_BE' | 'no' | 'pl' | 'pt' | 'ro' | 'ru' | 'rw_RW' | 'sk' | 'sl' | 'so_SO' | 'sv' | 'sw_KE' | 'th' | 'ti_ET' | 'tr' | 'uk' | 'zh' | 'am_ET' | 'bn' | 'bs' | 'ca' | 'cy' | 'en_CA' | 'en_GB' | 'es_AR' | 'es_MX' | 'et' | 'fr_CA' | 'gu' | 'he_IL' | 'hy' | 'kk' | 'km' | 'lo' | 'lv' | 'mi' | 'mn_MN' | 'mr' | 'ms' | 'my_MM' | 'nn_NO' | 'or' | 'pa' | 'pt_BR' | 'pt_MZ' | 'rn_BI' | 'si' | 'ta' | 'te' | 'tl_PH' | 'ur' | 'uz' | 'yo_NG' | 'zh_tw' | 'el' | 'hi' | 'sr' | 'ar' | 'vi' | 'zh_HANT', required — The language in which the course is displayed when the learner’s profile language is not available.
  - `modifiedAt` string, date-time, required — The date and time when the course was last updated, in the `YYYY-MM-DDThh:mm:ss.sssZ` format (ISO 8601 in Coordinated Universal Time (UTC)). Note that when translations are updated or when the course is archived/restored, its modification date does not change.
  - `status` 'archived' | 'deleted' | 'published', required — The status of the course.
  - `translations` CourseTranslationDTO[], required — The different translations available for the course.
    - `lang` 'bg' | 'cs' | 'da' | 'de' | 'el' | 'en' | 'es' | 'fi' | 'fr' | 'hr' | 'ht_HT' | 'hu' | 'id' | 'it' | 'ja' | 'kar_MM' | 'ko' | 'lt' | 'mh_MH' | 'nl' | 'nl_BE' | 'no' | 'pl' | 'pt' | 'ro' | 'ru' | 'rw_RW' | 'sk' | 'sl' | 'so_SO' | 'sv' | 'sw_KE' | 'th' | 'ti_ET' | 'tr' | 'uk' | 'zh' | 'am_ET' | 'bn' | 'bs' | 'ca' | 'cy' | 'en_CA' | 'en_GB' | 'es_AR' | 'es_MX' | 'et' | 'fr_CA' | 'gu' | 'he_IL' | 'hy' | 'kk' | 'km' | 'lo' | 'lv' | 'mi' | 'mn_MN' | 'mr' | 'ms' | 'my_MM' | 'nn_NO' | 'or' | 'pa' | 'pt_BR' | 'pt_MZ' | 'rn_BI' | 'si' | 'ta' | 'te' | 'tl_PH' | 'ur' | 'uz' | 'yo_NG' | 'zh_tw' | 'el' | 'hi' | 'sr' | 'ar' | 'vi' | 'zh_HANT', required — The language of the translation.
    - `published` boolean, required — True if the translation is available to users in this language; false otherwise.
    - `translatorIds` string[], required — The list of unique IDs of the translators assigned to this language.
    - `translatedFields` CourseTranslatedFields, required
      - `name` string — The translation of the field `name` for this language.
      - `description` string — The translation of the field `description` for this language.
  - `type` 'elearning standard' | 'external' | 'native', required — The type of the course.
  - `externalPlatform` string — The external platform where the course comes from. It is only set if the course has the `external` type.
  - `currentVersionNumber` integer — The current version of the course (most recent release).
  - `collaborativeLearning` boolean — A boolean indicating whether collaborative learning is enabled or not.

## Other responses

- `400` — The external course is linked to an inactive integration.
- `401` — The given access token is either missing, invalid, has expired, or has been revoked.
- `403` — The given access token does not have the required OAuth scope to execute the request.
- `404` — The given `courseId` does not correspond to any existing course.
- `429` — The client has sent too many requests in a short amount of time.

---

[API](https://skmtc.dev/360learning/apis/core-api.md) · [All operations](https://skmtc.dev/360learning/apis/core-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/360learning/core-api/revisions/94b691b0b72c/schema)
