# 1. import the video - a YouTube, Google Drive or Vimeo link
JOB=$(curl -s -X POST https://api.rask.ai/v3/media/import \
-H "Authorization: Bearer $RASK_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"url": "https://youtu.be/..."}' | jq -r .id)
MEDIA=$(curl -s "https://api.rask.ai/v3/jobs/$JOB?wait_seconds=20" \
-H "Authorization: Bearer $RASK_API_KEY" | jq -r .result.media_id)
# 2. check the price - free, and nothing is charged
CAP=$(curl -s -X POST https://api.rask.ai/v3/projects/estimate \
-H "Authorization: Bearer $RASK_API_KEY" -H "Content-Type: application/json" \
-d "{\"media_id\":\"$MEDIA\",\"target_language\":\"es-mx\"}" | jq -r .total_minutes)
# 3. create the project - dubbing starts, and costs no more than $CAP
curl -X POST https://api.rask.ai/v3/projects \
-H "Authorization: Bearer $RASK_API_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d "{\"media_id\":\"$MEDIA\",\"target_language\":\"es-mx\",\"expected_cost_minutes\":$CAP}"# One request waits for the next change in the job
curl -s "https://api.rask.ai/v3/jobs/$JOB_ID?wait_seconds=20" \
-H "Authorization: Bearer $RASK_API_KEY" \
| jq '{status, stage, progress, expected_remaining_seconds}'



Importa il file da un link di YouTube, Google Drive o Vimeo, oppure caricalo direttamente nello spazio di archiviazione con un URL pre-firmato. Riceverai un ID multimediale e i metadati tecnici prima che venga effettuato qualsiasi addebito.
Inserisci l'ID multimediale e la lingua di destinazione, insieme al prezzo accettato come expected_cost_minutes. L'elaborazione si avvia immediatamente e il progetto mantiene quel numero come limite massimo.
Attendi il completamento dell'attività, quindi visualizza i risultati del progetto: il video doppiato, le tracce audio, i file dei sottotitoli e la trascrizione, ciascuno con il proprio link di download.
# pip install rask-sdk
from rask_sdk import Rask
rask = Rask() # reads RASK_API_KEY
# one call uploads the file and answers with the import job
import_job = rask.uploads.upload_file("launch.mp4")
media_id = rask.jobs.wait(import_job.id).result.media_id
# the price you accept becomes the ceiling of the work
estimate = rask.projects.estimate_project(media_id=media_id, target_language="es-mx")
print(f"The dub costs {estimate.total_minutes} minutes")
created = rask.projects.create_project(
media_id=media_id,
target_language="es-mx",
expected_cost_minutes=estimate.total_minutes,
)
processed = rask.jobs.wait(created.id)
rask.jobs.wait(processed.result.auto_dub.dub_job_id)
outputs = rask.exports.list_project_outputs(processed.result.project_id).data
print(next(o.url for o in outputs if o.kind == "dubbed_video"))// npm install @braskai/api
import { Rask } from '@braskai/api';
const rask = new Rask(); // reads RASK_API_KEY
const { data: importJob } = await rask.uploads.uploadFile('launch.mp4');
const { data: imported } = await rask.jobs.wait(importJob.id);
const order = { media_id: imported.result.media_id, target_language: 'es-mx' };
const { data: estimate } = await rask.projects.estimateProject({ body: order });
console.log(`The dub costs ${estimate.total_minutes} minutes`);
const { data: created } = await rask.projects.createProject({
body: { ...order, expected_cost_minutes: estimate.total_minutes },
});
const { data: processed } = await rask.jobs.wait(created.id);
await rask.jobs.wait(processed.result.auto_dub.dub_job_id);
const { data: outputs } = await rask.exports.listProjectOutputs(processed.result.project_id);
console.log(outputs.data.find((o) => o.kind === 'dubbed_video')?.url);import os, httpx
API = "https://api.rask.ai/v3"
h = {"Authorization": f"Bearer {os.environ['RASK_API_KEY']}"}
c = httpx.Client(base_url=API, headers=h, timeout=30)
job = c.post("/media/import", json={"url": "https://youtu.be/..."},
headers={"Idempotency-Key": os.urandom(16).hex()}).json()
media = c.get(f"/jobs/{job['id']}", params={"wait_seconds": 20}).json()["result"]["media_id"]
order = {"media_id": media, "target_language": "es-mx"}
cap = c.post("/projects/estimate", json=order).json()["total_minutes"]
created = c.post("/projects", json={**order, "expected_cost_minutes": cap},
headers={"Idempotency-Key": os.urandom(16).hex()}).json()
outputs = c.get(f"/projects/{created['project_id']}/outputs").json()["data"]
print(next(o["url"] for o in outputs if o["kind"] == "dubbed_video"))API=https://api.rask.ai/v3
AUTH="Authorization: Bearer $RASK_API_KEY"
JOB=$(curl -s -X POST $API/media/import -H "$AUTH" -H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" -d '{"url":"https://youtu.be/..."}' | jq -r .id)
MEDIA=$(curl -s "$API/jobs/$JOB?wait_seconds=20" -H "$AUTH" | jq -r .result.media_id)
ORDER="{\"media_id\":\"$MEDIA\",\"target_language\":\"es-mx\"}"
CAP=$(curl -s -X POST $API/projects/estimate -H "$AUTH" -H "Content-Type: application/json" \
-d "$ORDER" | jq -r .total_minutes)
PROJECT=$(curl -s -X POST $API/projects -H "$AUTH" -H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d "$(jq -c --argjson cap "$CAP" '. + {expected_cost_minutes:$cap}' <<<"$ORDER")" | jq -r .project_id)
curl -s $API/projects/$PROJECT/outputs -H "$AUTH" \
| jq -r '.data[] | select(.available) | "\(.kind)\t\(.url)"'<?php
// composer require "braskai/rask-sdk:^3.0@alpha"
use Rask\Rask;
$rask = new Rask(); // reads RASK_API_KEY
$importJob = $rask->uploads->uploadFile('launch.mp4');
$mediaId = $rask->jobs->wait($importJob->id)->result->mediaId;
$estimate = $rask->projects->estimateProject(
mediaId: $mediaId, targetLanguage: 'es-mx'
);
echo "The dub costs {$estimate->totalMinutes} minutes\n";
$created = $rask->projects->createProject(
mediaId: $mediaId, targetLanguage: 'es-mx',
expectedCostMinutes: $estimate->totalMinutes
);
$processed = $rask->jobs->wait($created->id);
foreach ($rask->exports->listProjectOutputs($processed->result->projectId)->data as $o) {
if ($o->kind === 'dubbed_video') { echo $o->url, "\n"; }
}# the request stays open until the job changes, then returns at once
{
"status": "running",
"stage": "translation",
"progress": 46,
"expected_remaining_seconds": 78
}
# ask again; the next answer is the finished job
{
"status": "succeeded",
"result": { "project_id": "c7d2a9e4-3b1f-4a6c-8d5e-9f0b2e7c1a63" },
"links": { "outputs": "/v3/projects/c7d2a9e4.../outputs" }
}

es-mx e es-es allo stesso modo. Il progetto registra glossary_version, così le modifiche successive non alterano mai inaspettatamente il lavoro completato.L'API di Rask AI è un'interfaccia REST per la localizzazione dei video. Trascrive il parlato di un video, lo traduce, lo doppia con voci AI o cloni vocali, aggiunge la sincronizzazione labiale opzionale e restituisce sottotitoli, tracce audio e trascrizione, tutto all'interno di un unico progetto.
Doppiaggio AI, traduzione video, localizzazione video, clonazione vocale, sincronizzazione labiale, sintesi vocale per video, conversione da voce a testo, trascrizione video e sottotitoli. Condividono un'unica autenticazione, un unico oggetto di progetto e un unico saldo in minuti, e ciascuna ha una pagina dedicata con dettagli e codice.
L'accesso alle API è disponibile nei piani Creator Pro, Business ed Enterprise, con funzioni che variano a seconda del piano scelto. Potete generare l'ID cliente e la password segreta direttamente nell'app e iniziare subito a effettuare chiamate. Per le condizioni dedicate alle aziende, i prezzi per grandi volumi e la copertura di lingue personalizzate, potete rivolgervi al nostro team.
Le API v3 utilizzano una singola chiave API. Creala nell'applicazione web, scegli le autorizzazioni e il limite di spesa mensile, quindi inviala come token Bearer con ogni richiesta. Non ci sono token da recuperare o aggiornare.
Sì. Sono disponibili SDK ufficiali per TypeScript, Python, Go, Java e PHP, installabili tramite npm, PyPI, Go, Maven Central e Packagist. L'API REST funziona con qualsiasi linguaggio e questa pagina include esempi completi.
Audio sorgente in 75 lingue, con rilevamento automatico della lingua, e oltre 135 opzioni di lingua e regionali come destinazione, come es-mx o pt-br. La clonazione della voce è disponibile nelle lingue supportate; i preset vocali AI coprono il resto.
L'utilizzo viene fatturato al minuto di video, arrotondato al minuto intero successivo, dallo stesso pool di minuti dell'app Rask. I minuti aggiuntivi costano 3$ al minuto sui piani standard idonei e i prezzi per le aziende sono personalizzati in base al contratto. La rigenerazione viene fatturata sui segmenti modificati con un minimo di un minuto per esecuzione, e la sincronizzazione labiale viene fatturata separatamente per ogni generazione video completa.
L'API v3 sostituisce OAuth con una singola chiave API, calcola il prezzo di ogni operazione a pagamento prima dell'esecuzione e gestisce le operazioni lunghe come attività da poter monitorare. Introduce la clonazione vocale, la traduzione del testo sullo schermo, le versioni delle trascrizioni, la copia e l'esportazione dei progetti, passando da 23 a 82 operazioni supportate rispetto alla versione 2. La versione API v2 continuerà a funzionare senza modifiche.
Wait on the job with GET /v3/jobs/{job_id}: the request stays open until the status changes, so you can show real progress without a polling loop.
Video in MP4, MOV, MKV, AVI, WebM, M4V e 3GP, audio in MP3, WAV, FLAC e M4A, oppure un link da YouTube, Google Drive, S3, Vimeo o un URL diretto.
Sì. Carica i file SRT di origine e tradotti, oppure invia segmenti di testo e passa il transcript_id quando crei il progetto. Rask darà quindi voce al testo che hai approvato.
No. L'API elabora file video e audio registrati e fornisce i risultati come file. Per gli assistenti vocali dal vivo o i sottotitoli in tempo reale, è più adatta un'API di riconoscimento vocale in streaming.
Brask Inc possiede la certificazione SOC 2 Tipo II e opera nel rispetto del GDPR, con lo stato dei controlli in tempo reale nel suo Centro Affidabilità. I cloni vocali personalizzati vengono creati con il consenso del parlante.