{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/telnyx/main/json-schema/telnyx-join-conference-request-schema.json",
  "title": "Join Conference Request",
  "x-generated": "2026-10-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/telnyx-conference-commands-api-openapi.yml#/components/schemas/JoinConferenceRequest",
  "properties": {
    "beep_enabled": {
      "description": "Whether a beep sound should be played when the participant joins and/or leaves the conference. Can be used to override the conference-level setting.",
      "enum": [
        "always",
        "never",
        "on_enter",
        "on_exit"
      ],
      "type": "string"
    },
    "call_control_id": {
      "description": "Unique identifier and token for controlling the call",
      "type": "string"
    },
    "client_state": {
      "description": "Use this field to add state to every subsequent webhook. It must be a valid Base-64 encoded string. Please note that the client_state will be updated for the participient call leg and the change will not affect conferencing webhooks unless the participient is the owner of the conference.",
      "type": "string"
    },
    "command_id": {
      "description": "Use this field to avoid execution of duplicate commands. Telnyx will ignore subsequent commands with the same `command_id` as one that has already been executed.",
      "type": "string"
    },
    "end_conference_on_exit": {
      "description": "Whether the conference should end and all remaining participants be hung up after the participant leaves the conference. Defaults to \"false\".",
      "type": "boolean"
    },
    "hold": {
      "description": "Whether the participant should be put on hold immediately after joining the conference. Defaults to \"false\".",
      "type": "boolean"
    },
    "hold_audio_url": {
      "description": "The URL of a file to be played to the participant when they are put on hold after joining the conference. hold_media_name and hold_audio_url cannot be used together in one request. Takes effect only when \"start_conference_on_create\" is set to \"false\". This property takes effect only if \"hold\" is set to \"true\".",
      "type": "string"
    },
    "hold_media_name": {
      "description": "The media_name of a file to be played to the participant when they are put on hold after joining the conference. The media_name must point to a file previously uploaded to api.telnyx.com/v2/media by the same user/organization. The file must either be a WAV or MP3 file. Takes effect only when \"start_conference_on_create\" is set to \"false\". This property takes effect only if \"hold\" is set to \"true\".",
      "type": "string"
    },
    "mute": {
      "description": "Whether the participant should be muted immediately after joining the conference. Defaults to \"false\".",
      "type": "boolean"
    },
    "region": {
      "$ref": "#/$defs/ConferenceRegion"
    },
    "soft_end_conference_on_exit": {
      "description": "Whether the conference should end after the participant leaves the conference. NOTE this doesn't hang up the other participants. Defaults to \"false\".",
      "type": "boolean"
    },
    "start_conference_on_enter": {
      "description": "Whether the conference should be started after the participant joins the conference. Defaults to \"false\".",
      "type": "boolean"
    },
    "supervisor_role": {
      "description": "Sets the joining participant as a supervisor for the conference. A conference can have multiple supervisors. \"barge\" means the supervisor enters the conference as a normal participant. This is the same as \"none\". \"monitor\" means the supervisor is muted but can hear all participants. \"whisper\" means that only the specified \"whisper_call_control_ids\" can hear the supervisor. Defaults to \"none\".",
      "enum": [
        "barge",
        "monitor",
        "none",
        "whisper"
      ],
      "type": "string"
    },
    "whisper_call_control_ids": {
      "description": "Array of unique call_control_ids the joining supervisor can whisper to. If none provided, the supervisor will join the conference as a monitoring participant only.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "call_control_id"
  ],
  "type": "object",
  "$defs": {
    "ConferenceRegion": {
      "description": "Region where the conference data is located. Defaults to the region defined in user's data locality settings (Europe or US).",
      "enum": [
        "Australia",
        "Europe",
        "Middle East",
        "US"
      ],
      "type": "string"
    }
  }
}