LearnWorlds Payments API

Read payments, subscriptions, and transactions.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/learnworlds-payments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

learnworlds-payments-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: LearnWorlds Courses Payments API
  description: 'The LearnWorlds API (v2) is a REST API for programmatically managing an online school on the LearnWorlds course / LMS platform. It exposes school entities - users, courses, enrollments, subscriptions, payments, course progress, tags, bundles, certificates, and webhooks - over HTTPS. The API is served per-school from https://{school}.learnworlds.com/admin/api/v2 and is authenticated with OAuth2 (client credentials): a bearer access token is obtained from the school''s token endpoint and every request also carries the Lw-Client header identifying the client (school) application. API and Webhook access is a plan-gated feature (Learning Center and High Volume & Corporate plans). Version 1 of the API is deprecated. Exact request/response schemas and the full endpoint catalog live in the official reference at learnworlds.dev; the paths modeled here are grounded in the public documentation, help center, and the official API wrapper, and should be reconciled against the live reference.'
  version: '2.0'
  contact:
    name: LearnWorlds
    url: https://www.learnworlds.dev
  license:
    name: Proprietary
    url: https://www.learnworlds.com/terms-of-service/
servers:
- url: https://{school}.learnworlds.com/admin/api/v2
  description: Per-school API base URL
  variables:
    school:
      default: yourschool
      description: The subdomain / school identifier of your LearnWorlds academy.
security:
- oauth2ClientCredentials: []
  lwClient: []
tags:
- name: Payments
  description: Read payments, subscriptions, and transactions.
paths:
  /payments:
    get:
      operationId: listPayments
      tags:
      - Payments
      summary: List payments
      description: Lists payment transactions for the school. A payment may include multiple products (for cart orders and bundle purchases).
      parameters:
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/ItemsPerPage'
      responses:
        '200':
          description: A paginated list of payments.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentList'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /subscriptions:
    get:
      operationId: listSubscriptions
      tags:
      - Payments
      summary: List subscriptions
      description: Lists the school's subscriptions, including status and billing period.
      parameters:
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/ItemsPerPage'
      responses:
        '200':
          description: A paginated list of subscriptions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionList'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    PaymentList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Payment'
        meta:
          $ref: '#/components/schemas/Pagination'
    Error:
      type: object
      properties:
        success:
          type: boolean
          example: false
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              message:
                type: string
    SubscriptionList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Subscription'
        meta:
          $ref: '#/components/schemas/Pagination'
    Payment:
      type: object
      properties:
        id:
          type: string
        user_id:
          type: string
        amount:
          type: number
        currency:
          type: string
        products:
          type: array
          description: Products included in the payment (cart orders and bundle purchases can include several).
          items:
            type: object
            additionalProperties: true
        gateway:
          type: string
        created:
          type: integer
    Subscription:
      type: object
      properties:
        id:
          type: string
        user_id:
          type: string
        plan_id:
          type: string
        status:
          type: string
          enum:
          - active
          - trialing
          - cancelled
          - past_due
        current_period_end:
          type: integer
        created:
          type: integer
    Pagination:
      type: object
      properties:
        page:
          type: integer
        total_items:
          type: integer
        items_per_page:
          type: integer
        total_pages:
          type: integer
  parameters:
    ItemsPerPage:
      name: items_per_page
      in: query
      required: false
      description: The number of items to return per page.
      schema:
        type: integer
        default: 50
    Page:
      name: page
      in: query
      required: false
      description: The page number to retrieve.
      schema:
        type: integer
        default: 1
  responses:
    Unauthorized:
      description: Missing or invalid access token or Lw-Client header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    oauth2ClientCredentials:
      type: oauth2
      description: 'OAuth2 client credentials flow. Exchange your client_id and client_secret for a bearer access token at the school token endpoint, then pass it as Authorization: Bearer ACCESS_TOKEN.'
      flows:
        clientCredentials:
          tokenUrl: https://yourschool.learnworlds.com/admin/api/oauth2/access_token
          scopes: {}
    lwClient:
      type: apiKey
      in: header
      name: Lw-Client
      description: Client identifier header sent on every request alongside the bearer token. Its value is your API client_id.