# Voice call

The Voice call trigger publishes a **call link**. A visitor opens it, clicks
Call, and talks to your agent out loud — the experience of a phone call, not a
walkie-talkie. A restaurant puts the link on its site and customers call to
book a table.

## Add it to a workflow

1. Drop a **Voice call** node from the Triggers palette.
2. Set the **maximum call duration**. This is the setting that matters — see below.
3. Pick a **voice**, write a **greeting** and the **system instructions**.
4. Check the **realtime model**.
5. Save the workflow, then copy the **call link** shown at the top of the panel.

## Maximum call duration

The call link is **open by default**: no login, no token, anyone who has the
link can call. That makes the duration cap the main defence against abuse and
against a forgotten tab burning minutes all night.

- Default: **300 seconds** (5 minutes).
- Allowed range: **10 to 900 seconds** (the platform ceiling, `VOICE_CALL_MAX_SECONDS_CEILING`, clamps anything higher).
- When the limit is reached, the call ends. The cap is carried by the
  **expiry of the ephemeral session on the server**, not by a JavaScript timer
  — a browser timer is bypassed from the console in ten seconds.

The caller sees the remaining time count down before it cuts, so the cut is
never a surprise.

## Realtime model

The realtime voice model is a **setting on the node**, never a constant buried
in the platform. The node's default is `gpt-realtime`; the field accepts any realtime model
id. Leave it empty and the platform setting `VOICE_CALL_REALTIME_MODEL`
applies instead. If the configured model is unavailable, the call fails with
an explicit error that names the model, so you know what to change.

## Voice, greeting, system instructions

- **Voice** — what the caller hears. `marin` and `cedar` sound the most
  natural on a call.
- **Greeting** — the first sentence spoken once the call connects. Leave it
  empty to let the agent open the conversation itself.
- **System instructions** — the persona and the rules. Say what the agent may
  promise and what it must never invent.
- **Call page title** — the heading the caller sees. Empty falls back to the
  workflow name.

## Protection

The link is open by default: that is the point — a customer clicks and talks
with no account. Turning on **Protection** makes the caller present a session
token first, using the share password or visitor sign-in already configured for
this workflow. Leave it off for a public booking line; turn it on for an
internal one.

## What the graph below the trigger does

The audio path never touches the workflow. Audio goes from the browser
straight to the voice model and back, which is what keeps the latency
conversational.

The nodes connected below the trigger are the **delegation handler**: they run
each time the voice model needs real work done — check a table's availability,
record a booking, look up an order. Their output comes back to the session as
**guidance** while the conversation keeps going, so the agent can act instead of
only talking.

Read the delegation payload with `{event.*}` in the downstream nodes.

## Notes

- A **Respond** node has no meaning here: the delegation reply is guidance the
  platform formats, not an HTTP response you author.
- The transcript is kept with the call session and is readable from Production.
- Per-workflow limits on concurrent calls and calls per day are enforced by the
  platform on top of the per-call duration cap.

## Example workflow

Use the workflow card below to create a Voice call workflow that answers
booking requests and records what the caller asked for.

---

*Source: https://agentbuilder.systalink.sn/docs/trigger-voice-call — human documentation.*
*Other language: [/docs-md/fr/trigger-voice-call.md](/docs-md/fr/trigger-voice-call.md).*
*Machine-readable index: [/llms.txt](/llms.txt).*
