> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cybr.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> These docs cover learner integrations through Hosted Lab Pages, the SDK, and the REST API. Content management is outside this integration scope.
> Read the setup page for the chosen approach before implementing it. Keep organization API keys and hosted mint secrets on the server.
> The public SDK is coming soon. Check the SDK quickstart for current availability. Do not invent installation commands or direct readers to a private package.
> Cybr provides completion tracking and CTF verification. The integrating platform decides whether to award points.

# List labs

> Returns the organization catalog with its customizations. SDK: `labs.list()`.

SDK: `labs.list()`.


## OpenAPI

````yaml assets/openapi.json GET /api/v2/labs
openapi: 3.1.0
info:
  title: Cybr Labs public integration API
  version: 0.0.15
  description: SDK and REST integration contract. Organization keys remain on the server.
  contact:
    email: support@cybr.com
servers:
  - url: https://api.cybr.com
security:
  - OrganizationKey: []
tags:
  - name: Labs
    description: Content, progress, discussions, and resource links.
  - name: Deployments
    description: Lab environments and terminal sessions.
paths:
  /api/v2/labs:
    get:
      tags:
        - Labs
      summary: List labs
      description: >-
        Returns the organization catalog with its customizations. SDK:
        `labs.list()`.
      operationId: list_labs
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Lab'
              example:
                - id: lab_id
                  name: Example lab
                  slug: example-lab
                  description: An isolated exercise.
                  provider: aws
                  timeLimit: 30
                  estimatedLaunchSeconds: 120
                  ctf: true
                  free: true
                  createdAt: '2026-01-01T00:00:00Z'
                  updatedAt: '2026-01-01T00:00:00Z'
                  hasGuide: false
                  hasResources: false
                  hasVideos: false
                  hasWriteups: false
                  webTerminal: true
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Access denied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: Other API error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Lab:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        slug:
          type: string
        description:
          anyOf:
            - type: string
            - type: 'null'
        provider:
          enum:
            - aws
            - azure
        timeLimit:
          anyOf:
            - type: integer
            - type: 'null'
        estimatedLaunchSeconds:
          anyOf:
            - type: integer
            - type: 'null'
        ctf:
          type: boolean
        free:
          type: boolean
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        hasGuide:
          type: boolean
        hasResources:
          type: boolean
        hasVideos:
          type: boolean
        hasWriteups:
          type: boolean
        webTerminal:
          type: boolean
      required:
        - id
        - name
        - slug
        - description
        - provider
        - timeLimit
        - estimatedLaunchSeconds
        - ctf
        - free
        - createdAt
        - updatedAt
        - hasGuide
        - hasResources
        - hasVideos
        - hasWriteups
        - webTerminal
    Error:
      type: object
      properties:
        message:
          type: string
        retryAfter:
          type: number
        activeCount:
          type: integer
        limit:
          type: integer
        errors:
          type: array
          items:
            type: string
      required:
        - message
  securitySchemes:
    OrganizationKey:
      type: apiKey
      in: header
      name: X-API-Key

````