openapi: 3.2.0 info: title: Sinch Conferences API version: '1.0' description: 'Operations tagged Conferences across 2 of this provider''s published API definitions: sinch-voice-api-openapi.yaml, original-sinch-voice-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://calling.api.sinch.com description: redirected by Sinch to an appropriate region - url: https://calling-use1.api.sinch.com description: United States - url: https://calling-euc1.api.sinch.com description: Europe - url: https://calling-sae1.api.sinch.com description: South America - url: https://calling-apse1.api.sinch.com description: Southeast Asia 1 - url: https://calling-apse2.api.sinch.com description: Southeast Asia 2 tags: - name: Conferences description: Using the Conferences endpoint, you can perform tasks like retrieving information about an on-going conference, muting or unmuting participants, or removing participants from a conference. paths: /calling/v1/callouts: post: tags: - Conferences description: Makes a call out to a phone number. The types of callouts currently supported are conference callouts, text-to-speech callouts, and custom callouts. The custom callout is the most flexible, but text-to-speech and conference callouts are more convenient. summary: Callout Request operationId: Callouts requestBody: $ref: '#/components/requestBodies/calloutRequest' responses: '200': description: A success response, or an [Error](https://developers.sinch.com/docs/voice/api-reference/errors/). content: application/json: schema: $ref: '#/components/schemas/getCalloutResponseObj' example: callId: adf92089-df2a-4f14-a377-1e975f588fe4 x-codeSamples: - lang: Java source: "/**\n * Sinch Java Snippet\n *\n *
This snippet is available at https://github.com/sinch/sinch-sdk-java\n *\n *
See https://github.com/sinch/sinch-sdk-java/blob/main/examples/snippets/README.md for details\n */\npackage voice.callouts;\n\nimport com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.domains.voice.api.v1.CalloutsService;\nimport com.sinch.sdk.domains.voice.models.v1.callouts.request.CalloutRequestTTS;\nimport com.sinch.sdk.domains.voice.models.v1.destination.DestinationPstn;\nimport com.sinch.sdk.models.Configuration;\nimport java.util.logging.Logger;\nimport utils.Settings;\n\npublic class Call {\n\n private static final Logger LOGGER = Logger.getLogger(Call.class.getName());\n\n public static void main(String[] args) {\n\n String applicationKey = Settings.getApplicationKey().orElse(\"MY_APPLICATION_KEY\");\n String applicationSecret = Settings.getApplicationSecret().orElse(\"MY_APPLICATION_SECRET\");\n\n // The phone number you want to call, in E.164 format (e.g., +12025550123)\n String recipientPhoneNumber = \"RECIPIENT_PHONE_NUMBER\";\n String textToSpeech = \"Hello, this is a call initiated from Sinch Java SDK. Goodbye.\";\n\n Configuration configuration =\n Configuration.builder()\n .setApplicationKey(applicationKey)\n .setApplicationSecret(applicationSecret)\n .build();\n\n SinchClient client = new SinchClient(configuration);\n\n CalloutsService calloutsService = client.voice().v1().callouts();\n\n LOGGER.info(String.format(\"Calling phone number '%s'\", recipientPhoneNumber));\n\n CalloutRequestTTS request =\n CalloutRequestTTS.builder()\n .setDestination(DestinationPstn.from(recipientPhoneNumber))\n .setText(textToSpeech)\n .build();\n\n String response = calloutsService.call(request);\n\n LOGGER.info(\"Response: \" + response);\n }\n}\n" - lang: Node.js source: "/**\n * Sinch Node.js Snippet\n * See: https://github.com/sinch/sinch-sdk-node/examples/snippets\n */\nimport { SinchClient } from '@sinch/sdk-core';\nimport * as dotenv from 'dotenv';\ndotenv.config();\n\nasync function main() {\n const applicationKey = process.env.SINCH_APPLICATION_KEY ?? 'MY_APPLICATION_KEY';\n const applicationSecret = process.env.SINCH_APPLICATION_SECRET ?? 'MY_APPLICATION_SECRET';\n\n // The phone number you want to call, in E.164 format (e.g., +12025550123)\n const recipientPhoneNumber = 'RECIPIENT_PHONE_NUMBER';\n // The text you want to convert to speech and play during the call\n const textToSpeech = 'Hello, this is a call initiated from the Sinch Node.js SDK. Goodbye.';\n\n const sinch = new SinchClient({ applicationKey, applicationSecret });\n\n try {\n const response = await sinch.voice.callouts.tts({\n ttsCalloutRequestBody: {\n method: 'ttsCallout',\n ttsCallout: {\n destination: {\n type: 'number',\n endpoint: recipientPhoneNumber,\n },\n text: textToSpeech,\n },\n },\n });\n console.log(`✅ Successfully initiated TTS call to ${recipientPhoneNumber}:`);\n console.log(JSON.stringify(response, null, 2));\n } catch (err) {\n console.error(`❌ Failed to initiate TTS call to ${recipientPhoneNumber}:`);\n console.error(err);\n }\n}\n\nmain();\n" security: - Basic: [] - Signed: [] servers: - url: https://calling.api.sinch.com description: redirected by Sinch to an appropriate region - url: https://calling-use1.api.sinch.com description: United States - url: https://calling-euc1.api.sinch.com description: Europe - url: https://calling-sae1.api.sinch.com description: South America - url: https://calling-apse1.api.sinch.com description: Southeast Asia 1 - url: https://calling-apse2.api.sinch.com description: Southeast Asia 2 /calling/v1/conferences/id/{conferenceId}: parameters: - $ref: '#/components/parameters/conferenceId' get: tags: - Conferences summary: Get Conference Info description: Returns information about a conference that matches the provided conference ID. operationId: Calling_GetConferenceInfo responses: '200': description: A success response, or an [Error](https://developers.sinch.com/docs/voice/api-reference/errors/). content: application/json: schema: $ref: '#/components/schemas/getConferenceInfoResponse' example: participants: - cli: '+46708168731' id: myConfId1 duration: 14 muted: false onhold: false - cli: myUserName id: myConfId2 duration: 12 muted: false onhold: false x-codeSamples: - lang: Java source: "/**\n * Sinch Java Snippet\n *\n *
This snippet is available at https://github.com/sinch/sinch-sdk-java\n *\n *
See https://github.com/sinch/sinch-sdk-java/blob/main/examples/snippets/README.md for details\n */\npackage voice.conferences;\n\nimport com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.domains.voice.api.v1.ConferencesService;\nimport com.sinch.sdk.domains.voice.models.v1.conferences.response.GetConferenceInfoResponse;\nimport com.sinch.sdk.models.Configuration;\nimport java.util.logging.Logger;\nimport utils.Settings;\n\npublic class Get {\n\n private static final Logger LOGGER = Logger.getLogger(Get.class.getName());\n\n public static void main(String[] args) {\n\n String applicationKey = Settings.getApplicationKey().orElse(\"MY_APPLICATION_KEY\");\n String applicationSecret = Settings.getApplicationSecret().orElse(\"MY_APPLICATION_SECRET\");\n\n // The ID of the conference to retrieve\n String conferenceId = \"CONFERENCE_ID\";\n\n Configuration configuration =\n Configuration.builder()\n .setApplicationKey(applicationKey)\n .setApplicationSecret(applicationSecret)\n .build();\n\n SinchClient client = new SinchClient(configuration);\n\n ConferencesService conferencesService = client.voice().v1().conferences();\n\n LOGGER.info(String.format(\"Get info for conference with ID '%s'\", conferenceId));\n\n GetConferenceInfoResponse response = conferencesService.get(conferenceId);\n\n LOGGER.info(\"Response: \" + response);\n }\n}\n" - lang: Node.js source: "/**\n * Sinch Node.js Snippet\n * See: https://github.com/sinch/sinch-sdk-node/examples/snippets\n */\nimport { SinchClient } from '@sinch/sdk-core';\nimport * as dotenv from 'dotenv';\ndotenv.config();\n\nasync function main() {\n const applicationKey = process.env.SINCH_APPLICATION_KEY ?? 'MY_APPLICATION_KEY';\n const applicationSecret = process.env.SINCH_APPLICATION_SECRET ?? 'MY_APPLICATION_SECRET';\n\n // The ID of the conference to retrieve\n const conferenceId = 'CONFERENCE_ID';\n\n const sinch = new SinchClient({ applicationKey, applicationSecret });\n\n try {\n const response = await sinch.voice.conferences.get({ conferenceId });\n console.log('✅ Successfully retrieved conference information.');\n console.log(`Response:\\n${JSON.stringify(response, null, 2)}`);\n } catch (err) {\n console.error(`❌ Failed to retrieve information for conference with ID ${conferenceId}:`);\n console.error(err);\n }\n}\n\nmain();\n" security: - Basic: [] - Signed: [] delete: tags: - Conferences summary: Kick Conference All description: Removes all participants from a conference. operationId: Calling_KickConferenceAll responses: '204': description: A success response, or an [Error](https://developers.sinch.com/docs/voice/api-reference/errors/). x-codeSamples: - lang: Java source: "/**\n * Sinch Java Snippet\n *\n *
This snippet is available at https://github.com/sinch/sinch-sdk-java\n *\n *
See https://github.com/sinch/sinch-sdk-java/blob/main/examples/snippets/README.md for details\n */\npackage voice.conferences;\n\nimport com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.domains.voice.api.v1.ConferencesService;\nimport com.sinch.sdk.models.Configuration;\nimport java.util.logging.Logger;\nimport utils.Settings;\n\npublic class KickAll {\n\n private static final Logger LOGGER = Logger.getLogger(KickAll.class.getName());\n\n public static void main(String[] args) {\n\n String applicationKey = Settings.getApplicationKey().orElse(\"MY_APPLICATION_KEY\");\n String applicationSecret = Settings.getApplicationSecret().orElse(\"MY_APPLICATION_SECRET\");\n\n // The ID of the conference to remove all participants from\n String conferenceId = \"CONFERENCE_ID\";\n\n Configuration configuration =\n Configuration.builder()\n .setApplicationKey(applicationKey)\n .setApplicationSecret(applicationSecret)\n .build();\n\n SinchClient client = new SinchClient(configuration);\n\n ConferencesService conferencesService = client.voice().v1().conferences();\n\n LOGGER.info(String.format(\"Kick all participants from conference with ID '%s'\", conferenceId));\n\n conferencesService.kickAll(conferenceId);\n\n LOGGER.info(\"Done\");\n }\n}\n" - lang: Node.js source: "/**\n * Sinch Node.js Snippet\n * See: https://github.com/sinch/sinch-sdk-node/examples/snippets\n */\nimport { SinchClient } from '@sinch/sdk-core';\nimport * as dotenv from 'dotenv';\ndotenv.config();\n\nasync function main() {\n const applicationKey = process.env.SINCH_APPLICATION_KEY ?? 'MY_APPLICATION_KEY';\n const applicationSecret = process.env.SINCH_APPLICATION_SECRET ?? 'MY_APPLICATION_SECRET';\n\n // The ID of the conference to remove all participants from\n const conferenceId = 'CONFERENCE_ID';\n\n const sinch = new SinchClient({ applicationKey, applicationSecret });\n\n try {\n await sinch.voice.conferences.kickAll({ conferenceId });\n console.log(`✅ Successfully kicked all participants from conference with ID ${conferenceId}.`);\n } catch (err) {\n console.error(`❌ Failed to kick all participants from conference with ID ${conferenceId}:`);\n console.error(err);\n }\n}\n\nmain();\n" security: - Basic: [] - Signed: [] servers: - url: https://calling.api.sinch.com description: redirected by Sinch to an appropriate region - url: https://calling-use1.api.sinch.com description: United States - url: https://calling-euc1.api.sinch.com description: Europe - url: https://calling-sae1.api.sinch.com description: South America - url: https://calling-apse1.api.sinch.com description: Southeast Asia 1 - url: https://calling-apse2.api.sinch.com description: Southeast Asia 2 /calling/v1/conferences/id/{conferenceId}/{callId}: parameters: - $ref: '#/components/parameters/callId' - $ref: '#/components/parameters/conferenceId' patch: tags: - Conferences summary: Manage Conference Participant description: 'Manages conference participant in a specified conference: * mute / unmute * put on hold / resume.' operationId: Calling_ManageConferenceParticipant requestBody: content: application/json: schema: $ref: '#/components/schemas/manageConferenceParticipantRequest' examples: mute: $ref: '#/components/examples/muteParticipant' unmute: $ref: '#/components/examples/unmuteParticipant' hold: $ref: '#/components/examples/onHoldParticipant' resume: $ref: '#/components/examples/resumeParticipant' responses: '200': description: A success response, or an [Error](https://developers.sinch.com/docs/voice/api-reference/errors/). content: application/json: example: content: Successful response x-codeSamples: - lang: Java source: "/**\n * Sinch Java Snippet\n *\n *
This snippet is available at https://github.com/sinch/sinch-sdk-java\n *\n *
See https://github.com/sinch/sinch-sdk-java/blob/main/examples/snippets/README.md for details\n */\npackage voice.conferences;\n\nimport com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.domains.voice.api.v1.ConferencesService;\nimport com.sinch.sdk.domains.voice.models.v1.MusicOnHold;\nimport com.sinch.sdk.domains.voice.models.v1.conferences.request.ManageConferenceParticipantRequest;\nimport com.sinch.sdk.models.Configuration;\nimport java.util.logging.Logger;\nimport utils.Settings;\n\npublic class ManageParticipant {\n\n private static final Logger LOGGER = Logger.getLogger(ManageParticipant.class.getName());\n\n public static void main(String[] args) {\n\n String applicationKey = Settings.getApplicationKey().orElse(\"MY_APPLICATION_KEY\");\n String applicationSecret = Settings.getApplicationSecret().orElse(\"MY_APPLICATION_SECRET\");\n\n // The ID of the conference to manage a participant in\n String conferenceId = \"CONFERENCE_ID\";\n // The Call ID of the participant to manage in the conference\n String callId = \"CALL_ID\";\n\n Configuration configuration =\n Configuration.builder()\n .setApplicationKey(applicationKey)\n .setApplicationSecret(applicationSecret)\n .build();\n\n SinchClient client = new SinchClient(configuration);\n\n ConferencesService conferencesService = client.voice().v1().conferences();\n\n ManageConferenceParticipantRequest.CommandEnum command =\n ManageConferenceParticipantRequest.CommandEnum.MUTE;\n MusicOnHold moh = MusicOnHold.MUSIC1;\n\n LOGGER.info(\n String.format(\n \"Manage participant with ID '%s' for conference with ID '%s'. Setting command to '%s'\"\n + \" and music on hold to '%s'\",\n callId, conferenceId, command, moh));\n\n ManageConferenceParticipantRequest request =\n ManageConferenceParticipantRequest.builder()\n .setCommand(command)\n .setMusicOnHold(moh)\n .build();\n\n conferencesService.manageParticipant(conferenceId, callId, request);\n\n LOGGER.info(\"Done\");\n }\n}\n" - lang: Node.js source: "/**\n * Sinch Node.js Snippet\n * See: https://github.com/sinch/sinch-sdk-node/examples/snippets\n */\nimport { SinchClient } from '@sinch/sdk-core';\nimport * as dotenv from 'dotenv';\ndotenv.config();\n\nasync function main() {\n const applicationKey = process.env.SINCH_APPLICATION_KEY ?? 'MY_APPLICATION_KEY';\n const applicationSecret = process.env.SINCH_APPLICATION_SECRET ?? 'MY_APPLICATION_SECRET';\n\n // The ID of the conference to manage a participant in\n const conferenceId = 'CONFERENCE_ID';\n // The Call ID of the participant to manage in the conference\n const callId = 'PARTICIPANT_CALL_ID';\n\n const sinch = new SinchClient({ applicationKey, applicationSecret });\n\n try {\n await sinch.voice.conferences.manageParticipant({\n conferenceId,\n callId,\n manageParticipantRequestBody: {\n command: 'onhold',\n moh: 'music1',\n },\n });\n console.log(`✅ Successfully managed participant with Call ID ${callId} in conference with ID ${conferenceId}.`);\n } catch (err) {\n console.error(`❌ Failed to manage participant with Call ID ${callId} in conference with ID ${conferenceId}:`);\n console.error(err);\n }\n}\n\nmain();\n" security: - Basic: [] - Signed: [] delete: tags: - Conferences summary: Kick Conference Participant description: Remove a specified conference participant from a specified conference. operationId: Calling_KickConferenceParticipant responses: '200': description: A success response, or an [Error](https://developers.sinch.com/docs/voice/api-reference/errors/). content: application/json: example: content: 200 Successful response x-codeSamples: - lang: Java source: "/**\n * Sinch Java Snippet\n *\n *
This snippet is available at https://github.com/sinch/sinch-sdk-java\n *\n *
See https://github.com/sinch/sinch-sdk-java/blob/main/examples/snippets/README.md for details\n */\npackage voice.conferences;\n\nimport com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.domains.voice.api.v1.ConferencesService;\nimport com.sinch.sdk.models.Configuration;\nimport java.util.logging.Logger;\nimport utils.Settings;\n\npublic class KickParticipant {\n\n private static final Logger LOGGER = Logger.getLogger(KickParticipant.class.getName());\n\n public static void main(String[] args) {\n\n String applicationKey = Settings.getApplicationKey().orElse(\"MY_APPLICATION_KEY\");\n String applicationSecret = Settings.getApplicationSecret().orElse(\"MY_APPLICATION_SECRET\");\n\n // The ID of the conference to remove a participant from\n String conferenceId = \"CONFERENCE_ID\";\n // The Call ID of the participant to remove from the conference\n String callId = \"CALL_ID\";\n\n Configuration configuration =\n Configuration.builder()\n .setApplicationKey(applicationKey)\n .setApplicationSecret(applicationSecret)\n .build();\n\n SinchClient client = new SinchClient(configuration);\n\n ConferencesService conferencesService = client.voice().v1().conferences();\n\n LOGGER.info(\n String.format(\n \"Kick participant with call ID '%s' for conference with ID '%s'\",\n callId, conferenceId));\n\n conferencesService.kickParticipant(conferenceId, callId);\n\n LOGGER.info(\"Done\");\n }\n}\n"
- lang: Node.js
source: "/**\n * Sinch Node.js Snippet\n * See: https://github.com/sinch/sinch-sdk-node/examples/snippets\n */\nimport { SinchClient } from '@sinch/sdk-core';\nimport * as dotenv from 'dotenv';\ndotenv.config();\n\nasync function main() {\n const applicationKey = process.env.SINCH_APPLICATION_KEY ?? 'MY_APPLICATION_KEY';\n const applicationSecret = process.env.SINCH_APPLICATION_SECRET ?? 'MY_APPLICATION_SECRET';\n\n // The ID of the conference to remove a participant from\n const conferenceId = 'CONFERENCE_ID';\n // The Call ID of the participant to remove from the conference\n const callId = 'PARTICIPANT_CALL_ID';\n\n const sinch = new SinchClient({ applicationKey, applicationSecret });\n\n try {\n await sinch.voice.conferences.kickParticipant({\n conferenceId,\n callId,\n });\n console.log(`✅ Successfully kicked participant with Call ID ${callId} from conference with ID ${conferenceId}.`);\n } catch (err) {\n console.error(`❌ Failed to kick participant with Call ID ${callId} from conference with ID ${conferenceId}:`);\n console.error(err);\n }\n}\n\nmain();\n"
security:
- Basic: []
- Signed: []
servers:
- url: https://calling.api.sinch.com
description: redirected by Sinch to an appropriate region
- url: https://calling-use1.api.sinch.com
description: United States
- url: https://calling-euc1.api.sinch.com
description: Europe
- url: https://calling-sae1.api.sinch.com
description: South America
- url: https://calling-apse1.api.sinch.com
description: Southeast Asia 1
- url: https://calling-apse2.api.sinch.com
description: Southeast Asia 2
/calling/v1/conferences/id/{conference_id}:
get:
operationId: getConference
summary: Get Conference Information
description: Returns information about an ongoing conference including a list of participants.
tags:
- Conferences
parameters:
- $ref: '#/components/parameters/ConferenceId'
responses:
'200':
description: Conference details
content:
application/json:
schema:
$ref: '#/components/schemas/ConferenceInfo'
'401':
description: Unauthorized
'404':
description: Conference not found
security:
- basicAuth: []
delete:
operationId: kickAllFromConference
summary: Kick All Participants from Conference
description: Removes all participants from an ongoing conference, effectively ending the conference.
tags:
- Conferences
parameters:
- $ref: '#/components/parameters/ConferenceId'
responses:
'200':
description: All participants removed
'401':
description: Unauthorized
'404':
description: Conference not found
security:
- basicAuth: []
servers:
- url: https://calling.api.sinch.com
description: Global Production Server
/calling/v1/conferences/id/{conference_id}/{call_id}:
patch:
operationId: manageConferenceParticipant
summary: Manage Conference Participant
description: Manages a specific participant in a conference. Can mute, unmute, or put a participant on hold.
tags:
- Conferences
parameters:
- $ref: '#/components/parameters/ConferenceId'
- $ref: '#/components/parameters/CallId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ManageParticipantRequest'
responses:
'200':
description: Participant updated
'401':
description: Unauthorized
'404':
description: Conference or participant not found
security:
- basicAuth: []
delete:
operationId: kickParticipantFromConference
summary: Kick Participant from Conference
description: Removes a specific participant from an ongoing conference.
tags:
- Conferences
parameters:
- $ref: '#/components/parameters/ConferenceId'
- $ref: '#/components/parameters/CallId'
responses:
'200':
description: Participant removed
'401':
description: Unauthorized
'404':
description: Conference or participant not found
security:
- basicAuth: []
servers:
- url: https://calling.api.sinch.com
description: Global Production Server
components:
schemas:
destinationMxp:
type: object
description: The type of device and number or endpoint to call.
required:
- type
- endpoint
properties:
type:
$ref: '#/components/schemas/mxpDestination'
endpoint:
type: string
description: For type `userName` the value is the username for a data endpoint.
format: user name
example: myUserName
conferenceCallout:
type: object
description: The conference callout calls a phone number or a user. When the call is answered, it's connected to a conference room.
required:
- destination
- conferenceId
allOf:
- $ref: '#/components/schemas/calloutRequestBase'
- type: object
properties:
destination:
oneOf:
- $ref: '#/components/schemas/destinationPstn'
- $ref: '#/components/schemas/destinationMxp'
- $ref: '#/components/schemas/destinationSip'
conferenceId:
type: string
description: The conferenceId of the conference to which you want the callee to join. If the conferenceId doesn't exist a conference room will be created.
conferenceDtmfOptions:
$ref: '#/components/schemas/conferenceDtmfOptions'
maxDuration:
type: integer
enableAce:
type: boolean
description: If `enableAce` is set to true and the application has a callback URL specified, you will receive an ACE callback when the call is answered. When the callback is received, your platform must respond with a svamlet containing the `connectConf` action in order to add the call to a conference or create the conference if it's the first call. If it's set to false, no ACE event will be sent to your backend.
Note if the call is towards an InApp destination `type:` `username`, then no ACE will be issued when the call is connected, even if `enableAce` is present in the callout request.
default: false
example: false
enableDice:
type: boolean
description: If `enableDice` is set to true and the application has a callback URL specified, you will receive a DiCE callback when the call is disconnected. If it's set to false, no DiCE event will be sent to your backend.
Note if the call is towards an InApp destination `type:` `username`, then no DICE will be issued at the end of the call, even if `enableDice` is present in the callout request.
default: false
example: false
enablePie:
type: boolean
description: If `enablePie` is set to true and the application has a callback URL specified, you will receive a PIE callback after a `runMenu` action, with the information of the action that the user took. If it's set to false, no PIE event will be sent to your backend.
default: false
example: false
locale:
type: string
format: ISO 639
description: The voice and language you want to use for the prompts. This can either be defined by the ISO 639 locale and language code or by specifying a particular voice. Supported languages and voices are detailed [here](https://developers.sinch.com/docs/voice/api-reference/voice-locales/)
default: en-US
example: en-US
greeting:
type: string
description: The text that will be spoken as a greeting.
example: Welcome to the conference
mohClass:
description: Means "music-on-hold." It's an optional parameter that specifies what the first participant should listen to while they're alone in the conference, waiting for other participants to join. It can take one of these pre-defined values:
Your PIN code is
Please enter it now