---
title: "Start an Aletheia voice session for the presentation."
method: POST
path: "/presentations/{slug}/voice/register"
tags: ["Presentations"]
---

# Start an Aletheia voice session for the presentation.

`POST /presentations/{slug}/voice/register`

## Request

- Base URL: `https://api.mnemom.ai/v1`
- URL: `https://api.mnemom.ai/v1/presentations/{slug}/voice/register`
- Auth: HTTP bearer

Opens a voice session for the presentation's agent (Aletheia, MNE-1428 voice). Creates a Retell web call, mints a short-lived scoped voice-grant token, and hands it plus the deck + scope to the separate voice backend, which then proxies each spoken turn to `POST /v1/presentations/{slug}/chat` bearing that token. Governance (Safe House / tier / tools) stays entirely in the chat runtime — this endpoint re-implements none of it, and the token is authentication-only (the active grant remains the sole authority). Authed user; requires an ACTIVE grant. Returns the Retell web-call access token + call id for the browser SDK. Not idempotent (each session is new), so no Idempotency-Key is required.

## Path parameters

- `slug` string, required

## Request body

- object
  - `deck` string: The deck's own text, handed to the voice backend so Aletheia reads it as her primary source. Capped server-side.

## Response `200`

The voice session was created. Returns the Retell web-call access token + call id for the browser's Retell web-call SDK.

- object
  - `access_token` string, required: The Retell web-call access token for the browser SDK.
  - `call_id` string, required: The Retell call id.

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `404`: Resource not found
- `429`: Rate-limit exceeded. The global per-IP limiter (100 requests/minute, applied to every `/v1/*` route) rejected this request. Back off until the window resets — `Retry-After` carries the cooldown in seconds and `X-RateLimit-Reset` the absolute reset time.
- `500`: Server error — request was well-formed but the server failed to fulfill it. Typically a downstream dependency (DB / RPC / external API) returned an unexpected error.
- `502`: The voice provider or the voice backend failed to start the session.
- `503`: Voice is not configured on this deployment.

---

[API](https://skmtc.dev/mnemom/apis/mnemom-api.md) · [All operations](https://skmtc.dev/mnemom/apis/mnemom-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mnemom/apis/mnemom-api/revisions/274b7a6ea182?raw)
