Skip to main content
POST
Estimate the cost of creating a project
Runs every check of createProject without writing and returns an Estimate: the project credit, auto-dub minutes (charged after translation), the stages of a localization block and on-screen minutes (after the first dub), text_adaptation, eligible with blocking reasons, notices (e.g. dubbing_model_overridden) and balance_after. Business-rule failures come back as reasons, not errors. When to use: before createProject; send its total_minutes as expected_cost_minutes. Side effects: None. Cost: Free. Does not need credits:spend. Idempotency: no side effects; an Idempotency-Key is accepted and ignored, so every call is fresh. Required scopes: projects:write Errors: media_not_found (404), folder_not_found (404), glossary_not_found (404)

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

Headers

Idempotency-Key
string

Accepted and ignored: this operation has no side effects and stores nothing.

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

Body

application/json

Same body as createProject.

media_id
string
required

A ready media item of this workspace (from completeUpload or importMedia).

Maximum string length: 64
target_language
string
required

Target language code (GET /v3/languages?capability=translation).

Maximum string length: 32
free_dubbing
boolean
default:false

Use the free dubbing variant (entitlement free_languages).

source_language
string

Source language code; omit to auto-detect. Required with subtitles.source.

Maximum string length: 32
name
string

Project name; defaults to the media file name. Not de-duplicated.

Required string length: 1 - 255
num_speakers
integer<int32>

Number of speakers; omit to detect (or derive from subtitle labels).

Required range: 1 <= x <= 20
folder_id
string

Folder to create the project in; omit for the root.

Maximum string length: 64
glossary_id
string

Glossary to apply (entitlement glossary); its language pair must match.

Maximum string length: 64
translation_instructions
string

Instructions for the translator (entitlement translation_instructions); forces LLM translation.

Maximum string length: 8192
dubbing_model
enum<string>

Requested dubbing model; omitted = v2. A named model is stored on the project (requested_dubbing_model); the effective model may differ (dubbing_model_override_reason).

Available options:
v1,
v2
subtitles
object

Subtitles to import instead of transcribing (entitlement subtitle_import). Source and target must have equal cue counts and timings; source_language is required with source.

auto_dub
boolean
default:true

Dub automatically after translation (default). Needs an active subscription or a trial; a lapsed subscription answers 403 feature_not_in_plan. false answers 403 prepare_mode_not_enabled unless preparation is enabled; a trial payer must keep it true (422 auto_dub_required).

speaker_voices
object[]

Voices to apply before the first dub. Availability and entitlement are checked up front (422 voice_not_in_pool, instant_clone_not_available; an instant clone needs the entitlement instant_voice_clone); a duplicate speaker_label answers 422 validation_failed. If a clone cannot be applied once speakers are known (too little speech, daily clone quota), the speaker keeps the suggested voice and the job result carries speaker_voice_not_applied with the label. Speakers without an entry get the suggested voice (Speaker.voice_origin).

Required array length: 1 - 20 elements
onscreen
object

On-screen auto-start.

localization
object

Run dub, lip-sync and on-screen as one localization job after translation.

expected_cost_minutes
integer<int32>

Accepted and ignored, so the action's body can be sent unchanged.

Required range: 0 <= x <= 100000
metadata
object

Client metadata: <= 20 string keys (<= 40 characters) and values (<= 500). Returned on reads, never sent in webhooks.

Response

OK: Estimate.

A side-effect-free quote produced by the action's own checks. Transient: carries object, no id.

object
enum<string>
required

Always estimate.

Available options:
estimate
action
enum<string>
required

The action an estimate prices. Discriminator of details.

  • create_project: createProject
  • create_project_copies: createProjectCopies
  • dub: createDub
  • lipsync: createLipsync
  • onscreen: createOnscreen
  • segment_generation: generateSegments
  • localization: createLocalization, resumeJob
Available options:
create_project,
create_project_copies,
dub,
lipsync,
onscreen,
segment_generation,
localization
project_id
string | null
required

The project; null for project creation.

eligible
boolean
required

True when the action would start now, balance, plan, scopes and key limits included.

reasons
object[]
required

Blocking reasons (the action's error codes, plus insufficient_scope, token_spend_limit_exceeded, workspace_access_suspended).

notices
object[]
required

Non-blocking notices (dubbing_model_overridden, trial_processing_window, meaning_first_disabled, voice_fallback, assembly_anchor_voiced, wider_voice_setup, clips_not_reusable).

costs
object[]
required

Cost lines.

A line of an estimate: a union on credit_type.

total_minutes
integer<int32>
required

Sum of minute lines (any minute pool): send this as expected_cost_minutes.

Required range: x >= 0
total_projects
integer<int32>
required

Sum of project-credit lines (0 when unlimited).

Required range: x >= 0
balance_after
object
required

Balances after the action.

spend_limit
object | null
required

The calling key's monthly caps; null when the key has neither cap.

details
object
required

Per-action details; action mirrors Estimate.action.