Skip to main content
POST
Copy a project into other target languages
Copies reuse the source transcript (no new transcription) and start at voice matching and translation; a target equal to the source reuses its dub. Copies inherit the folder, translation instructions and dubbing model; glossaries are set per target. Each copy auto-dubs by default. When to use: after the source finished processing, to add languages without re-transcribing. Side effects: Creates N projects and N project_processing jobs. Cost: N project credits now (0 when unlimited) plus capped auto-dub minutes; a balance below their estimate answers 402. Estimate with estimateProjectCopies. Async: returns 202 with a list of project_processing Jobs (no Location: each job has links.self); wait for each with GET /v3/jobs/{job_id}?wait_seconds=20; typically 5 min (p95 30 min). Idempotency: Idempotency-Key required; a same-key retry within 24 h returns the job’s current state (Idempotent-Replayed: true); after a failed or canceled job, use a new key. Plan: multilanguage; glossary_id -> glossary; auto_dub -> an active subscription. Paid text: a copy’s text stays closed until a dub of that copy is charged (dub_payment_required); a copy that reuses the source’s charged dub is open. Required scopes: projects:write, credits:spend Errors: glossary_not_found (404), project_not_ready (409), feature_not_in_plan (403), target_language_not_supported (422), glossary_language_mismatch (422), cost_changed (409), insufficient_balance (402), too_many_concurrent_jobs (429), prepare_mode_not_enabled (403)

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

projects:write
credits:spend

Headers

Idempotency-Key
string
required

Required. 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. Kept 24 h per (workspace, acting user).

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

Path Parameters

project_id
string
required

Project id (from createProject or listProjects).

Maximum string length: 64

Body

application/json

Body of createProjectCopies. Each copy inherits the requested dubbing model of its source.

targets
object[]
required

Target languages (unique), at most 10 per request (getPlan.limits.max_batch_targets); more answer 422 validation_failed. A target equal to the source reuses its dub.

Required array length: 1 - 10 elements
auto_dub
boolean
default:true

Dub each copy automatically after translation (default). false answers 403 prepare_mode_not_enabled unless preparation is enabled.

expected_cost_minutes
integer<int32>

Cap for the deferred spends (auto-dub after translation). Required unless auto_dub: false is sent (422 validation_failed, errors[].code expected_cost_required). A deferred spend priced above the cap is skipped, uncharged. A cap below the current total fails 409 cost_changed at the request, and too few minutes for it fail 402 insufficient_balance; the skip applies only when the price or balance changes between the request and dispatch.

Required range: 0 <= x <= 100000
name
string

Name of the copies; defaults to the source name.

Required string length: 1 - 255

Response

Accepted: JobList.

A page of Job (the list envelope shared by every list).

object
enum<string>
required

Always list.

Available options:
list
data
object[]
required

Items of this page.

next_cursor
string | null
required

Pass as cursor for the next page; null on the last page.

has_more
boolean
required

More items exist (a page may hold fewer than limit items while has_more is true).