> ## Documentation Index
> Fetch the complete documentation index at: https://docs.telzino.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Translator Agent

> An AI interpreter for a phone call between two people who do not share a language: English with Spanish, or English with French.

The **Translator Agent** is an agent template that works as an interpreter on a live call. Two people who do not share a language talk to each other. The agent repeats each person's words in the other person's language, in the first person, as a human interpreter would.

It only interprets. It never answers questions, gives advice, summarizes or adds anything of its own, even when someone speaks to it directly. If someone asks "Can you hear me?" or "Are you a robot?", the agent translates the question for the other person. It does not answer it.

<Warning>
  **This is an AI interpreter, not a certified human interpreter.** The help text in the Dashboard and Connect says:

  *This is an AI interpreter. The opening script tells both parties they are speaking through an AI interpreter. Before using it for medical or legal calls, have it reviewed by your legal team.*

  In the United States, healthcare providers may have language-assistance obligations, for example under ACA Section 1557. Have your legal team review the use case and the opening scripts before you use the agent on clinical calls.
</Warning>

## Supported languages

| Pair | Language codes |
| - | - |
| English (US) with Spanish (US) | `en-US` and `es-US` |
| English (US) with French | `en-US` and `fr-FR` |

Each agent handles one pair. Either language can be **Party A**, the person greeted first. One voice speaks both languages.

## How the call works

The agent joins a call that both people are already on. For example, the call can be a conference on your phone system, or a representative can add the interpreter to their call. The agent hears both people on the same line.

<Info>
  **Both people hear every interpretation.** The agent speaks on the shared line, so both people hear everything it says, including the translation meant for the other person. This is consecutive interpretation: one person speaks and pauses, then the agent speaks.
</Info>

<Steps>
  <Step title="Opening">
    When the agent joins, it reads Party A's opening script and then Party B's, word for word, each in its own language. The openings play once per call and cannot be interrupted. The agent does not interpret anything said while they play.
  </Step>

  <Step title="Interpreting">
    After a person finishes a thought and pauses, the agent works out which language was spoken. It then says the translation in the other language. Speech waits its turn: the agent always translates the oldest speech that nobody has heard translated yet, and if the same person carries on after a pause before their translation starts, the two parts are translated together.

    If someone talks over a translation, the agent stops speaking. What happens next depends on how much of the translation was heard:

    * **None of it was heard yet:** the earlier speech is not lost. The agent translates it first, oldest first, and then the new speech. If the person who talked over it is the one who said the earlier speech, the new speech is merged into the same translation.
    * **Part of it was already heard:** the agent does not repeat the rest. It counts that speech as interpreted and moves on to the new speech.
  </Step>

  <Step title="Closing">
    The closing plays once both people have said goodbye, one in each language, and the translation of each goodbye has been heard. The two translations must be heard within 30 seconds of each other; the 30 seconds are measured from when each translation is heard, not from when the goodbye was said. The agent reads Party A's closing script, then Party B's. Speech that was still waiting for a translation when the closing started is interpreted after the closing scripts finish. As with the opening, anything said while a closing script is actually playing is not interpreted. If the conversation carries on afterwards, the agent keeps interpreting, and the closing does not play again. If one person hangs up without saying goodbye, no closing plays.
  </Step>

  <Step title="Ending the call">
    The agent never hangs up on the people it is interpreting for while it is interpreting. They end the call themselves. There are two exceptions. If nobody speaks for five minutes, the agent leaves the call quietly, so an abandoned line does not keep using minutes. And if the agent's saved translator settings are not valid when the call starts (for example, after they were changed through the API), the agent ends the call without saying anything, rather than answering as an ordinary agent.
  </Step>
</Steps>

The agent guards against interpreting its own voice: if the same words keep coming back — for example because its voice echoes back on the line, or another interpreter on the call translates its words back — it stops repeating them. A single repeat, or a short reply such as "Yes", is still interpreted; only an immediate repeat right after a previous one is dropped. If the repeats keep happening, the agent pauses interpreting altogether until someone says something new of at least four words. Short replies of fewer than four words, such as "Yes", are still interpreted during that pause, but they do not end it.

## Creating a Translator Agent

Choose **Translator Agent** in the new-agent wizard, in the Dashboard or in Connect. Dashboard and Connect word the wizard's prompts differently (for example, Connect asks "Which language does the first person speak?"), but every wizard sets the same values. The table uses the Dashboard's labels; where the Connect settings page labels a setting differently, that label is shown in brackets:

| Setting | What it does | Default |
| - | - | - |
| **Party A language** (Connect settings: **First person speaks**) | The language of the person greeted first | Spanish |
| **Party B language** (Connect settings: **Second person speaks**) | The other language of the pair. One of the two must be English | English |
| **Business name** | Replaces `{{business_name}}` in the scripts. Usually the company providing the interpreter | Prefilled with your organization's name (Dashboard) or domain (Connect) |
| **Client name** | Replaces `{{client_name}}` in the scripts. Usually the company the caller is trying to reach. The default Spanish and French scripts use `{{client_name}}`, so fill it in or remove it from those scripts | none |
| **Opening script** (one per language) | Read word for word when the agent joins | See below |
| **Closing script** (one per language) | Read word for word after both goodbyes | See below |
| **How to interpret** (Connect settings: **How to render speech**) | Keep the speaker's exact wording, including fillers and hesitations (**Verbatim** / "word for word"), or render the same meaning in simpler, plain wording (**Plain**). Neither option adds anything | Verbatim |
| **Who said what (transcript)** (Dashboard wizard only; in Connect, set it on the agent's settings page after creating the agent) | How the saved transcript labels who said each line. See [Who said what](#who-said-what) | By language |

Scripts can use only two placeholders: `{{business_name}}` and `{{client_name}}`. If a script uses a placeholder, fill in that name — otherwise the settings cannot be saved. A stray `{{` or `}}` that is not part of one of these placeholders also blocks saving. Each script can be up to 2,000 characters, and each name up to 120 characters.

The wizard also turns off everything a translator does not use:

* background and thinking sounds
* echo detection, automated-caller detection and mobile call detection
* transfers
* knowledge base
* tools

**Call recording is off by default.** You can turn it on in the agent's settings. Recording a medical or legal call may need the consent of both people, depending on where they are; check with your legal team first.

The agent's language is always Party A's language, so there is no separate language setting. In Connect, a Translator Agent is created already [detached](/admin-guide/connect/managing-agents) from its template, because the detached layout is the one that shows the translator settings.

### Default scripts

The wizard prefills the scripts in each language, and you can edit them freely. The opening scripts tell both people that they are talking through an AI interpreter. Keep that disclosure if you change them.

<AccordionGroup>
  <Accordion title="English (US)">
    Opening, for an English–Spanish agent:

    ```text theme={null}
    Hello. I am the AI interpreter for this call, provided by {{business_name}}. I will translate between English and Spanish. Please speak naturally and pause after each complete thought, and I will translate.
    ```

    Opening, for an English–French agent:

    ```text theme={null}
    Hello. I am the AI interpreter for this call, provided by {{business_name}}. I will translate between English and French. Please speak naturally and pause after each complete thought, and I will translate.
    ```

    Closing:

    ```text theme={null}
    The interpretation session is now complete. Thank you, and have a wonderful day.
    ```
  </Accordion>

  <Accordion title="Spanish (US)">
    Opening:

    ```text theme={null}
    Hola y bienvenido(a). Soy la intérprete de voz con inteligencia artificial para esta llamada. {{business_name}} ofrece este servicio de interpretación para ayudarle a comunicarse con su representante de {{client_name}}. Traduciré todo lo que usted y el representante digan de la manera más precisa posible. Por favor, hable con naturalidad y haga una pausa después de cada idea completa.
    ```

    Closing:

    ```text theme={null}
    Gracias por comunicarse con {{client_name}}. Esperamos que este servicio de interpretación le haya sido útil. ¡Que tenga un excelente día!
    ```
  </Accordion>

  <Accordion title="French">
    Opening:

    ```text theme={null}
    Bonjour et bienvenue. Je suis l'interprète vocale à intelligence artificielle pour cet appel. {{business_name}} propose ce service d'interprétation pour vous aider à communiquer avec votre représentant de {{client_name}}. Je traduirai tout ce que vous et le représentant direz, aussi fidèlement que possible. Veuillez parler naturellement et faire une pause après chaque idée complète.
    ```

    Closing:

    ```text theme={null}
    Merci d'avoir contacté {{client_name}}. Nous espérons que ce service d'interprétation vous a été utile. Excellente journée !
    ```
  </Accordion>
</AccordionGroup>

## Settings after creation

The agent's settings page shows the same translator settings as the Dashboard wizard, including **Who said what (transcript)**, which the Connect wizard does not ask for. It also adds **How long to wait before interpreting**:

| Choice | Behaviour |
| - | - |
| **Standard** (default) | Interprets soon after the speaker pauses. Suits people who speak in short, complete sentences |
| **Patient** | Waits longer before interpreting, so a speaker who pauses mid-thought is not cut off. Each translation starts a little later |
| **Custom** | Shown when the voice timing values in the advanced voice settings match neither choice. Picking Standard or Patient replaces them |

This template hides settings that have no effect on a translator:

* knowledge base and its links
* the AI personalized greeting and the static greeting
* agent instructions (the system prompt): the interpreting rules are built in
* the language picker: the agent's language is always Party A's
* the whole functions and tools section, including appointment scheduling functions and calendars
* reservations and payments
* every integration card, including calendars, ModMed, Sage 100, NetSapiens, Twilio SMS, TeamMate, MCP servers and Zendesk. The Dashboard hides the Integrations tab and the Zendesk block; Connect's integrations page offers no cards for a translator. Both refuse to save an MCP server for one
* the email tool
* the Google business listing
* ambient audio and thinking sounds
* transfer and warm-transfer settings
* echo detection, automated-caller detection and mobile call detection
* the flow builder tab (Dashboard's Visual Builder)
* **Filler While Waiting**
* **Jev tool decisions** (Dashboard)
* **Screenshare**

Every on/off setting in this list is also switched off whenever a Translator Agent is saved, in either app or through the API, and when an agent is changed into a Translator Agent. A setting that was on before the agent became a translator does not stay on behind the hidden control.

These settings stay available: the name, the voice and the pronunciation dictionary, Advanced Voice Timing, Improve List Reading, Redact PII in transcripts and the recording toggle, [Who said what (transcript)](#who-said-what), plus the timezone and, in the Dashboard, the call-summary context.

### Voice and pronunciation

**Translator Agents use Cartesia voices only.** The agent switches the voice's language for every translation, sometimes sentence by sentence, and only Cartesia voices can do that. The voice-provider picker therefore offers only Cartesia for this template, and the API rejects any other provider. Choose a voice that sounds natural in both languages of the pair. The [pronunciation dictionary](/agents/voice#custom-pronunciations) works as it does for any agent. For example, you can add an entry for your business name if it must be said a particular way.

Every word in the pronunciation dictionary is also treated as a term the agent must never translate. It says the word exactly as written in both languages. Every entry is kept untranslated, including ordinary words, so only add words that must never change, such as brand, product and drug names. The agent keeps at most 50 entries, and no more than 1,000 characters in total, untranslated; one entry can be several words. Repeated entries are counted once (capital letters are ignored, and the first spelling is kept). Entries past the limit are translated like any other speech. The dictionary still asks for a pronunciation for each word.

## Transcripts

The call transcript shows each thing a person said next to its interpretation, labelled by speaker and language, for example **Spoken by the Spanish speaker · by language** and **Interpreted (English)**. Transcripts of calls made before speaker labels existed show the plain form, for example **Spoken (Spanish)**. A line where the language could not be detected shows **Spoken (Unknown language)**. The opening and closing scripts appear with labels such as **Interpreter script (Spanish)** and **Interpreter script (English)**.

Sometimes the agent says nothing for a line, for example:

* it could not tell which language was spoken (**Not interpreted: the language could not be identified**)
* it heard its own words echoed back (**Not interpreted: the interpreter heard its own voice**)
* the translation failed (**Not interpreted: the translation failed**)
* too many lines were waiting for a translation: the agent keeps at most four, and drops the oldest when a fifth arrives (plain **Not interpreted**, with no reason)

What the person said still appears in the transcript, marked **Not interpreted**, with the reason when one was recorded. The call summary is generated the same way as for any other agent.

### Who said what

The **Who said what (transcript)** setting controls how the saved transcript labels each line. The help text says: *Only changes how the saved transcript labels each line. It never changes what the interpreter says.*

| Option | What it does |
| - | - |
| **By language** (default) | Free and works on every call. Labels each line by the language spoken, so if one person uses a word or name in the other language, that line is credited to the other person. |
| **By voice** | Tells the two voices apart, so switching language does not confuse it. Short replies and the first moments of a call may stay unlabelled. Adds a small speech-to-text charge per minute. |
| **Both (voice first)** | Uses the voice when it can, and the language when the voice cannot tell. Every line whose language or voice was detected gets a label, most of them from the voice. Same extra charge as By voice. |

On the default **By language**, every line whose language was detected is labelled. A line labelled from the language reads **Spoken by the Spanish speaker · by language**. This is also what **Both** shows when it cannot yet tell the voice. A line labelled from the voice reads **Spoken by the Spanish speaker · by voice**. If that person said it in the other language, it reads **Spoken by the Spanish speaker (in English) · by voice**. On **By voice**, a line the voice could not be matched to a speaker gets no speaker label. Transcripts of calls made before speaker labels existed show the plain **Spoken (Spanish)** form, and a line where the language could not be detected shows **Spoken (Unknown language)**.

In the API, this is the `speaker_identification` field of `interpreterConfig`. See [Create Agent](/api-reference/agents/create).

## Limitations

| Limitation | Details |
| - | - |
| One shared line only | Both people must already be on the call. The agent cannot dial the other person or connect them itself |
| Answers calls only | A Translator Agent cannot place outbound calls |
| Not a transfer destination | Other agents cannot hand a call to a Translator Agent, and it does not appear in their transfer target lists. (A phone-system transfer to the agent's own number is a different mechanism and is not affected.) |
| Two language pairs | English with Spanish, and English with French. Other pairs, including Spanish with French, are not supported |
| Backup voice | If the main voice service is unavailable, a backup voice speaks the translation. Its accent in Spanish or French may sound less natural |

## Availability

The template appears as **Translator Agent** under **Templates** in [Feature Administration](/admin-guide/dashboard/feature-administration). Locking it hides the template in the new-agent wizard and blocks creating a Translator Agent (including through the API), changing an existing agent's type to Translator Agent, and duplicating a Translator Agent. Translator Agents that already exist keep working and stay editable.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.