---
title: "Read the deck's narrator."
method: GET
path: "/pitch-decks/{jobId}/narrator"
tags: ["Pitch Deck"]
---

# Read the deck's narrator.

`GET /pitch-decks/{jobId}/narrator`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/pitch-decks/{jobId}/narrator`
- Auth: HTTP bearer

Returns the voice every narrated line of the deck (chapter narration, lines over black) is spoken in, and where it comes from (`source`): `override` (cast for this deck), `cast_canon` (the cast canon's NARRATOR), `table_read_voice_map` (the table read's NARRATOR) or `default` (the default narrator). A deck's narrator speaks every line the narrator carries (chapter narration and lines over black). It resolves in one order: the voice cast for THIS deck (`set_pitch_deck_narrator`), else the cast canon's NARRATOR, else the table read's NARRATOR, else the default narrator. Casting or clearing it is free; on a rendered deck the narrated lines are voiced again in the new voice and the master is re-assembled, at no charge. Scope: `story:read`.

## Response `200`

The deck's resolved narrator.

- object
  - `narrator` PitchDeckNarrator, required: A deck's narrator speaks every line the narrator carries (chapter narration and lines over black). It resolves in one order: the voice cast for THIS deck (`set_pitch_deck_narrator`), else the cast canon's NARRATOR, else the table read's NARRATOR, else the default narrator. Casting or clearing it is free; on a rendered deck the narrated lines are voiced again in the new voice and the master is re-assembled, at no charge.
    - `voiceId` string, required: The voice every narrated line is spoken in.
    - `voiceName` string, nullable, required: The voice's name, as the writer is shown it; null when nothing names it. Show this, never the id.
    - `provider` string, required: Its TTS provider.
    - `source` 'override' | 'cast_canon' | 'table_read_voice_map' | 'default', required: Where it comes from: `override` (cast for this deck), `cast_canon` (the canon's NARRATOR), `table_read_voice_map` (the table read's NARRATOR) or `default` (the default narrator).
    - `overridden` boolean, required: True when this deck casts its own narrator.
    - `overrideVoiceId` string, nullable, required: The deck's own casting, as stored.
    - `overrideProvider` string, nullable, required

## Other responses

- `401`: Missing, malformed, revoked, or expired API key.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `404`: The named project or source does not exist or is owned by another account.
- `429`: Rate limit for this API key + IP + route family was exceeded.
- `500`: The API failed unexpectedly. Safe to retry with the same Idempotency-Key.

---

[API](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api.md) · [All operations](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/revisions/4534f5d25540?raw)
