Thinkific Instructors API

Instructors operations

Operations 5

GET /instructors Get Instructors #
POST /instructors Create instructor #
GET /instructors/{id} Get Instructor by ID #
PUT /instructors/{id} Update instructor #
DELETE /instructors/{id} Delete instructor #

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/thinkific-instructors-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

thinkific-instructors-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Thinkific Admin Bundles Instructors API
  description: Thinkific's public API can be used to integrate your application with your Thinkific site.
  termsOfService: https://www.thinkific.com/legal/
  contact:
    email: developers@thinkific.com
  version: v1
servers:
- url: https://api.thinkific.com/api/public/v1
security:
- OAuthAccessToken: []
- ApiKey: []
  ApiKeySubdomain: []
tags:
- name: Instructors
  description: Instructors operations
paths:
  /instructors:
    get:
      tags:
      - Instructors
      summary: Get Instructors
      description: Retrieve a list of Instructors
      operationId: getInstructors
      parameters:
      - name: page
        in: query
        description: The page within the collection to fetch.
        schema:
          type: number
          default: 1.0
      - name: limit
        in: query
        description: The number of items to be returned.
        schema:
          type: number
          default: 25.0
      responses:
        200:
          description: Instructors response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetInstructorsResponse'
        403:
          $ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse'
    post:
      tags:
      - Instructors
      summary: Create instructor
      description: 'Creates a new Instructor '
      operationId: createInstructor
      requestBody:
        description: New instructor attributes
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstructorRequest'
        required: true
      responses:
        201:
          description: Instructor response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstructorResponse'
        403:
          $ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse'
        422:
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityError'
              example:
                errors:
                  last_name:
                  - can't be blank
      x-codegen-request-body-name: body
  /instructors/{id}:
    get:
      tags:
      - Instructors
      summary: Get Instructor by ID
      description: Returns the Instructor identified by the provided id.
      operationId: getInstructorByID
      parameters:
      - name: id
        in: path
        description: ID of the Instructor in the form of an integer.
        required: true
        schema:
          type: number
      responses:
        200:
          description: Instructor response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstructorResponse'
        403:
          $ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse'
        404:
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorNotFound'
    put:
      tags:
      - Instructors
      summary: Update instructor
      description: Updates the Instructor identified by the provided id
      operationId: updateInstructor
      parameters:
      - name: id
        in: path
        description: ID of the Instructor in the form of an integer
        required: true
        schema:
          type: number
      requestBody:
        description: New instructor attributes
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstructorRequest'
        required: true
      responses:
        204:
          description: Instructor Updated
        403:
          $ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse'
        404:
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorNotFound'
        422:
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityError'
              example:
                errors:
                - Instructor could not be found
      x-codegen-request-body-name: body
    delete:
      tags:
      - Instructors
      summary: Delete instructor
      description: Delete the Instructor identified by the provided id
      operationId: deleteInstructorByID
      parameters:
      - name: id
        in: path
        description: ID of the Instructor in the form of an integer
        required: true
        schema:
          type: number
      responses:
        204:
          description: Instructor deleted
        403:
          $ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse'
        404:
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorNotFound'
components:
  schemas:
    ValidationError:
      type: object
      properties:
        field_name:
          type: string
          description: validation error
    Meta:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
    ErrorForbiddenAppsNotAvailable:
      type: object
      properties:
        error:
          type: string
          description: access forbidden
      example:
        error: Access to Apps is not available on your plan. Upgrade to gain access
    UnprocessableEntityError:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
    Pagination:
      type: object
      properties:
        current_page:
          type: number
          description: Current page number
          example: 1.0
        next_page:
          type: number
          description: Next page number
          example: 2.0
        prev_page:
          type: number
          description: Previous page number
        total_pages:
          type: number
          description: Number of total pages
          example: 10.0
        total_items:
          type: number
          description: Number of total items
          example: 250.0
        entries_info:
          type: string
          description: Entries info
          example: 1-10 of 10
      description: Pagination metadata
    InstructorRequest:
      required:
      - first_name
      - last_name
      - slug
      type: object
      properties:
        user_id:
          type: number
          description: The ID of the User owning the Instructor
          example: 12.0
        title:
          type: string
          description: The title of the Instructor
          example: Mr.
        first_name:
          type: string
          description: The first name of the Instructor
          example: Bob
        last_name:
          type: string
          description: The last name of the Instructor
          example: Jones
        bio:
          type: string
          description: The bio of the Instructor
          example: Bob Jones is an instructor of note.
        slug:
          type: string
          description: 'The slug of the Instructor NOTE: This will be removed in future API versions'
          example: bob
        avatar_url:
          type: string
          description: The fully-qualified url of the Instructor's avatar
          example: https://example.com/avatar.png
        email:
          type: string
          description: The email of the Instructor
          example: bob_jones@example.com
    GetInstructorsResponse:
      required:
      - items
      - meta
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/InstructorResponse'
        meta:
          $ref: '#/components/schemas/Meta'
    ErrorNotFound:
      type: object
      properties:
        error:
          type: string
          description: item not found error
      example:
        error: Record not found.
    InstructorResponse:
      required:
      - created_at
      - first_name
      - id
      - last_name
      type: object
      properties:
        id:
          type: number
          description: The ID of the Instructor as an integer.
          example: 1.0
        user_id:
          type: number
          description: The ID of the User owning the Instructor
          example: 12.0
        title:
          type: string
          description: The title of the Instructor
          example: Mr.
        first_name:
          type: string
          description: The first name of the Instructor.
          example: My Course
        last_name:
          type: string
          description: The last name of the Instructor.
          example: My Course
        bio:
          type: string
          description: The bio of the Instructor
          example: Bob Jones is an instructor of note.
        slug:
          type: string
          description: 'The slug of the Instructor NOTE: This will be removed in future API versions'
          example: bob
        avatar_url:
          type: string
          description: The fully-qualified url of the Instructor's avatar
          example: https://example.com/avatar.png
        email:
          type: string
          description: The email of the Instructor
          example: bob_jones@example.com
        created_at:
          type: string
          description: The date/time that the Instructor was created.
  responses:
    ErrorForbiddenAppsNotAvailableResponse:
      description: Access Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorForbiddenAppsNotAvailable'
  securitySchemes:
    OAuthAccessToken:
      type: http
      scheme: bearer
    ApiKey:
      type: apiKey
      in: header
      name: X-Auth-API-Key
      description: Used together with ApiKeySubdomain
    ApiKeySubdomain:
      type: apiKey
      in: header
      name: X-Auth-Subdomain
      description: Used together with ApiKey
externalDocs:
  description: Find out more about Thinkifc's API
  url: http://developers.thinkific.com/api/api-documentation/