Scripts

Prepare an episode's table read (metered — TWO CALLS, price first).

Prepares the read of an episode whose cast is complete (Casting in the Writers Lab, or POST /story-projects/{projectId}/cast): charges its table-read credit — TABLE_READ_SHORT up to 60 pages, TABLE_READ_LONG above, the same price a job that adopts the screenplay reserves (GET /credits lists both) — and adds the read's scene sound effects and music, the media a Story API read gets. The Writers Lab's "Continue to Table Read" on Casting is the same operation, through the same server core. TWO CALLS: sent without confirmed it PRICES the preparation and changes nothing (status: quoted, quotedOnly: true, credits, balanceAfter, sufficient, and a note to show the writer; when sufficient is false the caller must not confirm); sent again with confirmed: true it charges and queues the media (status: queued). ONCE PER SCREENPLAY VERSION: a version already charged for its read, on any surface, answers status: prepared, and a read whose media is being made answers preparing — both free — so a retry never charges twice. A confirmed call the balance cannot cover is refused with 402 insufficient_credits and changes nothing. Refused before the price: 404 script_not_found (not the caller's screenplay), 409 cast_precondition_failed (details.reason: script_not_finalized for a draft, screenplay_coverage_before_cast when the version's screenplay coverage is under the bar and not acknowledged, still scoring, or missing, script_not_cast_ready for a cast that is not complete, with details.missing), 409 project_precondition_failed (the project gate is closed) and 409 voice_retired (a voice the read would speak was retired). Requires Idempotency-Key. Scope: artifact:publish.

post/scripts/{scriptUploadId}/table-read/prepare

Request

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

Headers

Idempotency-Keystring required

Customer-generated stable identifier for safe retries of idempotent POST requests.

Request body

confirmedboolean

Omit (or false) to get the price without spending anything. true charges the read once for this screenplay version and adds its sound effects and music — only after the writer has seen the price.

Response

The price (no confirmed), the queued preparation, or prepared / preparing.

status'quoted' | 'queued' | 'prepared' | 'preparing' required

quoted: priced, nothing spent. queued: charged (or an earlier attempt's charge used) and its media queued. prepared: already prepared for this screenplay version, on any surface — nothing charged. preparing: its media is being made now — nothing charged.

quotedOnlyboolean required

true when this call only PRICED the preparation.

scriptUploadIdstring required
tableReadJobIdstring nullable required

The read it prepares. Null on a quote for a version that has no read yet; the confirmed call makes one.

opKey'TABLE_READ_SHORT' | 'TABLE_READ_LONG' required

The table-read price it is charged at, by the screenplay's pages (GET /credits lists both).

labelstring required

The price list's name for it.

pageUsageinteger required

The pages it is priced by (0 when the screenplay's length was never measured).

creditsinteger required

The price (quote), what was charged (queued), or 0.

chargedboolean

Not on a quote. true when this call charged the credit; false when nothing was charged.

costLabelstring nullable

Quote only.

balanceAfterinteger

Quote only. Studio Credits the writer would have left once this is spent: the balance available now (as Billing shows it) minus the price. Negative means they are that many short.

sufficientboolean

Quote only. True when the available balance covers the price. False means the writer must top up first (the note names the Billing link) — do not confirm; the reserve would refuse.

notestring required

The price and what it would leave (quote), or what happened. Show it to the writer.

Changes

No recorded changes to this operation across all 1 revision of this API.