Teachable Enrollments API

Enrollment management endpoints

Business capability
Enrolment & Registration BC-4720.10

Operations 3

GET /courses/{course_id}/enrollments List course enrollments #
POST /enroll Enroll a user #
POST /unenroll Unenroll a user #

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/teachable-enrollments-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

teachable-enrollments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Teachable Admin Enrollments API
  description: REST API for managing Teachable school data including courses, users, enrollments, quiz responses, pricing plans, transactions, and webhooks. Authenticated via API key header and available on Growth plan and above.
  version: '1'
  contact:
    name: Teachable Support
    url: https://support.teachable.com
    email: support@teachable.com
  termsOfService: https://teachable.com/terms-of-use
servers:
- url: https://developers.teachable.com/v1
  description: Teachable Admin API
security:
- ApiKeyAuth: []
tags:
- name: Enrollments
  description: Enrollment management endpoints
paths:
  /courses/{course_id}/enrollments:
    get:
      operationId: listCourseEnrollments
      summary: List course enrollments
      description: Return enrollments for a specific course.
      tags:
      - Enrollments
      parameters:
      - name: course_id
        in: path
        required: true
        description: Return enrollments for a specific course by the unique course ID.
        schema:
          type: integer
          format: int32
          minimum: 1
      - name: enrolled_in_after
        in: query
        description: Filters for students who enrolled after a specified timestamp.
        schema:
          type: string
          format: date-time
      - name: enrolled_in_before
        in: query
        description: Filters for students who enrolled before a specified timestamp.
        schema:
          type: string
          format: date-time
      - name: sort_direction
        in: query
        description: Enrollments are sorted by the 'enrolled_at' datetime.
        schema:
          type: string
          enum:
          - asc
          - desc
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnrollmentsListResponse'
        '404':
          description: Course not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /enroll:
    post:
      operationId: enrollUser
      summary: Enroll a user
      description: Enroll a user in a course.
      tags:
      - Enrollments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - user_id
              - course_id
              properties:
                user_id:
                  type: integer
                  format: int32
                  description: The unique ID of the user.
                course_id:
                  type: integer
                  format: int32
                  description: The unique ID of the course.
      responses:
        '204':
          description: User enrolled successfully
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /unenroll:
    post:
      operationId: unenrollUser
      summary: Unenroll a user
      description: Remove a user's enrollment from a course.
      tags:
      - Enrollments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - user_id
              - course_id
              properties:
                user_id:
                  type: integer
                  format: int32
                  description: The unique ID of the user.
                course_id:
                  type: integer
                  format: int32
                  description: The unique ID of the course.
      responses:
        '204':
          description: User unenrolled successfully
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    EnrollmentSummary:
      type: object
      properties:
        user_id:
          type: integer
          description: Unique ID of the enrolled user.
        enrolled_at:
          type: string
          format: date-time
          description: Datetime of enrollment in ISO8601.
        expires_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Datetime enrollment expires, if applicable.
        completed_at:
          type:
          - string
          - 'null'
          format: date-time
          description: Datetime course was completed, if applicable.
        percent_complete:
          type: integer
          description: Percentage of course completed.
    EnrollmentsListResponse:
      type: object
      properties:
        enrollments:
          type: array
          items:
            $ref: '#/components/schemas/EnrollmentSummary'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    PaginationMeta:
      type: object
      properties:
        total:
          type: integer
          description: Total number of items.
        page:
          type: integer
          description: Current page number.
        from:
          type: integer
          description: First item position on current page.
        to:
          type: integer
          description: Last item position on current page.
        per_page:
          type: integer
          description: Number of items per page.
        number_of_pages:
          type: integer
          description: Total number of pages.
    ErrorResponse:
      type: object
      properties:
        message:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
          description: Error message or array of error messages.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apiKey
      description: API key for Admin API authentication. Available on Growth plan and above.