Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOSTNoHTTP bind address0.0.0.0
PORTNoHTTP listen port8765
MCP_HTTP_PATHNoHTTP MCP route/mcp
MCP_TRANSPORTNostdio or http (the Docker image defaults to http)stdio
MCP_SHARED_TOKENNoRequire Authorization: Bearer <token> on /mcp
LEARNWORLDS_BASE_URLYesYour school's API base URL
LEARNWORLDS_API_TOKENYesBearer access token
LEARNWORLDS_CLIENT_IDYesSent as the Lw-Client header
LEARNWORLDS_TIMEOUT_MSNoPer-attempt request timeout30000
LEARNWORLDS_MAX_RETRIESNoRetries on 429 / 5xx / network errors3
LEARNWORLDS_MAX_REQUESTSNoClient-side requests per window (0 disables throttling)25
LEARNWORLDS_OPENAPI_PATHNoLoad a different OpenAPI YAML
LEARNWORLDS_RATE_WINDOW_MSNoRate-limit window in ms10000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_coursesA

๐ŸŸข READ-ONLY ยท GET /v2/courses

Get all courses. Returns a list of all courses of the school. The courses are in sorted order, with the most recently created course appearing first, and the list is paginated, with a limit of 50 courses per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Courses tools: create_course, create_course_section, get_contents_course, get_course, get_course_grades.

create_courseA

๐ŸŸก WRITE ยท creates data ยท POST /v2/courses

Creates a new course. The endpoint response is the created Course resource.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Courses tools: create_course_section, get_contents_course, get_course, get_course_grades, get_courses.

get_courseA

๐ŸŸข READ-ONLY ยท GET /v2/courses/{id}

Get a course. Returns information about the course specified by the provided course id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Courses tools: create_course_section, get_contents_course, get_course_grades, get_users_per_course, update_course.

update_courseA

๐ŸŸก WRITE ยท updates data ยท PUT /v2/courses/{id}

Updates the course specified by the provided course id. The endpoint response is the updated Course resource.

Behavior: replaces the fields you send on an existing record in the live school. Idempotent: repeating it leaves the same state. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to change an existing record. Read it first so you overwrite just the fields you mean to; use the create tool if it does not exist yet. Related Courses tools: create_course_section, get_contents_course, get_course, get_course_grades, get_users_per_course.

get_analytics_courseA

๐ŸŸข READ-ONLY ยท GET /v2/courses/{id}/analytics

Get analytics for a course. Returns analytics about the course specified by the provided course id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Reporting tools: get_analytics_learning_activity, get_user_progress, get_user_progress_per_course.

get_analytics_learning_activityA

๐ŸŸข READ-ONLY ยท GET /v2/courses/{id}/units/{uid}/analytics

Get analytics for a learning activity. Returns analytics about a learning activity of a course specified by the provided course id and learning activity id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Reporting tools: get_analytics_course, get_user_progress, get_user_progress_per_course.

get_bundlesA

๐ŸŸข READ-ONLY ยท GET /v2/bundles

Get all bundles. Returns a list of all bundles of the school. The bundles are in sorted order, with the most recently created bundle appearing first, and the list is paginated, with a limit of 20 bundles per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Bundles tools: get_bundle.

get_bundleA

๐ŸŸข READ-ONLY ยท GET /v2/bundles/{id}

Get a bundle. Returns the bundle specified by the provided bundle id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Bundles tools: get_bundles.

get_list_subscription_plansA

๐ŸŸข READ-ONLY ยท GET /v2/subscription-plans

Get a list of subscription plans. Returns a list of all subscription plans. The subscription plans are in sorted order, with the most recently created subscription plan appearing first, and the list is paginated, with a limit of 50 subscription plans per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Subscription plans tools: get_subscription_plan.

get_subscription_planA

๐ŸŸข READ-ONLY ยท GET /v2/subscription-plans/{id}

Get subscription plan. Returns the subscription plan specified by the provided subscription plan id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Subscription plans tools: get_list_subscription_plans.

get_users_subscriptionsA

๐ŸŸข READ-ONLY ยท GET /v2/user-subscriptions

Get users subscriptions. Returns a list with the user subscriptions. The subscriptions are in sorted order based on user's creation date in descending order and the list is paginated, with a limit of 20 subscriptions per page. To refine the list of subscriptions, there are a number of query params outlined in the following section; In case more than one Query param is provided, then all of them will be applied (AND operator).

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool.

get_active_installmentsA

๐ŸŸข READ-ONLY ยท GET /v2/installments/active

Get active installments. Return a list with active installments of users. The installments are in sorted order based on user's creation date in descending order, and the list is paginated, with a limit of 50 installments per page. To refine the list of installments, there are a number of query params outlined in the following section; In case more than one Query param is provided, then all of them will be applied (AND operator).

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool.

get_school_eventsA

๐ŸŸข READ-ONLY ยท GET /v2/school/events

Get school events. Returns all the upcoming scheduled school events, regarding course drip feed, file assignment and live session.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool.

get_usersA

๐ŸŸข READ-ONLY ยท GET /v2/users

Get all users. Returns a list with all the users of the school. The users are in sorted order, with the most recently created user appearing first, and the list is paginated, with a default limit of 20 users per page. To refine the list of users, there are a number of query params outlined in the following section; In case more than one Query param is provided, then all of them will be applied (AND operator).

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page and size each page with items_per_page; cf__field_name reaches LearnWorlds under the original spec name. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Users tools: create_user, enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member.

create_userA

๐ŸŸก WRITE ยท creates data ยท POST /v2/users

Creates a new user. The endpoint response is the created User resource.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Users tools: enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member, get_user.

get_userA

๐ŸŸข READ-ONLY ยท GET /v2/users/{id}

Get a user. Returns the user specified by the provided user id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Users tools: enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member, get_user_groups_that_user_is_member.

update_userA

๐ŸŸก WRITE ยท updates data ยท PUT /v2/users/{id}

Updates user information. The endpoint response is the updated User resource.

Behavior: replaces the fields you send on an existing record in the live school. Idempotent: repeating it leaves the same state. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to change an existing record. Read it first so you overwrite just the fields you mean to; use the create tool if it does not exist yet. Related Users tools: enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member, get_user.

get_courses_enrollments_userA

๐ŸŸข READ-ONLY ยท GET /v2/users/{id}/courses

Get courses (enrollments) of user. Returns a list with all course enrollment data of the specified user. The list is paginated, with a limit of 50 course enrollments per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Users tools: enroll_user_product, get_products_user, get_seat_offerings_that_user_is_member, get_user, get_user_groups_that_user_is_member.

get_users_per_courseA

๐ŸŸข READ-ONLY ยท GET /v2/courses/{id}/users

Get all users per course. Retrieves all the users enrolled in the course specified by the provided course id. The users are in sorted order, with the most recently created user appearing first, and the list is paginated, with a default limit of 20 users per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page and size each page with items_per_page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Courses tools: create_course_section, get_contents_course, get_course, get_course_grades, update_course.

create_course_sectionA

๐ŸŸก WRITE ยท creates data ยท POST /v2/courses/{id}/sections

Creates a new course section in the course, specified by the course id. The endpoint response is the course contents including the newly created section.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Courses tools: get_contents_course, get_course, get_course_grades, get_users_per_course, update_course.

get_paymentsA

๐ŸŸข READ-ONLY ยท GET /v2/payments

Get payments. Returns a list with all the payments. The payments are in sorted order, with the most recently created payment appearing first, and the list is paginated, with a default limit of 50 payments per page. To refine the list of payments, there are a number of query params outlined in the following section; In case more than one Query param is provided, then all of them will be applied (AND operator).

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page and size each page with items_per_page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Payments tools: get_invoice_link_per_payment, get_payment.

get_paymentA

๐ŸŸข READ-ONLY ยท GET /v2/payments/{id}

Get payment. Returns information about the payment specified by the provided payment id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Payments tools: get_invoice_link_per_payment, get_payments.

get_contents_courseA

๐ŸŸข READ-ONLY ยท GET /v2/courses/{id}/contents

Get contents of a course. Returns the contents of the course specified by the provided course id. Includes sections and learning activities.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Courses tools: create_course_section, get_course, get_course_grades, get_users_per_course, update_course.

get_leadsA

๐ŸŸข READ-ONLY ยท GET /v2/leads

Get leads. Returns a list with all the leads of the school. The leads are in sorted order, with the most recently created leads appearing first, and the list is paginated, with a limit of 20 leads per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool.

get_products_userA

๐ŸŸข READ-ONLY ยท GET /v2/users/{id}/products

Get products of user. Returns a list with all the products of the user specified by the provided user id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Users tools: enroll_user_product, get_courses_enrollments_user, get_seat_offerings_that_user_is_member, get_user, get_user_groups_that_user_is_member.

update_user_tagsA

๐ŸŸก WRITE ยท updates data ยท PUT /v2/users/{id}/tags

Updates the tags of the user specified by the provided user Id or email. The endpoint response is the updated User resource.

Behavior: replaces the fields you send on an existing record in the live school. Idempotent: repeating it leaves the same state. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to change an existing record. Read it first so you overwrite just the fields you mean to; use the create tool if it does not exist yet. Related Users tools: enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member, get_user.

get_promotions_couponsA

๐ŸŸข READ-ONLY ยท GET /v2/promotions/{pid}/coupons

Get promotions coupons. Returns all coupons for the promotion specified by the provided promotion id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Promotions tools: create_coupon_promotion, get_coupon_usage, create_coupons_promotion_bulk, create_promotion, get_promotion.

create_coupon_promotionA

๐ŸŸก WRITE ยท creates data ยท POST /v2/promotions/{pid}/coupons

Creates a coupon for the promotion specified by the provided promotion id. The endpoint response is the created coupon resource.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Promotions tools: get_coupon_usage, get_promotions_coupons, create_coupons_promotion_bulk, create_promotion, get_promotion.

get_coupon_usageA

๐ŸŸข READ-ONLY ยท GET /v2/promotions/{pid}/coupons/{cid}/usage

Get coupon usage. Returns information about the coupon specified by the provided promotion id and coupon code. More specifically, the coupon usage details are listed along with the asocciated payments.The payments are in sorted order, with the most recently created payment appearing first, and the list is paginated, with a limit of 50 payments per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Promotions tools: create_coupon_promotion, get_promotions_coupons, create_coupons_promotion_bulk, create_promotion, get_promotion.

enroll_user_productA

๐ŸŸก WRITE ยท creates data ยท POST /v2/users/{id}/enrollment

Enroll user to product, regarding course, bundle, manual subscription

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Users tools: unenroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member, get_user.

unenroll_user_productA

๐Ÿ”ด DESTRUCTIVE ยท deletes ยท DELETE /v2/users/{id}/enrollment

Unenroll user from a product specified by the provided product id

Behavior: permanently removes the addressed record from the live school โ€” no undo from this server. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP 200/204, with a body that is usually empty on success. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only after the user confirms the removal. To merely revoke access or deactivate, use the matching ๐ŸŸก update or unenroll tool instead. Related Users tools: enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member, get_user.

get_affiliatesA

๐ŸŸข READ-ONLY ยท GET /v2/affiliates

Get affiliates. Returns a list with all the affiliates of the school. The affiliates are in sorted order, with the most recently created affiliate appearing first, and the list is paginated, with a limit of 20 affiliates per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Affiliates tools: get_affiliate_payments, get_completed_affiliate_payouts, get_customers_per_affiliate, get_due_affiliate_payouts, get_leads_per_affiliate.

get_leads_per_affiliateA

๐ŸŸข READ-ONLY ยท GET /v2/affiliates/{id}/leads

Get all leads per affiliate. Retrieves all the leads connected with the affiliate specified by the provided affiliate id. The leads are in sorted order, with the most recently created lead appearing first, and the list is paginated, with a limit of 20 leads per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Affiliates tools: get_affiliate_payments, get_completed_affiliate_payouts, get_customers_per_affiliate, get_due_affiliate_payouts, get_upcoming_affiliate_payouts.

update_certificate_reissueA

๐ŸŸก WRITE ยท updates data ยท PUT /v2/certificates/{id}

Update a certificate (Reissue). Updates the certificate specified by the provided certificate id.

Behavior: replaces the fields you send on an existing record in the live school. Idempotent: repeating it leaves the same state. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to change an existing record. Read it first so you overwrite just the fields you mean to; use the create tool if it does not exist yet. Related Certificates tools: delete_certificate_revoke_invalidate, get_certificates.

delete_certificate_revoke_invalidateA

๐Ÿ”ด DESTRUCTIVE ยท deletes ยท DELETE /v2/certificates/{id}

Delete a certificate (Revoke / Invalidate). Deletes the certificate specified by the provided certificate id.

Behavior: permanently removes the addressed record from the live school โ€” no undo from this server. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP 200/204, with a body that is usually empty on success. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only after the user confirms the removal. To merely revoke access or deactivate, use the matching ๐ŸŸก update or unenroll tool instead. Related Certificates tools: update_certificate_reissue, get_certificates.

get_promotionsA

๐ŸŸข READ-ONLY ยท GET /v2/promotions

Get promotions. Returns a list with all the promotions of the school. The promotions are in sorted order, with the most recently created promotion appearing first, and the list is paginated, with a limit of 20 promotions per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Promotions tools: create_coupon_promotion, create_coupons_promotion_bulk, create_promotion, get_coupon_usage, get_promotion.

create_promotionA

๐ŸŸก WRITE ยท creates data ยท POST /v2/promotions

Create a new Promotion without coupons. The endpoint response is the created Promotion resource.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Promotions tools: create_coupon_promotion, create_coupons_promotion_bulk, get_coupon_usage, get_promotion, get_promotions.

get_customers_per_affiliateA

๐ŸŸข READ-ONLY ยท GET /v2/affiliates/{id}/customers

Get all customers per affiliate. Retrieves all the customers connected with the affiliate specified by the provided affiliate id. The customers are in sorted order, with the most recently created customer appearing first, and the list is paginated, with a limit of 20 customers per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Affiliates tools: get_affiliate_payments, get_completed_affiliate_payouts, get_due_affiliate_payouts, get_leads_per_affiliate, get_upcoming_affiliate_payouts.

get_affiliate_paymentsA

๐ŸŸข READ-ONLY ยท GET /v2/affiliates/{id}/payments

Get affiliate payments. Returns a list with all the affiliate payments. The payments are in sorted order, with the most recently created payment appearing first, and the list is paginated, with a limit of 50 payments per page. To refine the list of payments, there are a number of query params outlined in the following section; In case more than one Query param is provided, then all of them will be applied (AND operator).

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Affiliates tools: get_completed_affiliate_payouts, get_customers_per_affiliate, get_due_affiliate_payouts, get_leads_per_affiliate, get_upcoming_affiliate_payouts.

get_invoice_link_per_paymentA

๐ŸŸข READ-ONLY ยท GET /v2/payments/{id}/invoice-link

Get invoice link per payment. Returns the invoice number and a private expiring link to acccess the invoice.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Payments tools: get_payment, get_payments.

get_user_progress_per_courseA

๐ŸŸข READ-ONLY ยท GET /v2/users/{id}/courses/{cid}/progress

Get user progress per course. Returns information about the user progress for the user and course specified by the provided user id and course id. The result also includes the breakdown of user progress data per learning activity.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Reporting tools: get_user_progress, get_analytics_course, get_analytics_learning_activity.

get_user_segmentsA

๐ŸŸข READ-ONLY ยท GET /v2/users/segments

Get user segments. Returns a list of all user segments in the school.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Users tools: create_user, enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member.

suspend_userA

๐ŸŸก WRITE ยท updates data ยท PUT /v2/users/{id}/suspend

Suspends a user from loging in or creating another account. The endpoint response is the suspended User resource.

Behavior: replaces the fields you send on an existing record in the live school. Idempotent: repeating it leaves the same state. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to change an existing record. Read it first so you overwrite just the fields you mean to; use the create tool if it does not exist yet. Related Users tools: enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member, get_user.

unsuspend_userA

๐ŸŸก WRITE ยท updates data ยท PUT /v2/users/{id}/unsuspend

Unsuspends a user. The endpoint response is the unsuspended User resource.

Behavior: replaces the fields you send on an existing record in the live school. Idempotent: repeating it leaves the same state. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to change an existing record. Read it first so you overwrite just the fields you mean to; use the create tool if it does not exist yet. Related Users tools: enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member, get_user.

get_certificatesA

๐ŸŸข READ-ONLY ยท GET /v2/certificates

Get certificates. Returns a list with certificates. The certificates are in sorted order, with the most recently created user appearing first, and the list is paginated, with a limit of 20 certificates per page. To refine the list of certificates, there are a number of query params outlined in the following section; In case more than one Query param is provided, then all of them will be applied (AND operator). At least one query parameter is required.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Certificates tools: delete_certificate_revoke_invalidate, update_certificate_reissue.

get_promotionA

๐ŸŸข READ-ONLY ยท GET /v2/promotions/{id}

Get promotion. Returns the promotion specified by the provided promotion id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Promotions tools: create_coupons_promotion_bulk, create_coupon_promotion, create_promotion, get_coupon_usage, get_promotions.

get_users_segmentA

๐ŸŸข READ-ONLY ยท GET /v2/users/by-segment

Get all users by segment. Retrieves all the users in the segment specified by the provided segment id. The users are in sorted order, with the most recently created user appearing first, and the list is paginated, with a limit of 20 user per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Users tools: create_user, enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member.

get_users_productA

๐ŸŸข READ-ONLY ยท GET /v2/users/by-product

Get all users by product. Retrieves all the users with access to the product specified by the provided product id. The users are in sorted order, with the most recently created user appearing first, and the list is paginated, with a limit of 20 users per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Users tools: create_user, enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member.

get_upcoming_affiliate_payoutsA

๐ŸŸข READ-ONLY ยท GET /v2/affiliates/{id}/payouts/upcoming

Get upcoming affiliate payouts. Returns the upcoming payouts specified by the provided affiliate id

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Affiliates tools: get_completed_affiliate_payouts, get_due_affiliate_payouts, get_affiliate_payments, get_customers_per_affiliate, get_leads_per_affiliate.

get_due_affiliate_payoutsA

๐ŸŸข READ-ONLY ยท GET /v2/affiliates/{id}/payouts/due

Get due affiliate payouts. Returns the due payouts related to the provided affiliate

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Affiliates tools: get_completed_affiliate_payouts, get_upcoming_affiliate_payouts, get_affiliate_payments, get_customers_per_affiliate, get_leads_per_affiliate.

get_completed_affiliate_payoutsA

๐ŸŸข READ-ONLY ยท GET /v2/affiliates/{id}/payouts/completed

Get completed affiliate payouts. Returns a list with all the completed payouts related to the provided affiliate. The payouts are in sorted order, with the most recently created payouts appearing first, and the list is paginated, with a limit of 20 payouts per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Affiliates tools: get_due_affiliate_payouts, get_upcoming_affiliate_payouts, get_affiliate_payments, get_customers_per_affiliate, get_leads_per_affiliate.

create_coupons_promotion_bulkA

๐ŸŸก WRITE ยท creates data ยท POST /v2/promotions/{id}/coupons-bulk

Bulk create coupons in a promotion. The endpoint response is an array with the created coupon resources.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Promotions tools: get_promotion, create_coupon_promotion, create_promotion, get_coupon_usage, get_promotions.

get_event_logsA

๐ŸŸข READ-ONLY ยท GET /v2/event-logs

Get event logs. Returns a list with all event logs of the school. The list is paginated, with a limit of 50 event logs per page. To refine the list of event logs, there are a number of query params outlined in the following section; In case more than one Query param is provided, then all of them will be applied (AND operator).

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool.

make_affiliateA

๐ŸŸก WRITE ยท creates data ยท POST /v2/affiliates/{id}

Makes a user specified by the provided user id an affiliate. The endpoint response is the affiliate resource.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Affiliates tools: get_affiliate_payments, get_completed_affiliate_payouts, get_customers_per_affiliate, get_due_affiliate_payouts, get_leads_per_affiliate.

get_user_progressA

๐ŸŸข READ-ONLY ยท GET /v2/users/{id}/progress

Get user progress. Returns information about the user progress, for the user specified by the provided user id, for all courses the user is enrolled in. The result also includes the breakdown of user progress data per learning activity. The list is paginated, with a default limit of 20 course progress data per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page and size each page with items_per_page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Reporting tools: get_user_progress_per_course, get_analytics_course, get_analytics_learning_activity.

get_course_gradesA

๐ŸŸข READ-ONLY ยท GET /v2/courses/{id}/grades

Get course grades. Retrieves the grades of all enrolled users in the course specified by the provided course id. The list is paginated with a limit of 20 grades per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page and size each page with items_per_page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Courses tools: create_course_section, get_contents_course, get_course, get_users_per_course, update_course.

get_assessment_responsesA

๐ŸŸข READ-ONLY ยท GET /v2/assessments/{id}/responses

Get assessment responses. Retrieves all the responses a user has submitted in an assessment, with the most recent submission appearing first. The list is paginated with a limit of 20 responses per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page and size each page with items_per_page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Assessments tools: review_submission_user_s_assessment_submission, get_form_responses.

get_form_responsesA

๐ŸŸข READ-ONLY ยท GET /v2/forms/{id}/responses

Get form responses. Retrieves all the responses a user has submitted in a form, with the most recent submission appearing first. The list is paginated with a limit of 20 responses per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page and size each page with items_per_page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Assessments tools: get_assessment_responses, review_submission_user_s_assessment_submission.

mark_as_completeA

๐ŸŸก WRITE ยท creates data ยท POST /v2/users/{id}/courses/{cid}/complete

Mark as complete. Updates the user's progress on a course or learning activity level as complete.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Update user progress tools: reset_user_progress.

reset_user_progressA

๐ŸŸก WRITE ยท creates data ยท POST /v2/users/{id}/courses/{cid}/reset

Resets the user's progress on a course or learning activity level.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Update user progress tools: mark_as_complete.

get_progress_asynchronous_actionA

๐ŸŸข READ-ONLY ยท GET /v2/async-actions/{id}

Get the progress of an asynchronous action. Returns information about the progress of an asynchronous action.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool.

get_seat_offeringsA

๐ŸŸข READ-ONLY ยท GET /v2/seats

Get all seat offerings. Returns a list of all seat offerings of the school. The seat offerings are in sorted order, with the most recently created appearing first and the list is paginated, with a default limit of 20 users per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Multiple seats tools: add_user_seat_offering, create_seat_offering, delete_seat_offering, get_specific_seat_offering, get_users_seat_offering.

create_seat_offeringA

๐ŸŸก WRITE ยท creates data ยท POST /v2/seats

Creates a new seat offering. The endpoint response is the created Seat offering resource.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Multiple seats tools: add_user_seat_offering, delete_seat_offering, get_seat_offerings, get_specific_seat_offering, get_users_seat_offering.

get_specific_seat_offeringA

๐ŸŸข READ-ONLY ยท GET /v2/seats/{id}

Get a specific seat offering. Returns the seat offering specified by the provided seat offering id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Multiple seats tools: add_user_seat_offering, delete_seat_offering, get_users_seat_offering, remove_user_seat, update_seat_offering.

update_seat_offeringA

๐ŸŸก WRITE ยท updates data ยท PUT /v2/seats/{id}

Updates a seat offering. The endpoint response is the updated seat offering resource.

Behavior: replaces the fields you send on an existing record in the live school. Idempotent: repeating it leaves the same state. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to change an existing record. Read it first so you overwrite just the fields you mean to; use the create tool if it does not exist yet. Related Multiple seats tools: add_user_seat_offering, delete_seat_offering, get_specific_seat_offering, get_users_seat_offering, remove_user_seat.

delete_seat_offeringA

๐Ÿ”ด DESTRUCTIVE ยท deletes ยท DELETE /v2/seats/{id}

Deletes a specific seat offering asynchronously. This endpoint removes a seat offering identified by its unique ID. The deletion request is processed asynchronously, meaning the operation may continue after the initial request is accepted.

Behavior: permanently removes the addressed record from the live school โ€” no undo from this server. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP 200/204, with a body that is usually empty on success. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only after the user confirms the removal. To merely revoke access or deactivate, use the matching ๐ŸŸก update or unenroll tool instead. Related Multiple seats tools: add_user_seat_offering, get_specific_seat_offering, get_users_seat_offering, remove_user_seat, update_seat_offering.

get_users_seat_offeringA

๐ŸŸข READ-ONLY ยท GET /v2/seats/{id}/users

Get all users of seat offering. Retrieves all the users who are members of the seat offering specified by the provided seat offering id. The users are in sorted order, with the most recently created user appearing first, and the list is paginated, with a default limit of 20 users per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Multiple seats tools: add_user_seat_offering, remove_user_seat, delete_seat_offering, get_specific_seat_offering, update_seat_offering.

add_user_seat_offeringA

๐ŸŸก WRITE ยท creates data ยท POST /v2/seats/{id}/users/{uid}

Add a user to the seat offering specified by the provided seat offering id. Additionally there is the option to assign the user a seat in the seat offering.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Multiple seats tools: remove_user_seat, get_users_seat_offering, delete_seat_offering, get_specific_seat_offering, update_seat_offering.

remove_user_seatA

๐Ÿ”ด DESTRUCTIVE ยท deletes ยท DELETE /v2/seats/{id}/users/{uid}

Remove a user from a seat and optionally from the seat offering.

Behavior: permanently removes the addressed record from the live school โ€” no undo from this server. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP 200/204, with a body that is usually empty on success. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only after the user confirms the removal. To merely revoke access or deactivate, use the matching ๐ŸŸก update or unenroll tool instead. Related Multiple seats tools: add_user_seat_offering, get_users_seat_offering, delete_seat_offering, get_specific_seat_offering, update_seat_offering.

get_seat_offerings_that_user_is_memberA

๐ŸŸข READ-ONLY ยท GET /v2/users/{id}/seats

Get seat offerings that a user is member of. Returns a list of all seat offerings that the specified user is a member of.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Users tools: enroll_user_product, get_courses_enrollments_user, get_products_user, get_user, get_user_groups_that_user_is_member.

get_user_groupsA

๐ŸŸข READ-ONLY ยท GET /v2/user_groups

Get all user groups. Returns a list of all user groups of the school. The user groups are in sorted order, with the most recently created appearing first and the list is paginated, with a default limit of 20 users per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related User groups tools: add_user_user_group, create_user_group, deletes_user_group, get_user_group, get_users_user_group.

create_user_groupA

๐ŸŸก WRITE ยท creates data ยท POST /v2/user_groups

Creates a new user group. The endpoint response is the created user group resource.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related User groups tools: add_user_user_group, deletes_user_group, get_user_group, get_user_groups, get_users_user_group.

get_user_groupA

๐ŸŸข READ-ONLY ยท GET /v2/user_groups/{id}

Get a user group. Returns the user group specified by the provided user group id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related User groups tools: add_user_user_group, deletes_user_group, get_users_user_group, remove_user_user_group, update_user_group.

update_user_groupA

๐ŸŸก WRITE ยท updates data ยท PUT /v2/user_groups/{id}

Updates a user group. The endpoint response is the updated user group resource.

Behavior: replaces the fields you send on an existing record in the live school. Idempotent: repeating it leaves the same state. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to change an existing record. Read it first so you overwrite just the fields you mean to; use the create tool if it does not exist yet. Related User groups tools: add_user_user_group, deletes_user_group, get_user_group, get_users_user_group, remove_user_user_group.

deletes_user_groupA

๐Ÿ”ด DESTRUCTIVE ยท deletes ยท DELETE /v2/user_groups/{id}

Deletes a specific user group asynchronously. This endpoint removes a user group identified by its unique ID. The deletion request is processed asynchronously, meaning the operation may continue after the initial request is accepted.

Behavior: permanently removes the addressed record from the live school โ€” no undo from this server. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP 200/204, with a body that is usually empty on success. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only after the user confirms the removal. To merely revoke access or deactivate, use the matching ๐ŸŸก update or unenroll tool instead. Related User groups tools: add_user_user_group, get_user_group, get_users_user_group, remove_user_user_group, update_user_group.

get_users_user_groupA

๐ŸŸข READ-ONLY ยท GET /v2/user_groups/{id}/users

Get users of a user group. Retrieves all the users who are members of the user group specified by the provided group id. The users are in sorted order, with the most recently created user appearing first, and the list is paginated, with a default limit of 20 users per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related User groups tools: add_user_user_group, remove_user_user_group, deletes_user_group, get_user_group, update_user_group.

add_user_user_groupA

๐ŸŸก WRITE ยท creates data ยท POST /v2/user_groups/{id}/users/{uid}

Add a user to a user group.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related User groups tools: remove_user_user_group, get_users_user_group, deletes_user_group, get_user_group, update_user_group.

remove_user_user_groupA

๐Ÿ”ด DESTRUCTIVE ยท deletes ยท DELETE /v2/user_groups/{id}/users/{uid}

Remove a user from a user group.

Behavior: permanently removes the addressed record from the live school โ€” no undo from this server. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP 200/204, with a body that is usually empty on success. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only after the user confirms the removal. To merely revoke access or deactivate, use the matching ๐ŸŸก update or unenroll tool instead. Related User groups tools: add_user_user_group, get_users_user_group, deletes_user_group, get_user_group, update_user_group.

get_user_groups_that_user_is_memberA

๐ŸŸข READ-ONLY ยท GET /v2/users/{id}/user-groups

Get user groups that a user is member of. Returns a list of all user group that the specified user is a member of.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Users tools: enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member, get_user.

get_user_rolesA

๐ŸŸข READ-ONLY ยท GET /v2/user-roles

Get all user roles. Returns a list with all the user roles of the school. The roles are in alphabetical ascending order according to their title.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool.

get_user_role_userA

๐ŸŸข READ-ONLY ยท GET /v2/users/{id}/user-role

Get user role of a user. Returns the user role of the user specified by the provided user id. Includes the assigned resources, if applicable (assigned course(s) for instructor role, assigned user group(s) for user group managers, assigned seat offering(s) for segment manager, assigned segment for reporter roles).

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Users tools: update_user_role_user, enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member.

update_user_role_userA

๐ŸŸก WRITE ยท updates data ยท PUT /v2/users/{id}/user-role

Updates the role assigned to the user.

Behavior: replaces the fields you send on an existing record in the live school. Idempotent: repeating it leaves the same state. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to change an existing record. Read it first so you overwrite just the fields you mean to; use the create tool if it does not exist yet. Related Users tools: get_user_role_user, enroll_user_product, get_courses_enrollments_user, get_products_user, get_seat_offerings_that_user_is_member.

get_community_collectionsA

๐ŸŸข READ-ONLY ยท GET /v2/community/collections

Get all community collections. Returns a list with all community collections of the school. The community collections are in sorted order, with the oldest created collections appearing first

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Community tools: add_invite_users_community_space, create_community_space, delete_community_space, get_community_post, get_community_posts.

get_community_spacesA

๐ŸŸข READ-ONLY ยท GET /v2/community/spaces

Get community spaces. Returns a list with all community spaces of the school. The community spaces are in sorted order, with the oldest created spaces appearing first

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page and size each page with items_per_page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Community tools: add_invite_users_community_space, create_community_space, delete_community_space, get_community_space, get_users_community_space.

create_community_spaceA

๐ŸŸก WRITE ยท creates data ยท POST /v2/community/spaces

Create a community space. The endpoint response is the created community Space resource.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Community tools: add_invite_users_community_space, delete_community_space, get_community_space, get_community_spaces, get_users_community_space.

get_community_spaceA

๐ŸŸข READ-ONLY ยท GET /v2/community/spaces/{id}

Get a community space. Returns information about the community space specified by the provided space id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Community tools: add_invite_users_community_space, delete_community_space, get_users_community_space, remove_user_community_space, update_community_space.

update_community_spaceA

๐ŸŸก WRITE ยท updates data ยท PUT /v2/community/spaces/{id}

Updates the community space specified by the provided space id. The endpoint response is the updated community space resource.

Behavior: replaces the fields you send on an existing record in the live school. Idempotent: repeating it leaves the same state. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to change an existing record. Read it first so you overwrite just the fields you mean to; use the create tool if it does not exist yet. Related Community tools: add_invite_users_community_space, delete_community_space, get_community_space, get_users_community_space, remove_user_community_space.

delete_community_spaceA

๐Ÿ”ด DESTRUCTIVE ยท deletes ยท DELETE /v2/community/spaces/{id}

Deletes the community space specified by the provided space id.

Behavior: permanently removes the addressed record from the live school โ€” no undo from this server. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP 200/204, with a body that is usually empty on success. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only after the user confirms the removal. To merely revoke access or deactivate, use the matching ๐ŸŸก update or unenroll tool instead. Related Community tools: add_invite_users_community_space, get_community_space, get_users_community_space, remove_user_community_space, update_community_space.

get_users_community_spaceA

๐ŸŸข READ-ONLY ยท GET /v2/community/spaces/{id}/users

Get users of a community space. Returns a list with all the users of the space. The users are in sorted order, with the oldest created user appearing first, and the list is paginated, with a default limit of 10 users per page.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page and size each page with items_per_page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Community tools: add_invite_users_community_space, remove_user_community_space, delete_community_space, get_community_space, update_community_space.

add_invite_users_community_spaceA

๐ŸŸก WRITE ยท creates data ยท POST /v2/community/spaces/{id}/users

Add/Invite users to a community space. Adds or invites users to a space. If space has is_invitation_required property set to true then users will be sent an invitation in their inbox to join, otherwise they will be directly added. Returns an array of the affected users, if the user is already in space, the user will not be returned.

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Community tools: get_users_community_space, remove_user_community_space, delete_community_space, get_community_space, update_community_space.

remove_user_community_spaceA

๐Ÿ”ด DESTRUCTIVE ยท deletes ยท DELETE /v2/community/spaces/{id}/users/{uid}

Remove a user from a community space. Removes the user specified by the provided user id from the provide space id.

Behavior: permanently removes the addressed record from the live school โ€” no undo from this server. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP 200/204, with a body that is usually empty on success. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only after the user confirms the removal. To merely revoke access or deactivate, use the matching ๐ŸŸก update or unenroll tool instead. Related Community tools: add_invite_users_community_space, get_users_community_space, delete_community_space, get_community_space, update_community_space.

get_community_postsA

๐ŸŸข READ-ONLY ยท GET /v2/community/posts

Get community posts. Returns a list with all the posts of the school community. The post are in sorted order, with the most recently created post appearing first, and the list is paginated, with a default limit of 10 posts per page. To refine the list of posts, there are a number of query params outlined in the following section; In case more than one Query param is provided, then all of them will be applied (AND operator).

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: results are paged โ€” walk them with page and size each page with items_per_page. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Community tools: get_community_post, add_invite_users_community_space, create_community_space, delete_community_space, get_community_collections.

get_community_postA

๐ŸŸข READ-ONLY ยท GET /v2/community/posts/{id}

Get a community post. Returns information about the community post specified by the provided post id.

Behavior: read-only lookup against the live school; creates, changes and deletes nothing. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: safe to call speculatively for lookups and reporting. Not for changing anything โ€” use the matching ๐ŸŸก write tool. Related Community tools: get_community_posts, add_invite_users_community_space, create_community_space, delete_community_space, get_community_collections.

review_submission_user_s_assessment_submissionA

๐ŸŸก WRITE ยท creates data ยท POST /v2/assessments/scores/{id}/review

Review the submission of a user's assessment submission. Updates the grades and feedback for each delivered question in an assessment submission and calculates the new grades

Behavior: creates a record or triggers an action in the live school. Not idempotent: a repeated call can duplicate the effect. Auth (admin API token + Lw-Client id) is injected server-side, never by the model; calls are throttled to stay under LearnWorlds' 30-per-10s cap and retried on 429/5xx. Parameters: the whole JSON payload goes in the single body argument, forwarded verbatim (the spec leaves body optional, but this endpoint expects one). Returns: HTTP <status> followed by the LearnWorlds JSON response body. A non-2xx reply surfaces as a tool error with that status and the API error payload โ€” 401 bad/expired token, 403 not permitted, 404 no such record, 422 rejected input. Use when: only when the user asked to create this. Check with a ๐ŸŸข read tool that the target exists and the record is not already there. Related Assessments tools: get_assessment_responses, get_form_responses.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ohneben/Learnworlds-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server