Skip to main content
PATCH
Changing the source without sending a translation retranslates by default. A translating segment is busy; while voicing, translation and speaker changes are refused. When to use: for single-segment edits; for several segments, call it once per segment with that segment’s ETag. Side effects: Commits atomically: the project’s pipeline_status becomes transcript_edited, segment ETags change, affected segments become outdated (listed in the response’s effects) and their audio may be dropped. A change of the review flag alone changes only the segment’s flag and ETag. Cost: Free (a redub of the change is priced by estimateDub). An edit that starts a translation counts against the payer’s translation budget (429 rate_limited, policy translation-hour) and its 5 concurrent translation jobs (429 too_many_concurrent_jobs); then nothing is written. Idempotency: Idempotency-Key accepted (SDKs send one); retries within 24 h replay the first response. Concurrency: If-Match with the current segment ETag is required (428 if missing or *, 412 with current_etag if stale). On 412 re-read, re-apply once and retry. Refused during processing (409 project_not_ready) and while a dub runs, from its start until its merge ends or it fails (409 dub_in_progress); 409 transcript_busy means concurrent writes kept conflicting: retry after Retry-After. Paid text: on a project created through v3, 409 dub_payment_required until a dub of that project is charged. Required scopes: transcripts:write Errors: transcript_not_ready (409), segment_busy (409), project_not_ready (409), dub_in_progress (409), transcript_busy (409), too_many_concurrent_jobs (429), dub_payment_required (409)

Authorizations

Authorization
string
header
required

API key from Settings -> API keys, sent as Authorization: Bearer <key> (SDK environment variable RASK_API_KEY). Bound to one workspace and one acting user. Operations list the scopes they need (OpenAPI 3.1 scopes on a bearer scheme).

Scopes

transcripts:write

Headers

Idempotency-Key
string

Optional. A unique key per logical request (SDKs send a bare UUIDv4; an RFC 9651 quoted string is accepted and unquoted); reuse it unchanged on retries to replay the first response.

Required string length: 1 - 255
Pattern: ^[\x20-\x7E]+$
If-Match
string
required

Required: the segment's current ETag (etag of getSegment or listSegments); the write commits only if the segment still matches it.

Maximum string length: 128

Path Parameters

project_id
string
required

Project id (from createProject or listProjects).

Maximum string length: 64
segment_id
string
required

Segment id of the live transcript.

Maximum string length: 64

Body

application/json

At least one field.

start_seconds
number<double>

New start in seconds (<= 3 decimals).

Required range: x >= 0
end_seconds
number<double>

New end in seconds (<= 3 decimals).

Required range: x >= 0
speaker_id
string

New speaker (SPEAKER_NN); an unknown speaker gets a suggested voice.

Maximum string length: 11
Pattern: ^SPEAKER_\d{2,3}$
source_text
string

New source text (<= 5000 characters; no control characters but newline).

Maximum string length: 5000
translation_text
string

New translation (<= 5000 characters; no control characters but newline).

Maximum string length: 5000
needs_attention
boolean

Review flag (changing only this keeps the dub current).

retranslate
boolean

Retranslate after the change. Default: true when source_text changes and translation_text is not sent.

Response

OK: TranscriptEditResult.

Result of a segment or transcript mutation. Transient (no id).

object
enum<string>
required

Always transcript_edit_result.

Available options:
transcript_edit_result
segments
object[]
required

Every created or changed segment, read back consistently, in time order.

deleted_segment_ids
string[]
required

Deleted segments.

operations
object[]
required

Segments per operation.

effects
object
required

Effects of a committed write.

warnings
object[]
required

Warnings.