# 1. exchange client credentials for a token (valid 1 hour)
curl -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-d "grant_type=client_credentials"# 2. upload by link - YouTube, Drive, S3, Vimeo or direct URL
curl -X POST https://api.rask.ai/api/library/v1/media/link \
-H "Authorization: Bearer $TOKEN" \
-d '{"link": "https://youtu.be/...", "name": "Q3 launch"}'# 3. create the dubbing project - this starts the dub
curl -X POST https://api.rask.ai/v2/projects \
-H "Authorization: Bearer $TOKEN" \
-d '{
"video_id": "b8f7835d-e8c9-4ff4-8e34-5c336d818319",
"dst_lang": "es-mx",
"name": "Q3 launch"
}'# Poll the project until status is merging_done.while :; do
curl -s https://api.rask.ai/v2/projects/$ID \
-H "Authorization: Bearer $TOKEN" | jq .status
sleep 10done



Senden Sie eine Datei als Multipart-Formulardaten oder posten Sie einen Link. Unterstützte Link-Quellen sind YouTube, Google Drive, S3, Vimeo sowie jede direkte Download-URL. Sie erhalten eine Medien-ID und vollständige technische Metadaten, bevor Kosten anfallen.
Übergeben Sie die Medien-ID als video_id und eine Zielsprache. Optional können Sie Ihr eigenes Transkript oder ein Glossar hinzufügen. Die Synchronisation startet sofort.
Fragen Sie den status ab, bis dieser merging_done erreicht. Laden Sie anschließend das synchronisierte Video, die Audiospuren und die Untertiteldateien herunter.
# pip install git+https://github.com/braskai/rask-sdk
import asyncio
from rask_sdk import RaskSDKClient
async def main():
client = RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)
media = await client.upload_media_link(link="https://youtu.be/...")
project = await client.create_project(video_id=media.id, dst_lang="es-mx")
while project.status != "merging_done":
await asyncio.sleep(10)
project = await client.get_project(project.id)
print(project.translated_video, project.translation_srt_path)
asyncio.run(main())import os, time, requests
AUTH = "https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token"
API = "https://api.rask.ai"
token = requests.post(AUTH, auth=(CLIENT_ID, CLIENT_SECRET),
data={"grant_type": "client_credentials"}).json()["access_token"]
h = {"Authorization": f"Bearer {token}"}
media = requests.post(f"{API}/api/library/v1/media/link", headers=h,
json={"link": "https://youtu.be/..."}).json()
project = requests.post(f"{API}/v2/projects", headers=h,
json={"video_id": media["id"], "dst_lang": "es-mx"}).json()
while project["status"] != "merging_done":
time.sleep(10)
project = requests.get(f"{API}/v2/projects/{project['id']}", headers=h).json()
print(project["translated_video"])// no dependencies, Node 18+ global fetch
const API = 'https://api.rask.ai';
const auth = await fetch('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token', {
method: 'POST',
headers: { Authorization: 'Basic ' + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`) },
body: new URLSearchParams({ grant_type: 'client_credentials' }),
}).then(r => r.json());
const h = { Authorization: `Bearer ${auth.access_token}`, 'Content-Type': 'application/json' };
const media = await fetch(`${API}/api/library/v1/media/link`, {
method: 'POST', headers: h,
body: JSON.stringify({ link: 'https://youtu.be/...' }),
}).then(r => r.json());
let project = await fetch(`${API}/v2/projects`, {
method: 'POST', headers: h,
body: JSON.stringify({ video_id: media.id, dst_lang: 'es-mx' }),
}).then(r => r.json());
while (project.status !== 'merging_done') {
await new Promise(r => setTimeout(r, 10000));
project = await fetch(`${API}/v2/projects/${project.id}`, { headers: h }).then(r => r.json());
}
console.log(project.translated_video);# 1. token (valid 1 hour - cache and reuse it)
TOKEN=$(curl -s -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-d "grant_type=client_credentials" | jq -r .access_token)
# 2. upload by link
VIDEO_ID=$(curl -s -X POST https://api.rask.ai/api/library/v1/media/link \
-H "Authorization: Bearer $TOKEN" \
-d '{"link": "https://youtu.be/..."}' | jq -r .id)
# 3. create the dubbing project
ID=$(curl -s -X POST https://api.rask.ai/v2/projects \
-H "Authorization: Bearer $TOKEN" \
-d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"es-mx\"}" | jq -r .id)
# 4. poll, then download
while [ "$(curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" | jq -r .status)" != "merging_done" ]; do
sleep 10
done<?php
use GuzzleHttp\Client;
$http = new Client(['base_uri' => 'https://api.rask.ai']);
$auth = json_decode((new Client)->post(
'https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token',
['auth' => [$clientId, $clientSecret],
'form_params' => ['grant_type' => 'client_credentials']]
)->getBody(), true);
$h = ['Authorization' => 'Bearer ' . $auth['access_token']];
$media = json_decode($http->post('/api/library/v1/media/link',
['headers' => $h, 'json' => ['link' => 'https://youtu.be/...']])->getBody(), true);
$project = json_decode($http->post('/v2/projects',
['headers' => $h, 'json' => ['video_id' => $media['id'], 'dst_lang' => 'es-mx']])->getBody(), true);
while ($project['status'] !== 'merging_done') {
sleep(10);
$project = json_decode($http->get("/v2/projects/{$project['id']}",
['headers' => $h])->getBody(), true);
} 0s created
12s transcription_started
70s translation_started
95s voiceover_started
150s merging_started
170s merging_done

es-mx und es-es gleichermaßen dient. Das Projekt speichert glossary_version, sodass spätere Änderungen bereits fertiggestellte Arbeit nicht unbemerkt verändern.Der API-Zugriff ist in kostenpflichtigen Tarifen enthalten. Sie erstellen Ihre Client-ID und Ihr Geheimnis in der App und können sofort loslegen. Unternehmensbedingungen, Mengenrabatte und kundenspezifische Sprachen werden über unser Team abgewickelt.
OAuth-2.0-Client-Anmeldeinformationen: Tauschen Sie Ihre Client-ID und Ihr Geheimnis gegen ein kurzlebiges Bearer-Token aus. Token sind eine Stunde lang gültig. Speichern Sie diese daher im Cache und verwenden Sie sie wieder.
Asynchron. Das Erstellen eines Projekts wird sofort bestätigt und die Synchronisation beginnt. Fragen Sie GET /v2/projects/{id} ab, bis der Status merging_done lautet. Die Bereitstellung von Webhooks ist Teil des Enterprise-Onboardings.
Jede Anfrage wird im gesendeten Zustand angenommen. Der Durchsatz richtet sich nach der Auslastung der Warteschlange, und die Bearbeitungspriorität ist Teil der Enterprise-Bedingungen.
Über 135 Zielsprachen, darunter Spanisch, Französisch, Deutsch, Portugiesisch, Hindi, Japanisch und Koreanisch, mit regionalen Varianten, wo diese wichtig sind (daher wird für Mexiko z. B. es-mx statt es verwendet). Die Quellsprache wird automatisch erkannt, kann aber auch manuell festgelegt werden. Die vollständige Liste der Quell- und Zielcodes finden Sie in der API-Dokumentation. Für Sprachen außerhalb dieses Katalogs können Sie unser Team kontaktieren, um die Machbarkeit und verfügbare Optionen zu besprechen.
Instant Voice Clone verwendet die Stimmen der Sprecher aus Ihrem Quellvideo für unterstützte Zielsprachen. Für einen wiederverwendbaren Custom Voice Clone erstellen Sie diesen mit der Einwilligung des Sprechers in der Rask-App und weisen ihn dann über die API zu. Die Ergebnisse hängen vom Ausgangsaudio sowie von der ausgewählten Sprache und Stimme ab.
Das hängt von der Videolänge, der Anzahl der Sprecher, der Zielsprachen und der Auslastung der Warteschlange ab. Jedes Projekt meldet seinen Status in jeder Phase – von der Transkription bis zur Zusammenführung –, sodass Sie Ihren Nutzern den genauen Fortschritt anzeigen können.
Sieben Videoformats (MP4, MOV, MKV, AVI, WebM, M4V, 3GP) und vier Audioformats (MP3, WAV, FLAC, M4A). Sie können Videos auch direkt über YouTube, Google Drive, S3, Vimeo oder einen direkten URL importieren, anstatt sie hochzuladen.
Sprecher werden automatisch aus dem Quell-Audio erkannt und getrennt, und jeder erhält seine eigene Stimme in der Zielsprache. Sie können die Zuordnung pro Sprecher überschreiben oder num_speakers bei der Projekterstellung übergeben, wenn Sie die Anzahl bereits kennen.
Ja. Laden Sie eine SRT-Datei hoch, um ein Transkript zu erstellen, und übergeben Sie deren ID beim Erstellen des Projekts. Sie können die Transkription auch von der API durchführen lassen und das Skript anschließend Segment für Segment bearbeiten.
Bei jedem fertigen Projekt stehen neben den Video- und Audiospuren auch Untertiteldateien im .srt- und .vtt-Format zur Verfügung, die genau auf das Synchronisoliert abgestimmt sind.
Ein offizielles, asynchrones Python-SDK, veröffentlicht auf GitHub, mit einer stabilen, abwärtskompatiblen Schnittstelle. Für andere Sprachen können Sie einen Client aus der veröffentlichten OpenAPI-Spezifikation generieren. Außerdem steht ein n8n-Node für No-Code-Workflows zur Verfügung.
Nur das geänderte Material. Die Dauer der bearbeiteten und hinzugefügten Segmente wird zusammengerechnet und auf die nächste Minute aufgerundet, sodass das Korrigieren einiger Zeilen etwa eine Minute kostet.