---
title: "Post Sessions"
method: POST
path: "/api/channels/meet/sessions"
tags: ["channels", "channels", "meet-voice"]
---

# Post Sessions

`POST /api/channels/meet/sessions`

## 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/channels/meet/sessions`
- Auth: none declared

Dispatch a meet-bot to join a Google Meet.

Reuses _create_and_spawn_meet_session helper (also used by calendar scheduler).

## Request body

- PostSessionsRequest: Request to join a Google Meet and dispatch bot.
  - `meet_url` string, required: Google Meet or Microsoft Teams meeting link
  - `agent_id` integer, nullable: AI agent ID. Omit (or null) for TRANSCRIBE-ONLY: the bot joins and transcribes into the thread but never speaks and runs no agentic session. A ws-0 template id is accepted and forked into the workspace on use.
  - `vision_mode` 'off' | 'on_demand' | 'continuous_0_3fps', nullable: Screen-share vision mode. None → default-derive from the agent's vision_enabled flag (enabled → 'continuous_0_3fps', else 'off'). 'off' = no vision; 'on_demand' = the agent can call vision.query; 'continuous_0_3fps' = every agent turn carries a low-detail ambient screen frame + vision.query for fine detail.
  - `instructions` string, nullable: Task brief for the agent once it joins (e.g. 'greet everyone and present the overview deck'). Woven into the voice system prompt.
  - `start_immediately` boolean: If true, the agent starts talking as soon as it joins (greets + begins the task) instead of waiting for a wake-word.
  - `translation_mode` boolean: If true, pre-arm translator mode (auto-target language) on join with zero verbal trigger. Forces meet_audio_path ∈ {framework, hybrid} so the original-speaker track exists for listener audio path.
  - `target_language` string, nullable: Primary target language spoken INTO the Meet call (e.g. 'en', 'es', 'fr'). Used with translation_mode=True.
  - `app_languages` unknown[], nullable: Extra target languages translated for the APP ONLY (text + listenable audio in the inbox), never spoken into the Meet call. Each runs its own translation engine. Max 4. ISO codes, e.g. ['de', 'fr']. Used with translation_mode=True.
    - unknown
  - `stt_provider` string, nullable: Speech-recognition provider for THIS session: 'deepgram' or 'gladia'. Omit to use the agent's setting, then the workspace default. Gladia covers ~115 languages including Uzbek, Kazakh and Tajik, which Deepgram does not.
  - `stt_model` string, nullable: Recognition model within the provider, e.g. 'flux' or 'nova-3' for Deepgram. Omit to use the agent's setting, then the workspace default.
  - `source_language` string, nullable: Spoken language of the meeting (any ISO code: 'en', 'ru', 'zh', ...). When set, speech recognition runs in that language's dedicated mode for better accuracy. Omit when participants may speak multiple languages — recognition then autodetects. Independent of translation_mode: improves plain transcription too.
  - `tts_provider` string, nullable: Translator VOICE provider (the TTS the translator speaks with). One of the translation-capable providers (cartesia, openai, deepgram, ...). Only with translation_mode. Omit for the workspace default translation voice.
  - `tts_voice` string, nullable: Specific voice id for tts_provider (e.g. 'nova' for openai). Omit for the provider's default voice.
  - `silent` boolean: Silent translator dispatch: the translator never speaks into the Meet call (participants hear no bot voice). Translation audio + subtitles remain available in the app (translator-tts tracks / listen overlay). Only meaningful with translation_mode=True.
  - `comeback_phrase` string, nullable: Phrase or word to trigger return to original language during translation. e.g. 'Back to English'. Optional.
  - `meet_audio_path` string, nullable: Audio routing strategy: 'direct' (bot input bypasses framework), 'framework' (bot hears all participants via SFU), 'hybrid' (bot hears and speaks via framework, guests routed direct). None → default-derive. Rejected when translation_mode=True (must be framework or hybrid).

## Response `200`

Successful Response

- PostSessionsResponse: Response after dispatching meet-bot.
  - `session_id` string, required: Unique session ID
  - `thread_id` integer, required: Thread ID (voice_sessions.thread_id cast to int)
  - `channel_ref` string, required: Channel reference (meet:<code>)
  - `status` string, required: Session status (always 'joining')
  - `listen_url` string, nullable: Public zero-auth translation page URL (/live/{token}) — set only for translation_mode dispatches. Share or QR it; viewers get subtitles + translated audio, never meeting access.

## 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)
