> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # create > Create a new video conference. Create a new video conference. ### Schema ```yaml openapi: 3.1.0 info: title: API version: 1.0.0 paths: /api/video/conferences: post: operationId: subpackageVideoConferences_create_video_conference summary: Create video conference description: >- Creates a managed Video Conference in the project with hosted guest and moderator access. Use it when SignalWire should provide the conference experience as well as the video session. For a custom client built with Room Tokens and a SignalWire client SDK, use [Create room](/docs/apis/rest/video/rooms/create-room). #### Permissions The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Video_. [Learn more about API scopes](/docs/platform/your-signalwire-api-space). tags: - subpackage_videoConferences responses: '200': description: Conference response wrapper. content: application/json: schema: $ref: '#/components/schemas/Video.Conference' '400': description: The request is invalid. content: application/json: schema: $ref: '#/components/schemas/Types.StatusCodes.StatusCode400' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Types.StatusCodes.StatusCode401' '422': description: The request contains invalid parameters. See errors for details. content: application/json: schema: $ref: '#/components/schemas/Video.VideoStatusCode422' '500': description: An internal server error occurred. content: application/json: schema: $ref: '#/components/schemas/Types.StatusCodes.StatusCode500' requestBody: content: application/json: schema: $ref: '#/components/schemas/Video.CreateConferenceRequest' tags: - name: subpackage_videoConferences servers: - url: https://%7BYour_Space_Name%7D.signalwire.com description: SignalWire API components: schemas: Video.VideoQuality: type: string enum: - 720p - 1080p description: Video quality resolution. title: Video.VideoQuality Video.VideoLayout: type: string enum: - grid-responsive - grid-responsive-mobile - highlight-1-responsive - 1x1 - 2x1 - 2x2 - 5up - 3x3 - 4x4 - 5x5 - 6x6 - 8x8 - 10x10 description: Video room layout options. title: Video.VideoLayout Video.ConferenceSize: type: string enum: - small - medium - large description: Conference size options. title: Video.ConferenceSize Video.CreateConferenceRequest: type: object properties: name: type: string pattern: ^[A-Za-z0-9_-]+$ maxLength: 100 description: >- A named unique identifier for the conference. Allowed characters: `A-Za-z0-9_-`. Maximum of 100 characters. display_name: type: string maxLength: 200 description: Display name of the video conference. Maximum of 200 characters. description: type: string maxLength: 3000 description: Description of the conference. Maximum of 3000 characters. join_from: type: string format: date-time description: >- Conference does not accept new participants before this time. Expects RFC 3339 datetime: `2022-01-01T23:59:60Z`. Date only: `2022-01-01` will be converted to `2022-01-01T00:00:00Z`. join_until: type: string format: date-time description: >- Conference stops accepting new participants at this time, but keeps running until all participants leave. Expects RFC 3339 datetime: `2022-01-01T23:59:60Z`. Date only: `2022-01-01` will be converted to `2022-01-01T00:00:00Z`. quality: $ref: '#/components/schemas/Video.VideoQuality' default: 720p description: The conference's resolution. layout: $ref: '#/components/schemas/Video.VideoLayout' default: grid-responsive description: The conference's initial layout. size: $ref: '#/components/schemas/Video.ConferenceSize' default: medium description: The size of the video conference. record_on_start: type: boolean description: Whether to start recording when a conference session begins. enable_room_previews: type: boolean description: Whether a preview video of the conference content is generated. enable_chat: type: boolean default: true description: Whether group chat is enabled for conference participants. dark_primary: type: string pattern: ^#[0-9a-fA-F]{6}$ default: '#044EF4' description: CTA buttons and selected items color (dark theme). dark_background: type: string pattern: ^#[0-9a-fA-F]{6}$ default: '#FFFFFF' description: Main background color (dark theme). dark_foreground: type: string pattern: ^#[0-9a-fA-F]{6}$ default: '#1D2127' description: Main foreground color (dark theme). dark_success: type: string pattern: ^#[0-9a-fA-F]{6}$ default: '#17BB58' description: Success indication color (dark theme). dark_negative: type: string pattern: ^#[0-9a-fA-F]{6}$ default: '#F42C50' description: Error indication color (dark theme). light_primary: type: string pattern: ^#[0-9a-fA-F]{6}$ default: '#044EF4' description: CTA buttons and selected items color (light theme). light_background: type: string pattern: ^#[0-9a-fA-F]{6}$ default: '#FFFFFF' description: Main background color (light theme). light_foreground: type: string pattern: ^#[0-9a-fA-F]{6}$ default: '#1D2127' description: Main foreground color (light theme). light_success: type: string pattern: ^#[0-9a-fA-F]{6}$ default: '#17BB58' description: Success indication color (light theme). light_negative: type: string pattern: ^#[0-9a-fA-F]{6}$ default: '#F42C50' description: Error indication color (light theme). required: - display_name description: Request body for creating a conference. title: Video.CreateConferenceRequest uuid: type: string format: uuid description: Universal Unique Identifier. title: uuid VideoConferenceMeta: type: object properties: {} description: User-defined metadata for the conference. title: VideoConferenceMeta Video.VideoFps: type: string enum: - '20' - '30' description: Video frames per second. title: Video.VideoFps Video.RoomSessionStatus: type: string enum: - in-progress - completed description: Status of a room session. title: Video.RoomSessionStatus Video.ActiveSession: type: object properties: id: type: string description: Unique ID of the session. room_id: type: string description: >- Unique ID of the Room if the Session was created from a Room and was not an auto-created Session. name: type: string description: The named identifier of room session. display_name: type: string description: >- Display name of room, no character limitations. Maximum of 200 characters. Defaults to the value of name. join_from: type: string format: date-time description: Room Session does not accept new Members before this time. join_until: type: string format: date-time description: Room Session stops accepting new Members at this time. remove_at: type: string format: date-time description: Remove Members from the Room Session at this time. remove_after_seconds_elapsed: type: integer description: Remove Members after they are in the Room Session for N seconds. layout: type: string description: >- The Room Session's initial layout. See documentation for a full list of supported layouts. max_members: type: integer description: The maximum number of members allowed in the room at a time. fps: $ref: '#/components/schemas/Video.VideoFps' description: The Room Session's frames per second. quality: $ref: '#/components/schemas/Video.VideoQuality' description: The Room Session's resolution. start_time: type: string format: date-time description: Start time of the session. end_time: type: string format: date-time description: End time of the session. duration: type: integer description: How long, in seconds, the Room Session lasted. status: $ref: '#/components/schemas/Video.RoomSessionStatus' description: Status of the session. record_on_start: type: boolean description: >- Whether a recording was automatically started when this Room Session began. enable_room_previews: type: boolean description: >- Whether a video with a preview of the content of the room is to be generated. preview_url: type: string description: >- If room previews are enabled and the room session is in progress, this is the URL of the preview video. audio_video_sync: type: boolean description: Enable/disable jitter buffer audio-video sync. description: Active session information for a room. title: Video.ActiveSession Video.Conference: type: object properties: id: $ref: '#/components/schemas/uuid' description: Unique ID of the video conference. name: type: string description: >- A named unique identifier for the conference. Allowed characters: `A-Za-z0-9_-`. display_name: type: - string - 'null' description: Display name of the video conference. Maximum of 200 characters. description: type: - string - 'null' description: Description of the conference. Maximum of 3000 characters. join_from: type: - string - 'null' format: date-time description: Conference does not accept new participants before this time. join_until: type: - string - 'null' format: date-time description: >- Conference stops accepting new participants at this time, but keeps running until all participants leave. quality: $ref: '#/components/schemas/Video.VideoQuality' description: The conference's resolution. layout: $ref: '#/components/schemas/Video.VideoLayout' description: The conference's initial layout. size: oneOf: - $ref: '#/components/schemas/Video.ConferenceSize' - type: 'null' description: The size of the video conference. record_on_start: type: boolean description: Whether to start recording when a conference session begins. tone_on_entry_and_exit: type: boolean description: >- Whether a tone is played when a member enters or exits the conference. user_join_video_off: type: boolean description: Whether participants join with video off by user setting. room_join_video_off: type: boolean description: Whether participants join with video off by room setting. enable_chat: type: boolean description: Whether group chat is enabled for conference participants. enable_room_previews: type: - boolean - 'null' description: Whether a preview video of the conference content is generated. dark_primary: type: - string - 'null' description: CTA buttons and selected items color (dark theme). dark_background: type: - string - 'null' description: Main background color (dark theme). dark_foreground: type: - string - 'null' description: Main foreground color (dark theme). dark_success: type: - string - 'null' description: Success indication color (dark theme). dark_negative: type: - string - 'null' description: Error indication color (dark theme). light_primary: type: - string - 'null' description: CTA buttons and selected items color (light theme). light_background: type: - string - 'null' description: Main background color (light theme). light_foreground: type: - string - 'null' description: Main foreground color (light theme). light_success: type: - string - 'null' description: Success indication color (light theme). light_negative: type: - string - 'null' description: Error indication color (light theme). meta: oneOf: - $ref: '#/components/schemas/VideoConferenceMeta' - type: 'null' description: User-defined metadata for the conference. created_at: type: string format: date-time description: Timestamp when the conference was created. updated_at: type: string format: date-time description: Timestamp when the conference was last updated. active_session: $ref: '#/components/schemas/Video.ActiveSession' description: >- Active session information. Only present when requested via the `include_active_session` query parameter. required: - id - name - display_name - description - join_from - join_until - quality - layout - size - record_on_start - tone_on_entry_and_exit - user_join_video_off - room_join_video_off - enable_chat - enable_room_previews - dark_primary - dark_background - dark_foreground - dark_success - dark_negative - light_primary - light_background - light_foreground - light_success - light_negative - meta - created_at - updated_at description: Video conference response object. title: Video.Conference TypesStatusCodesStatusCode400Error: type: string enum: - Bad Request title: TypesStatusCodesStatusCode400Error Types.StatusCodes.StatusCode400: type: object properties: error: $ref: '#/components/schemas/TypesStatusCodesStatusCode400Error' required: - error description: The request is invalid. title: Types.StatusCodes.StatusCode400 TypesStatusCodesStatusCode401Error: type: string enum: - Unauthorized title: TypesStatusCodesStatusCode401Error Types.StatusCodes.StatusCode401: type: object properties: error: $ref: '#/components/schemas/TypesStatusCodesStatusCode401Error' required: - error description: Access is unauthorized. title: Types.StatusCodes.StatusCode401 Types.StatusCodes.RestApiErrorItem: type: object properties: type: type: string description: The category of error. code: type: string description: A specific error code. message: type: string description: A description of what caused the error. attribute: type: - string - 'null' description: The request parameter that caused the error, if applicable. url: type: string description: A link to documentation about this error. required: - type - code - message - url description: Details about a specific error. title: Types.StatusCodes.RestApiErrorItem Video.VideoStatusCode422: type: object properties: errors: type: array items: $ref: '#/components/schemas/Types.StatusCodes.RestApiErrorItem' description: List of validation errors. required: - errors description: The request contains invalid parameters. See errors for details. title: Video.VideoStatusCode422 TypesStatusCodesStatusCode500Error: type: string enum: - Internal Server Error title: TypesStatusCodesStatusCode500Error Types.StatusCodes.StatusCode500: type: object properties: error: $ref: '#/components/schemas/TypesStatusCodesStatusCode500Error' required: - error description: An internal server error occurred. title: Types.StatusCodes.StatusCode500 ``` ## **Response Example** ### Response (200) ```json { "id": "c22d24f6-5a47-4597-9a23-c7d01e696b92", "name": "my_conference", "display_name": "My Conference's Name", "description": "This conference will be used for full company all hands meetings", "join_from": "2022-01-01T00:00:00Z", "join_until": "2022-12-31T23:59:59Z", "quality": "720p", "layout": "grid-responsive", "size": "medium", "record_on_start": false, "tone_on_entry_and_exit": true, "user_join_video_off": false, "room_join_video_off": false, "enable_chat": true, "enable_room_previews": false, "dark_primary": "#044EF4", "dark_background": "#FFFFFF", "dark_foreground": "#1D2127", "dark_success": "#17BB58", "dark_negative": "#F42C50", "light_primary": "#044EF4", "light_background": "#FFFFFF", "light_foreground": "#1D2127", "light_success": "#17BB58", "light_negative": "#F42C50", "meta": {}, "created_at": "2022-01-01T10:00:00Z", "updated_at": "2022-01-01T11:00:00Z", "active_session": { "id": "c22d24f6-5a47-4597-9a23-c7d01e696b92", "room_id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890", "name": "my_example_room", "display_name": "My Room's Name", "join_from": "2022-01-01T00:00:00Z", "join_until": "2022-12-31T23:59:59Z", "remove_at": "2022-12-31T23:59:59Z", "remove_after_seconds_elapsed": 120, "layout": "grid-responsive", "max_members": 20, "fps": 20, "quality": "720p", "start_time": "2022-01-01T10:00:00Z", "end_time": "2022-01-01T11:00:00Z", "duration": 120, "status": "completed", "record_on_start": true, "enable_room_previews": true, "preview_url": "https://example.signalwire.com/api/video/room_sessions/c22d24f6-5a47-4597-9a23-c7d01e696b92/preview", "audio_video_sync": true } } ``` ## **Example** ```python {9} from signalwire.rest import RestClient client = RestClient( project="your-project-id", token="your-api-token", host="your-space.signalwire.com", ) conf = client.video.conferences.create(display_name="Team Meeting", name="team-meeting") ``` > Create a new video conference.