---
title: "Let one take still out at the provider go (free; it gives back what was held)."
method: POST
path: "/pitch-decks/{jobId}/chapters/{chapterIndex}/abandon-take"
tags: ["Pitch Deck"]
---

# Let one take still out at the provider go (free; it gives back what was held).

`POST /pitch-decks/{jobId}/chapters/{chapterIndex}/abandon-take`

## Request

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

Let ONE take of the chapter's call go when it is still out at the provider (handed back pending between two polls) — the per-take counterpart of Stop render (`POST /pitch-decks/{jobId}/cancel-render`), on the same core. Its claim comes off the shot, the take is recorded failed with a plain notice on the chapter, the writer's credits held for it are given back (`releasedCredits`), and the automatic fixes carry on. The provider may still bill it: that is ours, never the writer's. Every other take is kept. A take that is not out at a provider answers `abandoned: false` and changes nothing; one being polled right now is refused (409, `details.refusal.code` `reference_render_take_busy`: try again in a minute). The engine does the same on its own when a take's polls run out, and tells the writer. Answers `{ jobId, surface, callId, take, abandoned, kind, taskId, releasedCredits, note }`; read `GET /pitch-decks/{jobId}/chapters` after it. NOT metered and NOT confirmed: free. Requires `Idempotency-Key`. Scope: `artifact:publish` — the key that can start and spend on renders is the key that can let paid work in flight go.

## Headers

- `Idempotency-Key` string, required

## Request body

- TakeAbandonRequest
  - `callId` string, required: The call whose take to let go (its `callId` from the chapters or beats read).
  - `take` integer, required: The take number (from the call's `takes`).

## Response `200`

Whether the take was let go, what it was waiting on, and what was given back.

- TakeAbandonResult
  - `jobId` string, required
  - `surface` 'pitch_deck' | 'trailer', required
  - `callId` string, required
  - `take` integer, required
  - `abandoned` boolean, required: False when the take was not out at a provider: nothing changed.
  - `kind` 'render' | 'repair' | 'null', nullable, required: `render`: a new take out at the video provider; `repair`: a repair out at its host. Null when nothing was let go.
  - `taskId` string, nullable, required: The provider task it was waiting on, when one had been sent. Any bill for it is ours, never the writer's.
  - `releasedCredits` integer, required: The writer's credits given back for it (0 when the take was ours, or nothing was held).
  - `note` string, required: Read it to the writer.

## 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.
- `409`: The pitch deck exists and the request is well-formed, but the deck, its chapter, its cast or its plates are not in a state that allows it (`pitch_deck_state_invalid`), and nothing was reserved: a plan approved outside draft, a take chosen, a chapter edited or rendered outside review/complete, an export before the finish, a finish while a call has no selected take or a footage chapter has not rendered, a text-only chapter asked for footage, a changed chapter asked for one call, a delivery class changed mid-pass, a render the compile blocked, or a finish while the master failed its video coverage (`pitch_deck_video_coverage_failed`, with `details.videoCoverage`). `details.refusal` is `{ code, action, fix }` (see PitchDeckRefusalDetails): `action` is what unblocks it — `recast_figure`, `add_signature_items`, `recast_voice` or `remake_location_plate` — and `fix` names the MCP tool and CLI command that take it; `details.blocked[]` lists every chapter a blocked compile could not render. The identical request succeeds once the deck is put right.
- `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)
