# Patch an ongoing call by session ID and call name

Interact with an ongoing call identified by its session and call name by submitting a set of SVAML commands. Use this to force disconnect, play messages, bridge with another call, or perform other call control actions.

Endpoint: PATCH /v2/projects/{projectId}/sessions/{sessionId}/calls/{callName}
Version: 2.0.58
Security: BasicAuth, SinchOAuth2

## Security:

  - `BasicAuth` (unknown)
    http basic

  - `SinchOAuth2` (unknown)
    oauth2

## Path parameters:

  - `projectId` (string, required)
    The ID of the project.

  - `sessionId` (string, required)
    The ID of the session.

  - `callName` (string, required)
    The name of the call leg within the session, as assigned by the `callName` property in the `dial` command.

## Header parameters:

  - `Idempotency-Key` (string)
    Client-generated idempotency key to safely retry requests. The server uses this key to recognize retries of the same request. If a request with the same key is received within 10 minutes, the server returns the cached response from the original request. Using a random UUID (v4) is strongly recommended.

## Request fields (application/json):

  - `commands` (array, required)
    An ordered list of SVAML v2 (Sinch Voice Application Markup Language) commands that describe a call flow. Commands are executed sequentially in the order they are defined.
**Blocking vs. non-blocking:** Some commands block execution until they complete (`pause`, `webhook`, `menu`, `gotoMenu`), while others return immediately and run in parallel (`dial`, `messages`, `amd`, `answer`, `hangup`, `startRecording`, `stopRecording`, `bridgeCall`, `stopMessages`). Each command's description specifies its behavior.
**Nesting scope:** Commands that appear inside event handlers (e.g., `dial.events.onAnswer`, `messages.events.onFinish`) form independent sequences and execute in their own context — they are not continuations of the parent sequence.

  - `commands.command` (string, required)
    Command to run Answering Machine Detection on the call
    Enum: "amd"

  - `commands.events` (object)
    SVAML commands to execute based on the answering machine detection result. These events define different call flows depending on whether a human, machine, beep, or unknown entity answers the call.

  - `commands.command` (string, required)
    Command to initiate a new call
    Enum: "dial"

  - `commands.callName` (string)
    Identifier for this call leg within the session. Must be unique across all active call legs in the session.
Other commands (e.g., `hangup`) can reference this name to target this specific leg.
    Example: outgoing

  - `commands.from` (any)
    Call origin - Phone Number or SIP endpoint

  - `commands.from.type` (string, required)
    Routes the call to a phone number on the Public Switched Telephone Network (PSTN). The number must be in E.164 format.
    Enum: "PHONE"

  - `commands.from.phone` (object, required)

  - `commands.from.phone.number` (string, required)
    E.164 Phone number

  - `commands.from.type` (string, required)
    Indicates the call originated from a SIP (Session Initiation Protocol) endpoint.
    Enum: "SIP"

  - `commands.from.sip` (object, required)

  - `commands.from.sip.endpoint` (string, required)
    SIP URI of the originating endpoint. Both `sip:` (unencrypted) and `sips:` (TLS-encrypted) schemes are supported.

  - `commands.from.sip.displayName` (string)
    Display name presented to the called party as the caller identity. Transmitted as the display name part of the SIP `From` header (for example, `Alice <sip:alice@example.com>`).
    Example: Alice

  - `commands.to` (any, required)
    Call destination - Phone Number or Stream URI

  - `commands.to.type` (string, required)
    Routes the call to a SIP (Session Initiation Protocol) endpoint.
    Enum: "SIP"

  - `commands.to.sip` (object, required)

  - `commands.to.sip.endpoint` (string, required)
    SIP URI of the destination endpoint. Both `sip:` (unencrypted) and `sips:` (TLS-encrypted) schemes are supported.

  - `commands.to.sip.transport` (string)
    Transport protocol to use for the SIP signalling channel.
If omitted, the platform selects a default based on the URI scheme: `UDP` for `sip:` and `TLS` for `sips:`. Setting this explicitly overrides that default — for example, to force `TCP` for a `sip:` URI or to use `TLS` without switching to the `sips:` scheme.
    Enum: "UDP", "TCP", "TLS"

  - `commands.to.sip.callHeaders` (array)
    Custom SIP headers to be sent in the call setup.

  - `commands.to.sip.callHeaders.key` (string, required)
    Name of the SIP header.
    Example: X-Correlation-Id

  - `commands.to.sip.callHeaders.value` (string)
    Value of the SIP header.
    Example: 12345

  - `commands.to.type` (string, required)
    Routes the call to a WebSocket stream endpoint for real-time audio processing.
    Enum: "STREAM"

  - `commands.to.stream` (object, required)

  - `commands.to.stream.endpoint` (string, required)
    WebSocket endpoint that will accept the incoming connection for real-time audio streaming. Must be a valid WebSocket URL using either `ws://` or `wss://` (recommended). The URL must be reachable from the public internet and capable of handling the negotiated stream protocol.
    Example: wss://example.com

  - `commands.to.stream.streamOptions` (object)

  - `commands.to.stream.streamOptions.version` (integer)
    Defines the version of the stream protocol.
    Example: 1

  - `commands.to.stream.streamOptions.codec` (string)
    Defines the audio codec/format used for the stream audio payload.
Currently, only `PCM` is supported (uncompressed raw audio). Use `sampleRate` to configure the sampling rate for the stream.
    Enum: "PCM"

  - `commands.to.stream.streamOptions.sampleRate` (integer)
    Defines the audio sampling rate (Hz) used for the stream.

For calls that traverse the PSTN, audio is typically sampled at 8 kHz, so using a higher value will not improve perceived quality. 
Higher sample rates can be useful for non-PSTN scenarios (for example, SIP/streaming paths), but will increase bandwidth usage and processing load.
    Enum: "8000", "16000", "24000", "44100", "48000", "96000"

  - `commands.to.stream.callHeaders` (array)
    Custom headers to be sent in the call setup.

  - `commands.to.stream.callHeaders.key` (string, required)
    Name of the header.
    Example: headerKey

  - `commands.to.stream.callHeaders.value` (string)
    Value of the header.
    Example: headerValue

  - `commands.to.type` (string, required)
    Connects to the Voice Relay service to enable STT and TTS services...
    Enum: "VOICE_RELAY"

  - `commands.to.voiceRelay` (object, required)

  - `commands.to.voiceRelay.endpoint` (string, required)
    URL to the server that will accept the web-socket request
    Example: wss://acme.com/agent

  - `commands.to.voiceRelay.enableInterruptions` (boolean)
    Allow "barge-in" during text-to-speech (TTS) playback.
When `true`, TTS playback is interrupted as soon as inbound speech is detected, unless the currently playing content is marked as uninterruptible.
When `false`, TTS playback continues uninterrupted, but an interruption signal is still sent over the WebSocket so the client application can choose to stop playback manually if needed.
    Example: true

  - `commands.to.voiceRelay.ttsVoice` (string, required)
    Sinch Voice Name to use for text-to-speech. Each voice is tied to a specific language variant, gender, and pricing model (Free/Standard or Paid/Generative). See [https://developers.sinch.com/docs/voice-2.0/api-reference/text-to-speech-voices#text-to-speech-voices](https://developers.sinch.com/docs/voice-2.0/api-reference/text-to-speech-voices#currently-available-languages) for details
    Enum: "Aarav", "Aarav_2", "Aarohi", "Aarti", "Aarti_2", "Aarti_3", "Aashi", "Abbi", "Abdullah", "Abeo", "Abril", "Achara", "Ada", "Ada_2", "Adam", "Adam_2", "Aditi", "Adri", "Adriano", "Agnieszka", "Ahmet", "Aigul", "Ainhoa", "Alain", "Alba", "Aled", "Aleksandar", "Alessio", "Alessio_2", "Alex", "Alfie", "Ali", "Alina", "Alloy", "Alloy_2", "Alonso", "Alvaro", "Amal", "Amala", "Amanda", "Amany", "Amber", "Ambre", "Ameha", "Amina", "Amy", "Amy_2", "Amy_3", "Ana", "Anahit", "Ananya", "Ananya_2", "Anbu", "Ander", "Andre", "Andre_2", "Andrea", "Andres", "Andrew", "Andrew_2", "Andrew_3", "Andrew_4", "Angelo", "Anila", "Annette", "Antoine", "Antonin", "Antonio", "Anu", "Aoi", "Arabella", "Ardi", "Aria", "Aria_2", "Ariane", "Arjun", "Arjun_2", "Arjun_3", "Arlet", "Arnau", "Arnaud", "Arthur", "Arya", "Arya_2", "Asad", "Ashley", "Asilia", "Astrid", "Athina", "Ava", "Ava_2", "Ava_3", "Avri", "Ayanda", "Ayanda_2", "Aysha", "Babek", "Banu", "Bashkar", "Bassel", "Bataa", "Beatrice", "Beatriz", "Belkys", "Bella", "Benigno", "Bernd", "Bianca", "Bianca_2", "Bianca_3", "Blessica", "BongJin", "Borislav", "Brandon", "Brandon_2", "Bree", "Brenda", "Brian", "Brian_2", "Brian_3", "Brigitte", "Bryan", "Bryan_2", "Bryan_3", "Burcu", "Calimero", "Camila", "Camilla", "Camilla_2", "Camilla_3", "Candela", "Carla", "Carlos", "Carlota", "Carly", "Carmen", "Cataldo", "Catalina", "Cecilio", "Celeste", "Celine", "Celine_2", "Chantal", "Chanthavong", "Charline", "Chilemba", "Christel", "Christoph", "Christopher", "Christopher_2", "Clara", "Claude", "Colette", "Colm", "Conchita", "Connor", "Conrad", "Cora", "Cora_2", "Coralie", "Cristiano", "Daichi", "Dalia", "Dalia_2", "Daniel", "Daniel_2", "Danielle", "Danielle_2", "Dario", "Dariya", "Darren", "Daudi", "Daulet", "Davis", "Davis_2", "Davis_3", "Dena", "Denise", "Derek", "Dhwani", "Diego", "Dilara", "Dimas", "Dmitry", "Donato", "Dora", "Duarte", "Duncan", "Dustin", "Echo", "Eka", "Elena", "Elias", "Elimu", "Elin", "Elizabeth", "Elke", "Elliot", "Eloise", "Elsa", "Elsie", "Elvira", "Elza", "Emel", "Emil", "Emilio", "Emily", "Emma", "Emma_2", "Emma_3", "Emma_4", "Enric", "Enrique", "Eric", "Estrella", "Ethan", "Evelyn", "Everita", "Ewa", "Ewa_2", "Ezinne", "Fabio", "Fabiola", "Fable", "Fabrice", "Fahed", "Farid", "Fatima", "Federico", "Fenna", "Fernanda", "Fiamma", "Filiz", "Finn", "Florian", "Florian_2", "Florin", "Francisca", "Freya", "Gabrielle", "Gabrielle_2", "Gabrijela", "Gadis", "Gagan", "Gemma", "Gemma_2", "Geraint", "Gerard", "Gerardo", "Gianni", "Giorgi", "Giorgio", "Giovanna", "Gisela", "Giuseppe", "Giuseppe_2", "Gonzalo", "GookMin", "Goran", "Grace", "Gregory", "Gudrun", "Gul", "GulNawaz", "Gunnar", "Guy", "Gwyneth", "Hala", "Hamdan", "Hamed", "Hannah", "Hannah_2", "Hans", "Harri", "Hayk", "Hedi", "Hemkala", "Henri", "Hila", "Hillevi", "HiuGaai", "Hiujin", "HiuMaan", "HoaiMy", "Hollie", "HsiaoChen", "HsiaoYu", "Humberto", "Hyunsu", "Hyunsu_2", "Hyunsu_3", "Ida", "Ilir", "Iman", "Imani", "Imelda", "Ines", "Ines_2", "Ingrid", "InJoon", "Irene", "Irma", "Isabella", "Isabella_2", "Isabella_3", "Isabelle", "Isabelle_2", "Iselin", "Isidora", "Ismael", "Ivy", "Ivy_2", "Jacek", "Jacob", "Jacqueline", "Jajang", "Jamal", "James", "Jan", "Jane", "Jane_2", "Jann", "Jasmine", "Jasmine_2", "Jason", "Javier", "Jean", "Jenny", "Jenny_2", "Jenny_3", "Jeppe", "Jerome", "Jihye", "JiMin", "Jimmie", "Jitka", "Joana", "Joanna", "Joanna_2", "Joanna_3", "Joanne", "Joey", "Joey_2", "Jonas", "Jorge", "Jorge_2", "Joseph", "Josephine", "Juan", "Julio", "Justin", "Justin_2", "Kai", "Kajal", "Kajal_2", "Kalina", "Kani", "Karina", "Karl", "Karla", "Kasper", "Katja", "Kavya", "Kavya_2", "Kazuha", "Keita", "Ken", "Kendra", "Kendra_2", "Keomany", "Kert", "Kevin", "Killian", "Kim", "Kimberly", "Kimberly_2", "Klarissa", "Klaus", "Kumar", "Kunal", "Kunal_2", "Laia", "Laila", "Laith", "Larissa", "Latifa", "Laura", "Laura_2", "Layla", "Lea", "Lea_2", "Lea_3", "Leah", "Leila", "Leni", "Lennart", "Leonas", "Leticia", "Lewis", "Lia", "Liam", "Lian", "Lian_2", "Libby", "Liberto", "Lisa", "Lisa_2", "Lisandro", "Liv", "Livia", "Livia_2", "Lola", "Lorena", "Lorenzio", "Lorenzo", "Lotte", "Louisa", "Lucia", "Lucia_2", "Lucia_3", "Luciano", "Lucien", "Luis", "Lukas", "Luke", "Luna", "Luna_2", "Lupe", "Lupe_2", "Lupe_3", "Maarten", "Macerio", "Macerio_2", "Madhur", "Madina", "Mads", "Maisie", "Maja", "Manohar", "Manuel", "Manuela", "Marcello", "Marcelo", "Marek", "Margarita", "Maria", "Marija", "Marina", "Mario", "Marlene", "Marta", "Maryam", "Masaru", "Mateo", "Mathieu", "Matthew", "Matthew_2", "Matthew_3", "Mattias", "Maurice", "Maxim", "Maya", "Mayu", "Mekdes", "Mia", "Mia_2", "Mia_3", "Michelle", "Midhun", "Miguel", "Mitchell", "Mizuki", "Moaz", "Mohan", "Molly", "Monica", "Mouna", "Muuse", "Nabanita", "Naja", "NamMinh", "Nanami", "Nanami_2", "Nancy", "Nancy_2", "Naoki", "Natasha", "Neerja", "Neerja_2", "Neil", "Nestoras", "Nia", "Niamh", "Niamh_2", "Nicholas", "Nicholas_2", "Nicolau", "Nicole", "Nil", "Nilar", "Nils", "Niranjan", "Niwat", "Noah", "Noemi", "Noora", "Noura", "Nova", "Nova_2", "Nuria", "Ojas", "Ola", "Ola_2", "Oliver", "Olivia", "Ollie", "Ollie_2", "Omar", "Ona", "Onyx", "Orla", "Osman", "Ostap", "Pallavi", "Palmira", "Paloma", "Paola", "Pedro", "Pedro_2", "Pelayo", "Penelope", "Pernille", "Petra", "Phoebe", "Phoebe_2", "Pierina", "Piseth", "Polina", "Prabhat", "Prabhat_2", "Pradeep", "Premwadee", "Priyom", "Rafiki", "Ralf", "Rami", "Ramona", "Rana", "Raquel", "Raveena", "Reem", "Rehaan", "Rehaan_2", "Rehema", "Remi", "Remi_2", "Remy", "Remy_2", "Renata", "Ricardo", "Rinaldo", "Roberto", "Rodrigo", "Roger", "Roi", "Rok", "Rosa", "Ruben", "Russell", "Ruth", "Ruth_2", "Ryan", "Ryan_2", "Sabela", "Sabrina", "Sabrina_2", "Sagar", "Saleh", "Salli", "Salli_2", "Salli_3", "Salma", "Salman", "Salome", "Sam", "Sameera", "Samuel", "Sana", "Sapna", "Sara", "Saranya", "Sardor", "Saul", "Sebastian", "Selma", "SeoHyeon", "Seoyeon", "Seoyeon_2", "Seoyeon_3", "Seraphina", "Seraphina_2", "Serena", "Serena_2", "Sergio", "Sergio_2", "Shakir", "Shimmer", "Shiori", "Shruti", "Siqiniq", "Siqiniq_2", "Siti", "Sobhana", "Soffie", "Sofia", "Sofie", "Sonia", "SoonBok", "Sophie", "Sophie_2", "Srecko", "Sreymom", "Steffan", "Steffan_2", "Steffan_3", "Stephen", "Stephen_2", "Subhasini", "Sukant", "SunHi", "SunHi_2", "Surya", "Suvi", "Svetlana", "Swara", "Sylvie", "Sylvie_2", "Taim", "Takumi", "Takumi_2", "Tamas", "Tania", "Tanishaa", "Tanja", "Taqqiq", "Taqqiq_2", "Tatyana", "Teo", "Teresa", "Thalita", "Thalita_2", "Thalita_3", "Thando", "Themba", "Thiago", "Thierry", "Thierry_2", "Thiha", "Thilini", "Thomas", "Tiana", "Tiffany", "Tim", "Tina", "Tomas", "Tomoko", "Tony", "Triana", "Tristan", "Tristan_ES", "Tristan_ES_2", "Tuti", "Tyler", "Ubax", "Uzma", "Vaani", "Valentina", "Valerio", "Valluvar", "Venba", "Vera", "Vesna", "Vicki", "Vicki_2", "Vicki_3", "Victor", "Viktoria", "Vitoria", "Vitoria_2", "Vivienne", "Vivienne_2", "Vlasta", "WanLung", "Wayne", "Willem", "William", "William_2", "Xiaochen", "Xiaochen_2", "Xiaochen_3", "Xiaochen_4", "Xiaohan", "Xiaohan_2", "Xiaomeng", "XiaoMin", "Xiaomo", "Xiaoqiu", "Xiaorou", "Xiaorui", "Xiaoshuang", "Xiaoshuang_2", "Xiaoshuang_3", "Xiaotong", "Xiaoxiao", "Xiaoxiao_2", "Xiaoxiao_3", "Xiaoxiao_4", "Xiaoxiao_5", "Xiaoyan", "Xiaoyi", "Xiaoyi_2", "Xiaoyou", "Xiaoyou_2", "Xiaoyou_3", "Xiaoyu", "Xiaoyu_2", "Xiaozhen", "Ximena", "Ximena_ES", "Ximena_ES_2", "Ximena_ES_3", "Yago", "Yan", "Yara", "Yashica", "Yasmin", "Yesui", "Yolanda", "YuJin", "Yundeng", "Yunfan", "Yunfan_2", "Yunfeng", "Yunhan", "Yunhao", "YunJhe", "Yunjian", "Yunjie", "YunSong", "Yunxi", "Yunxi_2", "Yunxia", "Yunxia_2", "Yunxiang", "Yunxiao", "Yunxiao_2", "Yunyang", "Yunye", "Yunye_2", "Yunyi", "Yunyi_2", "Yunze", "Yunzhe", "Yves", "Yvette", "Zariyah", "Zayd", "Zeina", "Zhiyu", "Zhiyu_2", "Zofia", "Zuri"

  - `commands.to.voiceRelay.sttLanguage` (string, required)
    BCP-47 language tag used for speech-to-text transcription of the inbound audio.

This value determines which language model is used for transcription.
    Example: en-US

  - `commands.dialTimeoutDurationSeconds` (integer)
    Maximum time in seconds to wait for the call to be answered. If the timeout expires without an answer, the `onTimeout` event is triggered.
    Example: 15

  - `commands.maxCallDurationSeconds` (integer)
    Maximum duration of the call in seconds. The call is terminated automatically when this limit is reached.
    Example: 3600

  - `commands.events` (object)
    Webhook to handle call events, used when callBehaviors are set to WEBHOOK

  - `commands.command` (string, required)
    Command to play a message on the channel
    Enum: "messages"

  - `commands.messagesName` (string)
    Name of the message for identification and reference within the call session.
This name is used to uniquely identify the message and must be unique within the current call session.
This name can be referenced in other commands (e.g., `stopMessages`) to control this specific message.
    Example: my-messages

  - `commands.messages` (array, required)
    Ordered list of messages to play.

  - `commands.messages.type` (string, required)
    Text-to-speech message to be played during the call.
    Enum: "SAY"

  - `commands.messages.say` (object, required)

  - `commands.messages.say.text` (string, required)
    The text to be synthesized into speech.
If `format` is `TEXT` (default), provide plain text.
If `format` is `SSML`, provide a valid SSML document (for example, `<speak>...</speak>`).
    Example: Hello world

  - `commands.messages.say.format` (string)
    Format of the message
    Enum: "TEXT", "SSML"

  - `commands.messages.type` (string, required)
    Audio file playback during the call.
    Enum: "PLAY"

  - `commands.messages.play` (object, required)

  - `commands.messages.play.url` (string, required)
    URL of the media to send

  - `commands.events` (object)
    SVAML commands to execute based on message playback outcomes.

  - `commands.command` (string, required)
    Command to stop playing messages
    Enum: "stopMessages"

  - `commands.messagesName` (string, required)
    Name of the message sequence to stop, as set by `messagesName` in the `messages` command.

  - `commands.command` (string, required)
    Command to trigger a mid-call webhook
    Enum: "webhook"

  - `commands.webhookName` (string, required)
    Name for this webhook event. When triggered, the webhook request's `event` property will contain this name prepended with `call.webhook.`.
For example, if `webhookName` is set to `"my.custom.event"`, the event will be delivered as `"call.webhook.my.custom.event"`.

  - `commands.url` (string, required)
    URL of the webhook endpoint to send the mid-call event to.

  - `commands.fallbackUrl` (string)
    Fallback webhook URL used when the primary webhook URL fails.
A failed request is re-sent to this URL immediately. After repeated consecutive failures of the primary URL, requests are sent only here until the primary URL recovers.
See *Timeouts and failover* in the **Webhooks** section for the authoritative algorithm.

  - `commands.command` (string, required)
    Hangup call
    Enum: "hangup"

  - `commands.callName` (string)
    Name of the call leg to end, as set by `callName` in the `dial` command.
If omitted, the current call leg is ended.
    Example: origin

  - `commands.command` (string, required)
    Answer call
    Enum: "answer"

  - `commands.command` (string, required)
    Pause execution.
    Enum: "pause"

  - `commands.durationMilliseconds` (integer, required)
    Duration of the pause in milliseconds.
    Example: 1000

  - `commands.command` (string, required)
    Command to start recording on the channel
    Enum: "startRecording"

  - `commands.recordingName` (string)
    Identifier for this recording within the session. Must be unique across active recordings in the session.
Other commands (e.g., `stopRecording`) reference this name to target a specific recording.
Setting the recording name is useful for stopping the recording using the `stopRecording` command. If name is not set, recording can only be stopped when the call is disconnected.
    Example: my-recording

  - `commands.recordingOptions` (object, required)
    Recording options for this recording.

  - `commands.recordingOptions.format` (string)
    Audio format for this recording.
    Enum: "MP3", "WAV"

  - `commands.recordingOptions.recordingType` (string)
    The type of recording to perform.
    Enum: "COMBINED", "INBOUND", "OUTBOUND"

  - `commands.recordingOptions.destination` (string, required)
    Select target service to receive recorded and transcribed files
    Enum: "AWS", "GCP", "AZURE"

  - `commands.recordingOptions.destinationUrl` (string, required)
    Destination URL for the recording.
    Example: s3://voice-recordings-prod/calls

  - `commands.recordingOptions.credentials` (string, required)
    Credentials to third party storage.
    Example: accessKeyId:secretAccessKey:eu-central-1

  - `commands.recordingOptions.transcriptionOptions` (object)
    Configuration for automatic speech-to-text transcription of the recording.

  - `commands.recordingOptions.transcriptionOptions.isEnabled` (boolean, required)
    If true, the recording will be transcribed to text.
    Example: true

  - `commands.recordingOptions.transcriptionOptions.locale` (string)
    Language code in BCP-47 format.
    Example: en-US

  - `commands.events` (object)
    SVAML commands to execute based on recording lifecycle outcomes.

  - `commands.command` (string, required)
    Command to stop recording on the channel
    Enum: "stopRecording"

  - `commands.recordingName` (string, required)
    Name of the recording to stop, as set by `recordingName` in the `startRecording` command.
    Example: my-recording

  - `commands.command` (string, required)
    Command to add the call to a bridge
    Enum: "bridgeCall"

  - `commands.bridgeName` (string, required)
    Name of the bridge to join. If no bridge with this name exists in the session, a new one is created automatically.

  - `commands.command` (string, required)
    Executes menu-based input collection using the configured menu definitions.
    Enum: "menu"

  - `commands.startMenu` (string, required)
    Name of the menu to execute first. Must match a key in menus.

  - `commands.menus` (object, required)
    Map of menu definitions keyed by menu name.

  - `commands.command` (string, required)
    Switch execution to another menu within the current menu context.
    Enum: "gotoMenu"

  - `commands.menuName` (string, required)
    Name of the target menu to execute next. Must match a key in menus.

## Response 202:

  - `202` (unknown)
    Commands accepted for processing.

## Response 400:

  - `400` (unknown)
    Invalid request parameters.

## Response 400 fields (application/problem+json):

  - `type` (any, required)
    Enum: "https://api.sinch.com/docs/errors/bad-request"

  - `title` (any, required)
    Enum: "Bad Request"

  - `detail` (any, required)
    Example: The request body is invalid or malformed.

  - `instance` (any, required)
    Example: /v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls/01ARZ3NDEKTSV4RRFFQ69G5FAA

## Response 401:

  - `401` (unknown)
    Authentication failed — token missing, invalid, or expired.

## Response 401 fields (application/problem+json):

  - `type` (any, required)
    Enum: "https://api.sinch.com/docs/errors/unauthorized"

  - `title` (any, required)
    Enum: "Unauthorized"

  - `detail` (any, required)
    Example: The token is missing, invalid, or has expired.

  - `instance` (any, required)
    Example: /v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls/01ARZ3NDEKTSV4RRFFQ69G5FAA

## Response 401 headers (application/problem+json):

  - `WWW-Authenticate` (string)
    RFC 7235 challenge. Indicates the required authentication scheme and, for expired tokens, provides an error hint.
    Example: Bearer realm="sinch", error="invalid_token", error_description="Token has expired"

## Response 403:

  - `403` (unknown)
    Forbidden.

## Response 403 fields (application/problem+json):

  - `type` (any, required)
    Enum: "https://api.sinch.com/docs/errors/forbidden"

  - `title` (any, required)
    Enum: "Forbidden"

  - `detail` (any, required)
    Example: The request was rejected.

  - `instance` (any, required)
    Example: /v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls/01ARZ3NDEKTSV4RRFFQ69G5FAA

## Response 404:

  - `404` (unknown)
    Resource not found.

## Response 404 fields (application/problem+json):

  - `type` (any, required)
    Enum: "https://api.sinch.com/docs/errors/not-found"

  - `title` (any, required)
    Enum: "Not Found"

  - `detail` (any, required)
    Example: The requested resource was not found.

  - `instance` (any, required)
    Example: /v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls/01ARZ3NDEKTSV4RRFFQ69G5FAA

## Response 429:

  - `429` (unknown)
    Too many requests — rate limit exceeded.

## Response 429 fields (application/problem+json):

  - `type` (any, required)
    Enum: "https://api.sinch.com/docs/errors/too-many-requests"

  - `title` (any, required)
    Enum: "Too Many Requests"

  - `detail` (any, required)
    Example: Rate limit exceeded. Please slow down your request rate and retry after the indicated period.

  - `instance` (any, required)
    Example: /v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls

## Response 429 headers (application/problem+json):

  - `Retry-After` (integer)
    Number of seconds to wait before retrying the request.
    Example: 60

## Response 500:

  - `500` (unknown)
    Internal server error occurred.

## Response 500 fields (application/problem+json):

  - `type` (any, required)
    Enum: "https://api.sinch.com/docs/errors/internal-server-error"

  - `title` (any, required)
    Enum: "Internal Server Error"

  - `detail` (any, required)
    Example: An unexpected error occurred on the server.

  - `instance` (any, required)
    Example: /v2/projects/5c5bf2b1-35ae-4825-ab89-457e07bb60e6/calls/01ARZ3NDEKTSV4RRFFQ69G5FAA

