---
title: "Update a course"
method: PATCH
path: "/v1/courses/{id}"
tags: ["Courses"]
---

# Update a course

`PATCH /v1/courses/{id}`

## Request

- Base URL: `https://api.vidocu.ai`
- URL: `https://api.vidocu.ai/v1/courses/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://vidocu.ai/oauth/authorize`, token URL `https://api.vidocu.ai/oauth/token`)

Title, planner instructions, project folder, and the access + completion settings for the learner link. Modules and status are owned by the pipeline. Settings are merged, so a partial patch leaves the fields it does not name alone.

**Scope:** `courses:write`

**Role permission:** `canEdit` (OAuth only — API keys carry full workspace permissions)

## Path parameters

- `id` string, required

## Request body

- object
  - `title` string
  - `userInstructions` string
  - `projectId` string, nullable
  - `settings` object
    - `access` object
      - `identity` 'anonymous' | 'name' | 'email_name' | 'email_verified' | 'auth'
      - `openEnrollment` boolean
      - `allowedEmailDomains` string[]
      - `invitedEmails` string[]
      - `allowRoster` boolean
    - `completion` object
      - `rule` 'watch' | 'watch_quiz' | 'manual'
      - `watchThresholdPct` integer
      - `sequential` boolean
    - `trackProgress` boolean
  - `accessCode` string, nullable
  - `pace` 'snackable' | 'course' | 'inDepth'
  - `aiVideo` object
    - `enabled` boolean, required
    - `stylePresetId` string

## Response `200`

Success

## Other responses

- `400`: Validation error
- `401`: Invalid or missing credentials
- `403`: Missing scope (`insufficient_scope`), insufficient role (`insufficient_role`), or quota exhausted (`limit_exceeded`)
- `404`: Not found
- `429`: Rate limit exceeded (60 req/min)
- `500`: Server error

---

[API](https://skmtc.dev/vidocu/apis/vidocu-api.md) · [All operations](https://skmtc.dev/vidocu/apis/vidocu-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vidocu/apis/vidocu-api/revisions/cc813d2ca5d2?raw)
