Skip to main content
Everything else in this API happens before a meeting (configure the agent) or after it (read the transcript). Meeting Actions happen during it: your server posts one action and it lands in the running conversation within a second.

The six actions

context and message are the two ways of telling the agent something. Neither changes the agent’s system prompt or persona — that is fixed for the call — they add to the conversation, the same way a participant’s words do.
Limits: say.text ≤ 2,000 characters; context / message ≤ 4,000; initial_state and payload ≤ 8 KB of JSON; 30 actions per minute per meeting per caller (429 rate_limited). Send an Idempotency-Key header on retries, as on every write.

Who may call it

Two kinds of credential, with different reach: Use the stage token as the bearer exactly as you received it:
This is how a screen app’s backend talks to the call it was opened in — without a workspace key anywhere near the browser.

Responses

How say is voiced

On the standard pipeline (speech-to-text → LLM → text-to-speech) your text goes straight to text-to-speech: mode: "tts", verbatim by construction. On Gemini Live, the model produces the audio itself and there is no text-to-speech stage to hand the sentence to. say is pushed straight into the live session as a tagged system message the agent is instructed to voice word for word, immediately (mode: "live_inject"). It is spoken within about a second and is reliable, but not guaranteed byte-exact — a persona may soften punctuation. Where that matters, prefer the standard pipeline for the scenario, or use message and let the agent phrase it. (mode: "overlay" / "model_voiced" are fallbacks used only while the session is still starting.)

What the agent learns

  • say — the sentence enters the history as something the agent said.
  • context / message — your text, as a note or a message.
  • stage.open / stage.close — a silent note naming the app and who opened it (api_key:…, skill:… or stage_token:<app>), so the agent can refer to what is on screen. The agent still cannot see the page; use context to tell it what matters.
Every action is also recorded on the meeting’s event log as action.<type> (action.say, action.stage.open, …) — the same log that will carry screen-share and camera events.

Not supported

  • Google Meet, Zoom, Teams and phone calls: say, context and message work; stage.* answers 409 surface_unavailable because there is no Waterr screen in those calls.
  • Changing the persona or system prompt mid-call. Use context.
  • Per-participant targeting: an action reaches the agent, and what it shows or says reaches everyone in the call.