Cloud Academy Learning Management System API

The Learning Management System API from Cloud Academy — 9 operation(s) for learning management system.

Operations 9

GET /v1/content/catalog/ Access the QA Platform content catalog, with pagination [DEPRECATED] #
GET /v1/content/entity/ Access to a specific QA Platform content [DEPRECATED] #
GET /v2/company/progress/ Retrieve content progress for your organization member by member #
GET /v2/content/catalog/ Access the QA Platform content catalog, with pagination #
GET /v2/content/entity/ Access to a specific QA Platform content #
GET /v2/user/progress/ Show the progress of the currently logged in user [DEPRECATED] #
GET /v2/user/{user_id}/progress/ Shows the progress of a specific user given their user_id [DEPRECATED] #
GET /v3/user/progress/ Show the progress of the currently logged in user #
GET /v3/user/{user_id}/progress/ Shows the progress of a specific user given their user_id #

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/cloud-academy-learning-management-system-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

cloud-academy-learning-management-system-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: QA Learning Management System API
  description: "\n## Keys for QA API\n\nQA uses API keys to authenticate calls to its API.\n\nThe Authentication used is OAuth2 with client credential flow; Note that the SSL channel securely encrypts your keys pair.\n\n## How to find or generate Your API Key\n\nFor integrating with the QA API, you need to generate an API key pairs. Enterprise members with Admin permissions can generate and view their own API keys on the settings area of their Company Account [here](https://platform.qa.com/organizations/settings/api/).\n\nNote that each admin comes with his distinct API keys pair.\n\n## Revoking and Regenerating an API keys pair\n\nAt any time, an admin can generate new API keys pairs; by going through this step, the previous keys pair is revoked.\n\n## How to authenticate API calls using the keys pair\n\nIn order to authenticate API calls each request needs to provide a valid access token. \n\nTo generate a token, a dedicated endpoint exists:\n\n__https://platform.qa.com/oauth2/token/__\n\nThe token generation endpoint accepts a POST call and works using Basic Authentication where the user and the password to be provided are the API keys:\n\nusername is the CLIENT_ID\npassword is the CLIENT_SECRET\n\nIn addition to requiring the CLIENT_ID and CLIENT_SECRET for the authorization header, the API also requires the content-type to be set to 'application/x-www-form-urlencoded' and the body must contain 'grant_type=client_credentials'.\n\nThis is an example of the token generation in cURL:\n\n```bash\ncurl 'https://platform.qa.com/oauth2/token/' \n  -H 'accept: application/json'\n  -H 'authorization: Basic [YOUR_CLIENT_ID:YOUR_CLIENT_SECRET]'\n  -H 'content-type: application/x-www-form-urlencoded'\n  --data-raw 'grant_type=client_credentials'\n```\n\nThe token has a limited duration of 10 hours, so it could be cached to be reused and renewed when it expires, but it is also perfectly fine to generate a new one before each API call.\n\n## Get Help\nIn case of issues, more info can be found in the following [article](https://support.cloudacademy.com/hc/en-us/articles/360040446031-Cloud-Academy-API)\n"
  version: v1
servers:
- url: https://platform.qa.com/restapi
security:
- oauth2: []
tags:
- name: Learning Management System
paths:
  /v1/content/catalog/:
    parameters: []
    get:
      operationId: v1_content_catalog_list
      summary: Access the QA Platform content catalog, with pagination [DEPRECATED]
      description: '

        ## Description

        This API returns a catalog of the items in the QA Platform library, including the custom content your company created in Content Engine.

        This API is deprecated: please use /v2/content/catalog/ instead.

        '
      parameters:
      - name: page[number]
        in: query
        description: A page number within the paginated result set.
        required: false
        schema:
          type: integer
      - name: page[size]
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      - name: filter[content_type]
        in: query
        description: '[Optional] A comma-separated list of content types to limit the returned catalog.

          Here the possible values:

          - lp

          - course

          - quiz

          - exam

          - resource

          - lab

          - labchallenge



          e.g.: https://...&filter[content_type]=course,labchallenge'
        schema:
          type: string
      - name: additional_fields
        in: query
        description: '[Optional] A comma-separated list of additional fields that can be shown in the catalog.

          Please note: using these parameters can affect performances.

          Here the possible values:

          - description: represents the full description of the content

          - skills: this will includes information about platforms and skills related to the content


          e.g.: https://...&additional_fields=skills,description'
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/vnd.api+json:
              schema:
                title: body
                required:
                - data
                type: object
                properties:
                  data:
                    title: data
                    type: array
                    items:
                      required:
                      - attributes
                      - type
                      - id
                      type: object
                      properties:
                        attributes:
                          title: attributes
                          required: []
                          type: object
                          properties:
                            items:
                              title: items
                              type: array
                              items:
                                type: object
                                properties:
                                  content_type:
                                    title: content_type
                                    type: string
                                  content_type_label:
                                    title: content_type_label
                                    type: string
                                  description:
                                    title: description
                                    type: string
                                  difficulty_level:
                                    title: difficulty_level
                                    type: string
                                  duration:
                                    title: duration
                                    type: number
                                  entity_id:
                                    title: entity_id
                                    type: string
                                  platforms:
                                    title: platforms
                                    type: array
                                    items:
                                      type: object
                                      properties:
                                        id:
                                          title: id
                                          type: number
                                        name:
                                          title: name
                                          type: string
                                  publish_date:
                                    title: publish_date
                                    type: string
                                    format: date-time
                                  short_description:
                                    title: short_description
                                    type: string
                                  skills:
                                    title: skills
                                    type: array
                                    items:
                                      type: object
                                      properties:
                                        id:
                                          title: id
                                          type: number
                                        name:
                                          title: name
                                          type: string
                                        slug:
                                          title: slug
                                          type: string
                                  title:
                                    title: title
                                    type: string
                                  url:
                                    title: url
                                    type: string
                        id:
                          title: id
                          type: string
                        links:
                          title: links
                          type: object
                          properties:
                            self:
                              title: schema
                              type: string
                              format: uri
                        type:
                          title: type
                          type: string
                          example: catalog
                  links:
                    title: links
                    type: object
                    properties:
                      first:
                        title: first
                        type: string
                        format: uri
                      last:
                        title: last
                        type: string
                        format: uri
                      next:
                        title: next
                        type: string
                        format: uri
                      prev:
                        title: prev
                        type: string
                        format: uri
                  meta:
                    title: meta
                    type: object
                    properties:
                      pagination:
                        title: pagination
                        type: object
                        properties:
                          count:
                            title: count
                            type: integer
                            format: int32
                          page:
                            title: page
                            type: integer
                            format: int32
                          pages:
                            title: pages
                            type: integer
                            format: int32
        '401':
          description: Executing the request without credentials.
          content:
            body:
              example:
                errors:
                - detail: Authentication credentials were not provided.
                  source:
                    pointer: /data
                  status: '401'
        '404':
          description: Catalog not found
          content:
            body:
              example:
                errors:
                - detail: Searched catalog does not exist
                  source:
                    pointer: /data
                  status: '404'
        '500':
          description: Internal server error.
          content:
            body:
              example:
                errors:
                - detail: Internal server error.
                  source:
                    pointer: /data
                  status: '500'
        '503':
          description: Service unavailable.
          content:
            body:
              example:
                errors:
                - detail: The service is temporary unavailable. Please try again later.
                  source:
                    pointer: /data
                  status: '503'
      tags:
      - Learning Management System
  /v1/content/entity/:
    parameters: []
    get:
      operationId: v1_content_get_entity
      summary: Access to a specific QA Platform content [DEPRECATED]
      description: '

        ## Description

        This API returns a specific content of the QA Platform library.

        This API is deprecated: please use /v2/content/entity/ instead.

        '
      parameters:
      - name: filter[uuid]
        in: query
        description: uuid of the content
        required: true
        schema:
          type: string
      - name: filter[content_type]
        in: query
        description: '[Optional] Limit the search on the given content type.

          Here the possible values (you can pick only one):

          - lp

          - course

          - quiz

          - exam

          - resource

          - lab

          - labchallenge



          e.g.: https://...&filter[content_type]=course,labchallenge'
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/vnd.api+json:
              schema:
                title: body
                required:
                - data
                type: object
                properties:
                  data:
                    title: data
                    required:
                    - attributes
                    - type
                    - id
                    type: object
                    properties:
                      attributes:
                        title: attributes
                        required: []
                        type: object
                        properties:
                          content_type:
                            title: entity_type
                            type: string
                          content_type_label:
                            title: content_type_label
                            type: string
                          description:
                            title: description
                            type: string
                          difficulty_level:
                            title: difficulty_level
                            type: string
                          duration:
                            title: duration
                            type: number
                          entity_id:
                            title: entity_id
                            type: string
                          platforms:
                            title: platforms
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  title: id
                                  type: number
                                name:
                                  title: name
                                  type: string
                          publish_date:
                            title: publish_date
                            type: string
                            format: date-time
                          short_description:
                            title: short_description
                            type: string
                          skills:
                            title: skills
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  title: id
                                  type: number
                                name:
                                  title: name
                                  type: string
                                slug:
                                  title: slug
                                  type: string
                          title:
                            title: title
                            type: string
                          url:
                            title: url
                            type: string
                      id:
                        title: id
                        type: string
                      links:
                        title: links
                        type: object
                        properties:
                          self:
                            title: schema
                            type: string
                            format: uri
                      type:
                        title: type
                        type: string
                        example: content
        '401':
          description: Executing the request without credentials.
          content:
            body:
              example:
                errors:
                - detail: Authentication credentials were not provided.
                  source:
                    pointer: /data
                  status: '401'
        '404':
          description: Content not found
          content:
            body:
              example:
                errors:
                - detail: Searched content does not exist
                  source:
                    pointer: /data
                  status: '404'
        '500':
          description: Internal server error.
          content:
            body:
              example:
                errors:
                - detail: Internal server error.
                  source:
                    pointer: /data
                  status: '500'
        '503':
          description: Service unavailable.
          content:
            body:
              example:
                errors:
                - detail: The service is temporary unavailable. Please try again later.
                  source:
                    pointer: /data
                  status: '503'
      tags:
      - Learning Management System
  /v2/company/progress/:
    parameters: []
    get:
      operationId: v2_company_progress_list
      summary: Retrieve content progress for your organization member by member
      description: "\n## Description\nThis API will return a list of the members of the company with a link with their own progress.\nThe API does not apply any default pagination. Thus, `links` and `meta` keys in the response are optional and will appear only if a pagination is explicitly applied.  \nNote: Please bear in mind that the data retrieved is updated every hour and not in real time.\n"
      parameters:
      - name: filter[first_name]
        in: query
        description: ''
        required: false
        schema:
          type: string
      - name: filter[first_name__in]
        in: query
        description: Multiple values may be separated by commas.
        required: false
        schema:
          type: string
      - name: filter[last_name]
        in: query
        description: ''
        required: false
        schema:
          type: string
      - name: filter[last_name__in]
        in: query
        description: Multiple values may be separated by commas.
        required: false
        schema:
          type: string
      - name: filter[email]
        in: query
        description: ''
        required: false
        schema:
          type: string
      - name: filter[email__in]
        in: query
        description: Multiple values may be separated by commas.
        required: false
        schema:
          type: string
      - name: sort
        in: query
        description: Which field to use when ordering the results.
        required: false
        schema:
          type: string
      - name: page[number]
        in: query
        description: A page number within the paginated result set.
        required: false
        schema:
          type: integer
      - name: page[size]
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/vnd.api+json:
              schema:
                title: body
                required:
                - data
                type: object
                properties:
                  data:
                    title: data
                    type: array
                    items:
                      required:
                      - attributes
                      - type
                      - id
                      type: object
                      properties:
                        attributes:
                          title: attributes
                          required: []
                          type: object
                          properties:
                            email:
                              title: email
                              type: string
                              format: email
                            first_name:
                              title: first_name
                              type: string
                            last_name:
                              title: last_name
                              type: string
                        id:
                          title: id
                          type: string
                        links:
                          title: links
                          type: object
                          properties:
                            self:
                              title: schema
                              type: string
                              format: uri
                        type:
                          title: type
                          type: string
                          example: company_membership_progress
                  links:
                    title: links
                    type: object
                    properties:
                      first:
                        title: first
                        type: string
                        format: uri
                      last:
                        title: last
                        type: string
                        format: uri
                      next:
                        title: next
                        type: string
                        format: uri
                      prev:
                        title: prev
                        type: string
                        format: uri
                  meta:
                    title: meta
                    type: object
                    properties:
                      pagination:
                        title: pagination
                        type: object
                        properties:
                          count:
                            title: count
                            type: integer
                            format: int32
                          page:
                            title: page
                            type: integer
                            format: int32
                          pages:
                            title: pages
                            type: integer
                            format: int32
        '401':
          description: Executing the request without credentials.
          content:
            body:
              example:
                errors:
                - detail: Authentication credentials were not provided.
                  source:
                    pointer: /data
                  status: '401'
        '500':
          description: Internal server error.
          content:
            body:
              example:
                errors:
                - detail: Internal server error.
                  source:
                    pointer: /data
                  status: '500'
        '503':
          description: Service unavailable.
          content:
            body:
              example:
                errors:
                - detail: The service is temporary unavailable. Please try again later.
                  source:
                    pointer: /data
                  status: '503'
      tags:
      - Learning Management System
  /v2/content/catalog/:
    parameters: []
    get:
      operationId: v2_content_catalog_list
      summary: Access the QA Platform content catalog, with pagination
      description: "\n## Description\nThis API returns a catalog of the items in the QA Platform library, including the custom content your company created in Content Engine.\nThis API replaces /v1/content/catalog/ to adhere to the new content terminology. The functionality remains the same. \n"
      parameters:
      - name: page[number]
        in: query
        description: A page number within the paginated result set.
        required: false
        schema:
          type: integer
      - name: page[size]
        in: query
        description: Number of results to return per page.
        required: false
        schema:
          type: integer
      - name: filter[content_type]
        in: query
        description: '[Optional] A comma-separated list of content types to limit the returned catalog.

          Here the possible values:

          - course

          - lesson

          - quiz

          - exam

          - resource

          - lab

          - labchallenge



          e.g.: https://...&filter[content_type]=lesson,labchallenge'
        schema:
          type: string
      - name: filter[content_status]
        in: query
        description: '[Optional] A comma-separated list of content statuses to limit the returned catalog.

          Here the possible values:

          - archived

          - outdated

          - published

          - unpublished

          - draft



          e.g.: https://...&filter[content_status]=published,outdated'
        schema:
          type: string
      - name: filter[is_public]
        in: query
        description: '[Optional] A boolean flag to limit the returned catalog to public or non-public content. If omitted, both are returned.

          Here the possible values:

          - true

          - false



          e.g.: https://...&filter[is_public]=true'
        schema:
          type: boolean
      - name: additional_fields
        in: query
        description: '[Optional] A comma-separated list of additional fields that can be shown in the catalog.

          Please note: using these parameters can affect performances.

          Here the possible values:

          - description: represents the full description of the content

          - skills: this will includes information about platforms and skills related to the content


          - content_status: represents the status of the content


          - is_public: tells if content is public or not


          e.g.: https://...&additional_fields=skills,description,content_status,is_public'
        schema:
          type: string
      - name: filter[publish_date_gte]
        in: query
        description: '[Optional] Publish date of the content greater than or equal to the given date-time value.

          '
        schema:
          type: string
          format: date-time
      - name: filter[publish_date_lte]
        in: query
        description: '[Optional] Publish date of the content less than or equal to the given date-time value.

          '
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: ''
          content:
            application/vnd.api+json:
              schema:
                title: body
                required:
                - data
                type: object
                properties:
                  data:
                    title: data
                    type: array
                    items:
                      required:
                      - attributes
                      - type
                      - id
                      type: object
                      properties:
                        attributes:
                          title: attributes
                          required: []
                          type: object
                          properties:
                            items:
                              title: items
                              type: array
                              items:
                                type: object
                                properties:
                                  content_status:
                                    title: content_status
                                    type: string
                                  content_type:
                                    title: content_type
                                    type: string
                                  content_type_label:
                                    title: content_type_label
                                    type: string
                                  description:
                                    title: description
                                    type: string
                                  difficulty_level:
                                    title: difficulty_level
                                    type: string
                                  duration:
                                    title: duration
                                    type: number
                                  entity_id:
                                    title: entity_id
                                    type: string
                                  image_url:
                                    title: image_url
                                    type: string
                                  is_public:
                                    title: is_public
                                    type: boolean
                                  platforms:
                                    title: platforms
                                    type: array
                                    items:
                                      type: object
                                      properties:
                                        id:
                                          title: id
                                          type: number
                                        name:
                                          title: name
                                          type: string
                                  publish_date:
                                    title: publish_date
                                    type: string
                                    format: date-time
                                  short_description:
                                    title: short_description
                                    type: string
                                  skills:
                                    title: skills
                                    type: array
                                    items:
                                      type: object
                                      properties:
                                        id:
                                          title: id
                                          type: number
                                        name:
                                          title: name
                                          type: string
                                        slug:
                                          title: slug
                                          type: string
                                  title:
                                    title: title
                                    type: string
                                  url:
                                    title: url
                                    type: string
                        id:
                          title: id
                          type: string
                        links:
                          title: links
                          type: object
                          properties:
                            self:
                              title: schema
                              type: string
                              format: uri
                        type:
                          title: type
                          type: string
                          example: catalog
                  links:
                    title: links
                    type: object
                    properties:
                      first:
                        title: first
                        type: string
                        format: uri
                      last:
                        title: last
                        type: string
                        format: uri
                      next:
                        title: next
                        type: string
                        format: uri
                      prev:
                        title: prev
                        type: string
                        format: uri
                  meta:
                    title: meta
                    type: object
                    properties:
                      pagination:
                        title: pagination
                        type: object
                        properties:
                          count:
                            title: count
                            type: integer
                            form

# --- truncated at 32 KB (69 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cloud-academy/refs/heads/main/openapi/cloud-academy-learning-management-system-api-openapi.yml