---
title: "Read one table-read line."
method: GET
path: "/scripts/{scriptUploadId}/lines/{entryIndex}"
tags: ["Scripts"]
---

# Read one table-read line.

`GET /scripts/{scriptUploadId}/lines/{entryIndex}`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/scripts/{scriptUploadId}/lines/{entryIndex}`
- Auth: HTTP bearer

Returns one line's editable state (`line`: text, `ttsText`, `parenthetical`, `sceneHeading`, the `speed` it is spoken at, `volume`, `pauseAfterMs`, `actingDirection`, and `sentAs` — what the acting direction was sent to its voice as on a Cartesia voice, `label` "Sent as: sad, 0.9x"; null when nothing was mapped), the Slug conversation's rolling audits of it (`audits`) and the edit snapshots taken before each change (`versions`, newest first). `line` is null when the index is past the end. The line's `speed` and `actingDirection` are display-only: only re-voicing the line (`revoice_line`) changes them. The same read the Writers Lab's line editor, MCP `get_script_line_tuning` and `sleeperhit script line get` make. Read-only; costs no credits.

## Response `200`

The line's tuning.

- ScriptLineTuning
  - `scriptUploadId` string, required
  - `entryIndex` integer, required
  - `audits` object[], required: The Slug conversation's rolling audit of this line, newest last.
  - `versions` object[], required: The edit snapshots taken before each change, newest first.
  - `line` object, nullable, required: The line's current editable state, or null when the index is past the end.
    - `text` string, required
    - `ttsText` string, nullable, required
    - `parenthetical` string, nullable, required
    - `sceneHeading` string, nullable, required
    - `speed` number, required: How fast the line is spoken (1: its natural pace) — set only by re-voicing the line (`revoice_line`).
    - `volume` number, required: The line's level (1: its own).
    - `pauseAfterMs` integer, nullable, required
    - `actingDirection` string, nullable, required: How the line is performed, in words: the one authority for its delivery (there are no emotion tags). Changed only by re-voicing the line.
    - `sentAs` object, nullable, required: What the line's acting direction was sent to its voice as: on a Cartesia voice (sonic-3 and newer) the mapping step's one emotion from the voice's list and the speed it was sent at. Null when nothing was mapped for the direction the line has now.
      - `emotion` string, required: One emotion from the voice's fixed list.
      - `speed` number, required: The speed it was sent at: the line's own when set, else the direction's pace nudge, else 1.
      - `label` string, required: The one sentence every surface shows: "Sent as: sad, 0.9x".

## Other responses

- `400`: Request payload failed validation. The error message names the offending field.
- `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/64c1102ccb2f?raw)
