---
title: "Set Translation Mode"
method: POST
path: "/api/voice/translation/{call_id}/mode"
tags: ["voice-control", "voice-control"]
---

# Set Translation Mode

`POST /api/voice/translation/{call_id}/mode`

## Request

- Base URL: `https://api.dialogbrain.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.dialogbrain.com/api/voice/translation/{call_id}/mode`
- Auth: none declared

Operator-facing translator mode for ONE call — the authoritative Off.

`paused` is a hold: it suppresses the turn but the translator stays
armed, and an operator who wants translation to STOP has no way to say
so from the call, because what armed it is a SAVED config (L1
thread.voice_translation, else L0 channel_account default) that the
header never mentions. mode='off' writes the same `mode_override` the
agent's stop_translation tool writes, and TranslatorState.from_runtime
lets a valid override beat cfg.mode — including "off" on a chat
configured 'voice'. No MT, no subtitle, no TTS.

mode=null clears the override, so the call goes back to whatever the
saved config says rather than to a hardcoded on. That is the honest
undo: the operator turned Off for this call, not for the chat (that
edit lives in the thread's Translation settings).

Same runtime hash and the same workspace gate as /pause — this is not
a new mechanism, only the missing entry point. The worker-called
handover endpoint stays at /internal/voice/translation/{id}/mode-override
(prod workers reach the gateway through an /internal/-only shim), and
it carries voice-continuity fields this one deliberately does not
touch.

## Path parameters

- `call_id` string, required

## Request body

- TranslationModeRequest
  - `mode` string, nullable: 'off' | 'silent' | 'voice', or null to clear the per-call override and fall back to the saved config.

## Response `200`

Successful Response

- TranslationRuntimeState
  - `paused` boolean
  - `tts_muted` boolean
  - `call_tts_muted` boolean
  - `transcription_paused` boolean
  - `agent_disabled` boolean
  - `target_lang_override` string, nullable
  - `state` string, nullable
  - `configured_state` string, nullable
  - `suppressed_by` string, nullable
  - `speaks` boolean, nullable
  - `run_mt` boolean, nullable
  - `show_subtitle` boolean, nullable
  - `play_tts` boolean, nullable
  - `armed_by` string, nullable
  - `agent_session_active` boolean
  - `app_target_langs` string[], nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway.md) · [All operations](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway/llms.txt) · [OpenAPI document](https://skmtc.dev/dialogbrain/apis/dialogbrain-v2-api-gateway/revisions/77bef09a9209?raw)
