Adaptive Security Training API

BETATraining campaign and activity endpoints

Business capability
Security Awareness Management BC-620.60

Operations 3

GET /v2/training/campaigns List training campaigns #
GET /v2/training/campaigns/enrollments Get training campaign enrollments details #
GET /v2/training/campaigns/{campaignId} Get training campaign details #

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/adaptive-security-training-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

adaptive-security-training-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Adaptive API for external integrations.
  title: Adaptive Training API
  version: v2
servers:
- url: https://api.adaptivesecurity.com
  description: Production API
security:
- bearer-token: []
tags:
- description: BETATraining campaign and activity endpoints
  name: Training
paths:
  /v2/training/campaigns:
    get:
      description: BETARetrieve a paginated list of training campaigns
      operationId: listTrainingCampaigns
      parameters:
      - description: Page cursor
        example: 6e8e3c89-1122-4db2-ae91-f2c6bc0d5639
        in: query
        name: page_after
        required: false
        schema:
          type: string
      - description: Page size
        example: 100
        in: query
        name: page_size
        required: false
        schema:
          type: integer
          default: 100
      responses:
        '200':
          content:
            application/json:
              examples:
                Success Response:
                  description: Success Response
                  value:
                    campaigns:
                    - id: 2db2730a-3a9d-4b3d-87b4-1d16e1e66a88
                      name: Engineering Annual Training
                      audience_type: GROUPS
                      groups:
                      - id: f95d3d85-284b-4f94-98fe-23914c805b88
                        name: Engineering Team
                      mode: SCHEDULED
                      status: IN_PROGRESS
                      created_at: '2025-01-01T13:19:13.402Z'
                      start_date: '2025-01-10T13:19:13.402Z'
                      end_date: '2025-04-10T13:19:13.402Z'
                      employee_title: 2024 Security Awareness Training
                    - id: 6e8e3c89-1122-4db2-ae91-f2c6bc0d5639
                      name: New Employee Onboarding
                      audience_type: ALL_USERS
                      groups: []
                      mode: TRIGGERED
                      status: IN_PROGRESS
                      created_at: '2025-06-15T08:00:00Z'
                      start_date: '2025-06-15T08:00:00Z'
                      end_date: null
                      employee_title: null
                    page_after: 6e8e3c89-1122-4db2-ae91-f2c6bc0d5639
              schema:
                $ref: '#/components/schemas/TrainingCampaignListResponseDto'
          description: Successfully retrieved training campaigns
        '400':
          content:
            application/json:
              examples:
                Validation Error:
                  description: Validation Error
                  value:
                    error_code: VALIDATION_ERROR
                    message: Request validation failed
                    status_code: 400
                    request_id: 2f6f683d-c3e3-44c3-8ee2-b06b5687f255
                    details:
                    - field: page_after
                      message: page_after must be a string
              schema:
                $ref: '#/components/schemas/ValidationErrorResponseDto'
          description: Bad request - Invalid parameters
        '401':
          content:
            application/json:
              examples:
                Unauthorized Error:
                  description: Unauthorized Error
                  value:
                    error_code: INVALID_TOKEN
                    message: The provided authentication token is invalid or expired
                    status_code: 401
                    request_id: 74fc4c18-2c80-4394-b2e2-2f137b237b92
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Unauthorized - Invalid or missing authentication token
        '429':
          content:
            application/json:
              examples:
                Rate Limit Error:
                  description: Rate Limit Error
                  value:
                    error_code: RATE_LIMIT_EXCEEDED
                    message: API rate limit exceeded. Please retry after some time
                    status_code: 429
                    request_id: 0d47b5d3-884b-42c5-a20a-04e47011ebf4
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Too many requests - Rate limit exceeded
        '500':
          content:
            application/json:
              examples:
                Internal Server Error:
                  description: Internal Server Error
                  value:
                    error_code: INTERNAL_SERVER_ERROR
                    message: An unexpected error occurred. Please try again later
                    status_code: 500
                    request_id: f7e20a42-3c64-4f45-8a87-76113a1ce2f0
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Internal server error
      summary: List training campaigns
      tags:
      - Training
  /v2/training/campaigns/enrollments:
    get:
      description: BETARetrieve details about training enrollments with campaign and user filters
      operationId: getTrainingCampaignEnrollments
      parameters:
      - description: User ID
        example: 123e4567-e89b-12d3-a456-426614174000
        in: query
        name: user_id
        required: false
        schema:
          type: string
      - description: Training campaign ID
        example: c143c964-d39b-4f0f-b3d3-07bb3aaae71e
        in: query
        name: campaign_id
        required: false
        schema:
          type: string
      - description: Page cursor
        example: f248c6c3-9c93-4d62-a41b-9843de18f56b
        in: query
        name: page_after
        required: false
        schema:
          type: string
      - description: Number of enrollments to return per page (max 1000)
        example: 100
        in: query
        name: page_size
        required: false
        schema:
          type: integer
          default: 100
      responses:
        '200':
          content:
            application/json:
              examples:
                Success Response:
                  description: Success Response
                  value:
                    enrollments:
                    - id: 5a6dce1e-8d0f-46b1-b263-50b6adca62da
                      user:
                        id: 123e4567-e89b-12d3-a456-426614174000
                        email: john.smith@example.com
                      campaign:
                        id: e7f89a36-4b8f-4865-b11a-b0f280ae6a34
                        name: Q4 Security Training
                        employee_title: 2024 Security Awareness Training
                      status: IN_PROGRESS
                      enrolled_at: '2024-10-05T09:15:00Z'
                      due_at: '2024-10-12T09:20:00Z'
                      started_at: '2024-10-05T09:20:00Z'
                      unenrolled_at: null
                      completed_at: null
                      has_acknowledged_policy: false
                    page_after: 5a6dce1e-8d0f-46b1-b263-50b6adca62da
              schema:
                $ref: '#/components/schemas/UserTrainingCampaignEnrollmentListDto'
          description: Successfully retrieved campaign enrollment details
        '401':
          content:
            application/json:
              examples:
                Unauthorized Error:
                  description: Unauthorized Error
                  value:
                    error_code: INVALID_TOKEN
                    message: The provided authentication token is invalid or expired
                    status_code: 401
                    request_id: 5a7384c9-b5de-4aa1-a144-faa0de243ab0
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Unauthorized - Invalid or missing authentication token
        '429':
          content:
            application/json:
              examples:
                Rate Limit Error:
                  description: Rate Limit Error
                  value:
                    error_code: RATE_LIMIT_EXCEEDED
                    message: API rate limit exceeded. Please retry after some time
                    status_code: 429
                    request_id: 6e9d2fb1-95e2-49e2-ae36-9de6e6f51c25
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Too many requests - Rate limit exceeded
        '500':
          content:
            application/json:
              examples:
                Internal Server Error:
                  description: Internal Server Error
                  value:
                    error_code: INTERNAL_SERVER_ERROR
                    message: An unexpected error occurred. Please try again later
                    status_code: 500
                    request_id: a0a7b8e0-fc0b-46b1-8dbb-0d04872f9678
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Internal server error
      summary: Get training campaign enrollments details
      tags:
      - Training
  /v2/training/campaigns/{campaignId}:
    get:
      description: BETARetrieve detailed information about a specific training campaign
      operationId: getTrainingCampaign
      parameters:
      - description: Campaign ID
        example: e7f89a36-4b8f-4865-b11a-b0f280ae6a34
        in: path
        name: campaignId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              examples:
                Success Response:
                  description: Success Response
                  value:
                    id: 88479a0e-6ef4-4bc9-9af1-d57bae0f1234
                    name: Engineering Annual Training
                    audience_type: GROUPS
                    groups:
                    - id: 12345654-4321-1234-9abc-def012345678
                      name: Engineers
                    mode: SCHEDULED
                    status: IN_PROGRESS
                    created_at: '2025-06-01T13:19:13.402Z'
                    start_date: '2025-06-10T13:19:13.402Z'
                    end_date: '2025-08-10T13:19:13.402Z'
                    employee_title: 2024 Security Awareness Training
              schema:
                $ref: '#/components/schemas/TrainingCampaignDto'
          description: Successfully retrieved training campaign details
        '401':
          content:
            application/json:
              examples:
                Unauthorized Error:
                  description: Unauthorized Error
                  value:
                    error_code: INVALID_TOKEN
                    message: The provided authentication token is invalid or expired
                    status_code: 401
                    request_id: dcaf9f7e-6c47-4c93-bb41-0e2d8d9bb0de
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Unauthorized - Invalid or missing authentication token
        '404':
          content:
            application/json:
              examples:
                Not Found Error:
                  description: Not Found Error
                  value:
                    error_code: RESOURCE_NOT_FOUND
                    message: The requested training campaign was not found
                    status_code: 404
                    request_id: 2a3b4c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Training campaign not found
        '500':
          content:
            application/json:
              examples:
                Internal Server Error:
                  description: Internal Server Error
                  value:
                    error_code: INTERNAL_SERVER_ERROR
                    message: An unexpected error occurred. Please try again later
                    status_code: 500
                    request_id: f351ac3c-cd5e-4ec7-89dc-191fc40a83f2
              schema:
                $ref: '#/components/schemas/ErrorResponseDto'
          description: Internal server error
      summary: Get training campaign details
      tags:
      - Training
components:
  schemas:
    ErrorDetail:
      type: object
      description: Field-level validation error details
      properties:
        field:
          type: string
          description: Field name that failed validation
          example: email
        message:
          type: string
          description: Validation error message for this field
          example: Email address is not valid
      required:
      - field
      - message
    UserTrainingCampaignEnrollmentDto:
      type: object
      description: User's enrollment details for a training campaign
      properties:
        campaign:
          $ref: '#/components/schemas/TrainingCampaignSummaryDto'
        completed_at:
          type: string
          format: date-time
          example: '2025-01-01T13:19:13.402Z'
        due_at:
          type: string
          format: date-time
          description: Date when the user's training completion is due
          example: '2025-01-08T13:19:13.402Z'
        enrolled_at:
          type: string
          format: date-time
          example: '2025-01-01T13:19:13.402Z'
        has_acknowledged_policy:
          type: boolean
          example: false
        id:
          type: string
          description: Unique identifier for the enrollment
          example: 6a10d54c-f1bf-4d1d-8864-64bfac9a0c13
        started_at:
          type: string
          format: date-time
          description: Date when user started the training
          example: '2025-01-01T13:19:13.402Z'
        status:
          type: string
          description: User's enrollment status in the training campaign
          enum:
          - IN_PROGRESS
          - COMPLETED
          - INCOMPLETE
          - OVERDUE
          - UNENROLLED
          example: IN_PROGRESS
        unenrolled_at:
          type: string
          format: date-time
          example: '2025-01-02T13:19:13.402Z'
        user:
          $ref: '#/components/schemas/UserSummaryDto'
    UserSummaryDto:
      type: object
      description: User summary information
      properties:
        email:
          type: string
          description: User's email address
          example: john.smith@example.com
        id:
          type: string
          description: Unique identifier for the user
          example: 123e4567-e89b-12d3-a456-426614174000
    CampaignGroupDto:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the group
          example: e7f89a36-4b8f-4865-b11a-b0f280ae6a34
        name:
          type: string
          description: The name of the group
          example: Finance Team
    UserTrainingCampaignEnrollmentListDto:
      type: object
      properties:
        enrollments:
          type: array
          items:
            $ref: '#/components/schemas/UserTrainingCampaignEnrollmentDto'
        page_after:
          type: string
          example: 3b495a63-23f2-4284-82d0-3aa5b5c0c753
    TrainingCampaignSummaryDto:
      type: object
      description: Training campaign information
      properties:
        id:
          type: string
          description: Unique identifier for the campaign
          example: e7f89a36-4b8f-4865-b11a-b0f280ae6a34
        name:
          type: string
          description: Name of the training campaign
          example: Engineering Annual Training
        employee_title:
          type:
          - string
          - 'null'
          description: Employee-facing title for the campaign. Null if no employee-facing title is set.
          example: 2024 Annual Security Training
    ValidationErrorResponseDto:
      type: object
      description: Error response for validation failures with field-level details
      properties:
        details:
          type: array
          description: List of field-level validation error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
        error_code:
          type: string
          description: Machine-readable error code
          example: VALIDATION_ERROR
        message:
          type: string
          description: Human-readable error message
          example: Request validation failed
        request_id:
          type: string
          description: Unique request ID for debugging
          example: 8f03bdf9-ac45-4279-8dbe-f28839c2fed3
        status_code:
          type: integer
          format: int32
          description: HTTP status code
          example: 400
      required:
      - details
      - error_code
      - message
      - request_id
      - status_code
    ErrorResponseDto:
      type: object
      description: Standard error response format for all API errors
      properties:
        error_code:
          type: string
          description: Machine-readable error code
          example: RESOURCE_NOT_FOUND
        message:
          type: string
          description: Human-readable error message
          example: The requested user was not found
        request_id:
          type: string
          description: Unique request ID for debugging
          example: 8f03bdf9-ac45-4279-8dbe-f28839c2fed3
        status_code:
          type: integer
          format: int32
          description: HTTP status code
          example: 404
      required:
      - error_code
      - message
      - request_id
      - status_code
    TrainingCampaignListResponseDto:
      type: object
      description: Paginated list of training campaigns
      properties:
        campaigns:
          type: array
          items:
            $ref: '#/components/schemas/TrainingCampaignDto'
        page_after:
          type: string
          example: 123e4567-e89b-12d3-a456-426614174000
    TrainingCampaignDto:
      type: object
      description: Training campaign information
      properties:
        audience_type:
          type: string
          description: Target audience type for the campaign
          enum:
          - GROUPS
          - ALL_USERS
          example: GROUPS
        created_at:
          type: string
          format: date-time
          description: Campaign's created date
          example: '2025-01-01T13:19:13.402Z'
        end_date:
          type: string
          format: date-time
          description: End date for the campaign (null for TRIGGERED mode)
          example: '2025-01-01T13:19:13.402Z'
        groups:
          type: array
          description: Groups associated with the campaign
          items:
            $ref: '#/components/schemas/CampaignGroupDto'
        id:
          type: string
          description: Unique identifier for the campaign
          example: e7f89a36-4b8f-4865-b11a-b0f280ae6a34
        mode:
          type: string
          description: Campaign mode
          enum:
          - SCHEDULED
          - TRIGGERED
          example: SCHEDULED
        name:
          type: string
          description: Name of the training campaign
          example: Engineering Annual Training
        start_date:
          type: string
          format: date-time
          description: Start date for the campaign
          example: '2025-01-01T13:19:13.402Z'
        status:
          type: string
          description: Current status of the campaign
          enum:
          - DRAFT
          - SCHEDULED
          - IN_PROGRESS
          - COMPLETED
          - OVERDUE
          example: IN_PROGRESS
        employee_title:
          type:
          - string
          - 'null'
          description: Employee-facing title for the campaign. Null if no employee-facing title is set.
          example: 2024 Annual Security Training
  securitySchemes:
    bearer-token:
      description: 'API authentication token obtained from the Adaptive Admin portal (Settings → API Tokens). Include the token in the Authorization header as: Bearer YOUR_TOKEN'
      scheme: bearer
      type: http