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

# Voice widget (embed)

> What iawidget.js with mode=voice calls on cloud.lovi.ai. The host page does not call these itself.

Install guide: [Voice widget](/de/user-guide/Setting/ug_voicewidget_de).

You **do not call these from your site**. `https://widget.lovi.ai/iawidget.js` with `mode="voice"` loads an iframe that does.

`customer` on the `<script>` is the company **access key**. The loader sends it as `access_key`. Do not put it in repos or screenshots.

## Appearance config (first GET)

```
GET https://cloud.lovi.ai/functions/v1/voice-widget?id_widget={WIDGET_ID}&language={LANG}&access_key={ACCESS_KEY}
```

| Parameter    | Who sets it                | Description                                                              |
| ------------ | -------------------------- | ------------------------------------------------------------------------ |
| `id_widget`  | `widget` attribute         | Widget UUID.                                                             |
| `language`   | `language-lovi` or browser | `es`, `en`, …                                                            |
| `access_key` | `customer` attribute       | Company key. Added by the script, not by you in a second HTML attribute. |

Response is **`Voice-config`** (colours, position, animation). It is **not** the live audio session.

CORS on this function allows `*` for GET/POST/OPTIONS.

## Audio session (iframe)

```
GET https://cloud.lovi.ai/functions/v1/voice-widget/signed-url
```

Signed ElevenLabs ConvAI URL + SDK (WebSocket and/or WebRTC). There is no public `start` / `stop` on `window`.

## Other iframe-only routes

Not a public embed API. Used by Lovi’s iframe:

* `POST /functions/v1/voice-widget/search`
* Feedback endpoints used after hang-up
* `POST /functions/v1/voice-widget/handoff` and `POST /functions/v1/voice-widget/handoff/end`
* `GET /functions/v1/voice-widget/chat-by-conversation`

Handoff can use LiveKit (`wss://livekit.rtc.elevenlabs.io`, `https://cloud-api.livekit.io`).

## Not this

* `GET /functions/v1/widget` — **text chat** config. See [Web widget](/de/user-guide/Setting/ug_webwidget_de).
* `GET /functions/v1/widgetWebView` — chat iframe helper. See [Widget WebView](./widget_webview).
* `POST /functions/v1/notify/voice` — outbound **phone** campaign. See [Voice notifications](./voice_notifications).
