30 days free. No credit card. Full access from the moment you connect your site.

Start free trial

LearnDash Manage Course

learndash/manage-course creates a new course or updates an existing one. Post fields and LearnDash settings can both be set in the same call.

Settings are written through LearnDash’s own accessor, so the meta LearnDash mirrors internally stays consistent. Writing the meta directly leaves the two copies disagreeing, and LearnDash reads whichever one it happens to read.

At a glance

Abilitylearndash/manage-course
ToolsetLearnDash — toolset/learndash
GroupLearnDash › Courses
RequiresAcrossAI Pro, plus LearnDash LMS active on the site
Capabilitymanage_options
SafetyWrites data
RepeatableIdempotent — running it twice leaves the same result
Ships inAcrossAI Pro 0.9.16 and later

How it works

That accessor detail is the reason to use this rather than a generic post write. LearnDash keeps several settings in more than one place, and a direct meta write updates one copy — producing a course whose price shows correctly in the admin and is ignored at checkout.

The settings worth knowing are the access ones. course_price_type takes open, free, paynow, subscribe or closed, and course_price goes with the paid ones.

course_prerequisite_enabled gates the course behind another, and course_disable_lesson_progression lets learners move freely instead of in order.

certificate names the template issued on completion — assign a template built with learndash/manage-certificate-template here.

Read the course first. The settings object is large and partial knowledge of it is how a write ends up changing something nobody mentioned.

Idempotent.

Input

NameTypeRequiredWhat it is
actionstringYescreate or update.
course_idintegerFor updateWhich course.
titlestringFor createThe course title.
contentstringNoThe course description.
statusstringNoPost status.
authorintegerNoCourse owner.
settingsobjectNoLearnDash settings keys.

What comes back

NameTypeWhat it is
courseobjectThe course after the write.
successbooleanWhether the call completed.
messagestringA one-line summary of what happened, suitable for showing a human.
error_codestringPresent only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation.

Example

Ask your assistant:

Make this course free to enrolled members.

It resolves to one call:

{
  "ability": "learndash/manage-course",
  "parameters": {
    "action": "update",
    "course_id": 412,
    "settings": { "course_price_type": "free" }
  }
}

Worth knowing

  • Written through LearnDash’s accessor, so mirrored meta stays in step.
  • A direct meta write produces a course that behaves differently from how it displays.
  • Read the current settings first — the object is large.
  • Idempotent.

Related abilities


Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager

Browse the rest: Every ability, by category


Keep reading