thincms_create_course
Create a new course or community with customizable access, status, and content delivery settings. Supports structured curriculums and ongoing recording libraries.
Instructions
Create a new course or community. Courses start as draft by default. Set courseType to 'community' for ongoing recording libraries (modules become topics, lessons become recordings, content sorts newest-first). Set accessMode to control enrollment: 'free' (open), 'invite' (admin enrolls learners), or 'purchase' (Stripe payment required).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | URL slug (auto-generated from title if omitted) | |
| title | Yes | Course title (required) | |
| siteId | No | Override the active site for this single call. Pass to target a specific tenant without mutating shared active-site state — the right pattern when running concurrent agent sessions managing different tenants. Must match a siteId from your THINCMS_SITES config (use thincms_list_sites to inspect). When omitted, the call uses the active site set by thincms_switch_site. | |
| status | No | Course status (default: draft) | |
| summary | No | Short plain-text blurb for course catalog cards | |
| dripMode | No | Content drip mode (default: all-at-once). Ignored for communities. | |
| accessMode | No | How learners gain access (default: free) | |
| courseType | No | Type: 'course' (structured curriculum) or 'community' (ongoing recordings). Default: course. Communities default to all-at-once drip and sort recordings by date. | |
| description | No | Full HTML landing page content | |
| thumbnailUrl | No | Thumbnail image URL | |
| priceCurrency | No | Currency code (default: USD) | |
| showInCatalog | No | Show on public course catalog page (default: true) | |
| priceAmountCents | No | Price in cents (for purchase mode) | |
| confirmProductionWrite | No | Acknowledge that this call may write to a configured production site (THINCMS_PRODUCTION_SITE_IDS env var). Required for any POST/PUT/PATCH/DELETE against a production-listed site; ignored otherwise. The error message lists which site triggered the requirement and recommends thincms_snapshot before any production write. |