---
title: "Remove a character from a table read."
method: POST
path: "/scripts/{scriptUploadId}/table-read/characters/remove"
tags: ["Scripts"]
---

# Remove a character from a table read.

`POST /scripts/{scriptUploadId}/table-read/characters/remove`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/scripts/{scriptUploadId}/table-read/characters/remove`
- Auth: HTTP bearer

Removes ONE character from a table read's cast roster, so it can be set up again. Clears the character's voice from the read and its `finalized` flag (keeping the rest of its profile) and clears its canonical portrait on the script. The read is resolved from `scriptUploadId` (the caller's latest read for that script; a script that is not yours or has no read is 404 `script_not_found`). An unknown field, or a `character` that is not a non-empty string, is refused with 400 `validation_failed` — the same validation the Writers Lab's cast roster, MCP `remove_character` and `sleeperhit script table-read remove-character` go through. Free and naturally idempotent: removing a character the read no longer has is a no-op, and still answers `removed`. Scope: `story:write`.

## Request body

- RemoveCharacterRequest
  - `character` string, required: The character's name (or cue) as it appears in the read. A name, not an id.

## Response `200`

The character was removed from the read.

- RemoveCharacterResult
  - `removed` boolean, required: Always true — removing a character the read no longer has is a no-op that still answers true.
  - `character` string, required: The character that was removed.

## 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/4534f5d25540?raw)
