VideoSDK Rooms API

Manage meeting rooms.

OpenAPI Specification

videosdk-rooms-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: VideoSDK Real-Time Communication HLS Streaming Rooms API
  description: 'REST API for managing rooms, sessions, recordings, RTMP live streams, and HLS streaming for real-time audio and video communication applications. Requires a JWT token signed with your VideoSDK API key and secret, passed in the Authorization header (without a Bearer prefix).

    '
  version: '2.0'
  contact:
    name: VideoSDK Support
    email: support@videosdk.live
    url: https://www.videosdk.live/support
  termsOfService: https://www.videosdk.live/terms
  license:
    name: Proprietary
    url: https://www.videosdk.live/terms
servers:
- url: https://api.videosdk.live/v2
  description: VideoSDK v2 API
security:
- JWTAuth: []
tags:
- name: Rooms
  description: Manage meeting rooms.
paths:
  /rooms:
    post:
      operationId: createRoom
      summary: Create a Room
      description: Creates a new meeting room. Optionally accepts a custom room ID, webhook configuration, and auto-close settings.
      tags:
      - Rooms
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                customRoomId:
                  type: string
                  description: Custom identifier for the room.
                webhook:
                  $ref: '#/components/schemas/WebhookConfig'
                autoCloseConfig:
                  $ref: '#/components/schemas/AutoCloseConfig'
            example:
              customRoomId: aaa-bbb-ccc
              webhook:
                endPoint: https://example.com/webhook
                events:
                - recording-started
                - recording-stopped
              autoCloseConfig:
                type: session-end-and-deactivate
                duration: 60
      responses:
        '200':
          description: Room created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Room'
              example:
                roomId: abc-xyzw-lmno
                customRoomId: final-testing
                userId: 5f7edbb14c938bcd42944527
                disabled: false
                createdAt: '2022-03-25T04:49:11.024Z'
                updatedAt: '2022-03-25T04:49:11.024Z'
                id: 624d0e0db6a26a21b7e8ee5e
                links:
                  get_room: https://api.videosdk.live/v2/rooms/abc-xyzw-lmno
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized – invalid or missing JWT.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    get:
      operationId: fetchRooms
      summary: Fetch Rooms
      description: Retrieve a paginated list of all rooms.
      tags:
      - Rooms
      parameters:
      - name: page
        in: query
        schema:
          type: integer
          default: 1
      - name: perPage
        in: query
        schema:
          type: integer
          default: 20
      responses:
        '200':
          description: List of rooms.
          content:
            application/json:
              schema:
                type: object
                properties:
                  pageInfo:
                    $ref: '#/components/schemas/PageInfo'
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Room'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /rooms/{roomId}:
    get:
      operationId: fetchRoom
      summary: Fetch a Room
      description: Retrieve details of a specific room by its ID.
      tags:
      - Rooms
      parameters:
      - name: roomId
        in: path
        required: true
        schema:
          type: string
        description: The unique room identifier.
      responses:
        '200':
          description: Room details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Room'
        '404':
          description: Room not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /rooms/validate/{roomId}:
    post:
      operationId: validateRoom
      summary: Validate a Room
      description: Validate that a room exists and is active.
      tags:
      - Rooms
      parameters:
      - name: roomId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Room is valid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Room'
        '404':
          description: Room not found or deactivated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    PageInfo:
      type: object
      properties:
        currentPage:
          type: integer
        perPage:
          type: integer
        lastPage:
          type: integer
        total:
          type: integer
    AutoCloseConfig:
      type: object
      properties:
        type:
          type: string
          enum:
          - session-ends
          - session-end-and-deactivate
          description: When to auto-close the room.
        duration:
          type: integer
          description: Duration in minutes before auto-close (default 480).
          default: 480
    Error:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
    WebhookConfig:
      type: object
      properties:
        endPoint:
          type: string
          format: uri
          description: Webhook URL endpoint.
        events:
          type: array
          items:
            type: string
          description: Array of event names or regex patterns to subscribe to.
    Room:
      type: object
      properties:
        roomId:
          type: string
          description: Unique meeting identifier.
          example: abc-xyzw-lmno
        customRoomId:
          type: string
          description: Custom room identifier if provided.
          example: final-testing
        userId:
          type: string
          description: Creator's user ID.
          example: 5f7edbb14c938bcd42944527
        disabled:
          type: boolean
          description: Whether the room is disabled.
          example: false
        createdAt:
          type: string
          format: date-time
          description: ISO timestamp of creation.
        updatedAt:
          type: string
          format: date-time
          description: ISO timestamp of last update.
        id:
          type: string
          description: Room document ID.
        links:
          type: object
          properties:
            get_room:
              type: string
              format: uri
            get_session:
              type: string
              format: uri
  securitySchemes:
    JWTAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'JWT token generated using your VideoSDK API key and secret (HS256). Pass the token directly without a "Bearer" prefix.

        '
externalDocs:
  description: VideoSDK API Reference
  url: https://docs.videosdk.live/api-reference/realtime-communication/intro