# 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



Çok parça form verisi olarak bir dosya gönderin veya bir bağlantı paylaşın. Desteklenen bağlantı kaynakları YouTube, Google Drive, S3, Vimeo ve herhangi bir doğrudan indirme URL'sidir. Hiçbir harcama yapmadan önce bir medya kimliği ve tam teknik meta veriler döndürür.
Medya kimliğini video_id olarak ve bir hedef dil ile geçirin. İsteğe bağlı olarak kendi metninizi veya bir sözlük ekleyin. Dublaj hemen başlar.
merging_done aşamasına ulaşana kadar status değerini okuyun, ardından dublajlı videoyu, ses parçalarını ve altyazı dosyalarını indirin.
# 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 ve es-es benzer şekilde hizmet eder. Proje kayıtları glossary_version, böylece sonraki düzenlemeler tamamlanan çalışmaları asla habersiz değiştirmez.API erişimi ücretli planlara dahildir. Uygulama içinde istemci kimliğinizi (client id) ve gizli anahtarınızı (secret) oluşturup hemen kullanmaya başlayabilirsiniz. Kurumsal koşullar, hacim bazlı fiyatlandırma ve özel dil kapsamı için ekibimizle iletişime geçebilirsiniz.
OAuth 2.0 istemci kimlik bilgileri: İstemci kimliğinizi ve gizli anahtarınızı kısa ömürlü bir erişim belirteciyle değiştirin. Belirteçler bir saat geçerlidir, bu yüzden bunları önbelleğe alıp yeniden kullanın.
Asenkron. Bir proje oluşturulduğunda hemen yanıt döner ve dublaj başlar. Durum merging_done olana kadar GET /v2/projects/{id} adresini sorgulayın. Webhook teslimi, kurumsal sisteme geçiş sürecinin bir parçasıdır.
Gönderilen her istek olduğu gibi kabul edilir. İşlem hızı işleme kuyruğunun uzunluğuna bağlıdır ve işlem önceliği kurumsal şartların bir parçasıdır.
İspanyolca, Fransızca, Almanca, Portekizce, Hintçe, Japonca ve Korece dahil olmak üzere 135'ten fazla hedef dilde, gerektiğinde bölgesel çeşitliliklerle (örneğin es yerine es-mx) hizmet verilir. Kaynak dil otomatik olarak algılanır veya siz belirleyebilirsiniz. Kaynak ve hedef kodlarının tam listesi API belgelerinde yer almaktadır. Katalog dışındaki diller için yapılabilirliği ve mevcut seçenekleri görüşmek üzere ekibimizle iletişime geçin.
Anında Ses Klonlama, desteklenen hedef diller için kaynak videonuzdaki konuşmacıların seslerini kullanır. Yeniden kullanılabilir Özel Ses Klonlaması için, konuşmacının izniyle Rask uygulamasında oluşturun ve ardından API aracılığıyla atayın. Sonuçlar kaynak sese, seçilen dile ve sese bağlıdır.
Video uzunluğuna, konuşmacı sayısına, hedef dile ve kuyruk yoğunluğuna bağlıdır. Her proje, metin dökümünden birleştirmeye kadar her aşamada durumunu bildirir, böylece kullanıcılarınıza gerçek zamanlı ilerleme gösterebilirsiniz.
Yedi video formatı (MP4, MOV, MKV, AVI, WebM, M4V, 3GP) ve dört ses formatı (MP3, WAV, FLAC, M4A). Dosya yüklemek yerine YouTube, Google Drive, S3, Vimeo veya doğrudan bir URL üzerinden de içerik alabilirsiniz.
Konuşmacılar kaynak sesten otomatik olarak algılanıp ayrılır ve her birine hedef dilde kendi sesi atanır. Konuşmacı başına atamayı değiştirebilir veya sayıyı zaten biliyorsanız proje oluşturma sırasında num_speakers parametresini belirtebilirsiniz.
Evet. Bir döküm oluşturmak için .srt dosyası yükleyin ve projeyi oluştururken kimliğini iletin. Ayrıca API'nin metni dönüştürmesine izin verebilir ve ardından betiği parça parça düzenleyebilirsiniz.
Tamamlanan her proje, video ve ses parçasının yanı sıra dublajla senkronize edilmiş .srt ve .vtt formatında altyazı dosyaları sunar.
GitHub'da yayınlanan, kararlı ve geriye dönük uyumlu arayüze sahip resmi bir asenkron Python SDK'sı mevcuttur. Diğer diller için yayınlanan OpenAPI spesifikasyonundan bir istemci oluşturun. Kodsuz iş akışları için bir n8n düğümü de bulunmaktadır.
Yalnızca değiştirilen kısım. Düzenlenen ve eklenen parçaların süreleri toplanır ve en yakın dakikaya yuvarlanır, bu nedenle birkaç satırı düzeltmek yaklaşık bir dakikanızı alır.