# 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



أرسل ملفاً كبيانات نموذج متعددة الأجزاء، أو انشر رابطاً. مصادر الروابط المدعومة هي يوتيوب، وجوجل درايف، وS3، وفيميو، وأي عنوان URL مباشر للتحميل. يُرجع معرف الوسائط والبيانات التعريفية التقنية الكاملة قبل أن تنفق أي شيء.
قم بتمرير معرف الوسائط كـ video_id واللغة المستهدفة. يمكنك اختيارياً إرفاق النص الخاص بك أو مسرد المصطلحات. تبدأ الدبلجة على الفور.
اقرأ status حتى يصل إلى merging_done، ثم قم بتنزيل الفيديو المدبلج، والمسارات الصوتية، وملفات الترجمة.
# 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 و es-es على حد سواء. يسجل المشروع glossary_version، بحيث لا تؤدي التعديلات اللاحقة إلى تغيير العمل المكتمل دون إشعار.تم تضمين صلاحية استخدام واجهة برمجة التطبيقات مع الباقات المدفوعة. يمكنك إنشاء معرف العميل الخاص بك وكلمة السر في التطبيق والبدء في استخدام الخدمة فوراً. بالنسبة لشركات الأعمال، أسعار الكميات، وتغطية اللغات المخصصة، فيتم ترتيبها عبر فريقنا.
بيانات اعتماد عميل OAuth 2.0: استبدل معرف العميل وكلمة المرور الخاصة بك برمز وصول مؤقت. تكون الرموز صالحة لمدة ساعة واحدة، لذا يرجى حفظها مؤقتاً وإعادة استخدامها.
عملية غير متزامنة. يُنشأ المشروع فوراً ويبدأ الدبلجة. تابع طلب GET /v2/projects/{id} حتى تصبح الحالة merging_done. تُعد خدمة إرسال الويب هوك جزءاً من عملية إعداد حسابات الشركات.
يتم قبول كل طلب كما هو مرسل. تعتمد سرعة المعالجة على حجم قائمة الانتظار، وتعتبر أولوية المعالجة جزءاً من شروط اتفاقيات الشركات.
أكثر من 135 لغة مستهدفة، تشمل الإسبانية، والفرنسية، والألمانية، والبرتغالية، والهندية، واليابانية، والكورية، مع توفر اللهجات المحلية عند الحاجة، حيث يستخدم الرمز es-mx بدلاً من es. يتم اكتشاف اللغة الأصلية تلقائياً، أو يمكنك تحديدها بنفسك. يمكنك العثور على القائمة الكاملة لرموز اللغات الأصلية والمستهدفة في وثائق واجهة برمجة التطبيقات (API). للغات غير المدرجة في القائمة، يرجى التواصل مع فريقنا لمناقشة إمكانية إضافتها والخيارات المتاحة.
تستخدم ميزة الاستنساخ الفوري للصوت أصوات المتحدثين من الفيديو الأصلي للغات المستهدفة المدعومة. لإنشاء صوت مخصص وقابل لإعادة الاستخدام، قم بإنشائه داخل تطبيق Rask بموافقة المتحدث، ثم قم تعيينه عبر واجهة برمجة التطبيقات. تختلف النتائج بناءً على جودة الصوت الأصلي واللغة والصوت المختارين.
يعتمد ذلك على طول الفيديو، وعدد المتحدثين، واللغة المستهدفة، وحجم قائمة الانتظار. يوضح كل مشروع حالته في كل مرحلة، بدءاً من التفريغ الصوتي وحتى الدمج، لكي تتمكن من عرض تقدم العمل بدقة للمستخدمين.
سبع صيغ للفيديو (MP4، MOV، MKV، AVI، WebM، M4V، 3GP) وأربع صيغ للصوت (MP3، WAV، FLAC، M4A). يمكنك أيضاً جلب المحتوى مباشرة من يوتيوب، جوجل درايف، S3، فيميو أو عبر رابط مباشر بدلاً من رفع الملف.
يتم التعرف على المتحدثين وفصلهم عن الصوت الأصلي تلقائياً، ويتم تخصيص صوت مستقل لكل منهم باللغة المستهدفة. يمكنك تعديل هذا التخصيص لكل متحدث، أو تمرير عدد المتحدثين num_speakers عند إنشاء المشروع إذا كنت تعرفه مسبقاً.
نعم. قم برفع ملف .srt لإنشاء نص ومنح معرفه عند إنشاء المشروع. يمكنك أيضاً السماح لواجهة برمجة التطبيقات بإنشاء النص ثم تعديل النص مقطعاً تلو الآخر.
يوفر كل مشروع مكتمل ملفات ترجمة نصية بصيغتي .srt و.vtt بجانب مسارات الفيديو والصوت، وتكون متزامنة تماماً مع الدوبلاج.
مكتبة تطوير (SDK) رسمية بلغة بايثون تدعم العمل غير المتزامن، ومنشورة على GitHub، بواجهة مستقرة ومتوافقة مع الإصدارات السابقة. للغات الأخرى، يمكنك إنشاء واجهة عميل باستخدام مواصفات OpenAPI المنشورة. توجد أيضاً عقدة n8n لإنشاء سير عمل بدون برمجة.
الجزء الذي تم تغييره فقط. يتم حساب مدة المقاطع المعدلة والمضافة وتقريبها إلى أقرب دقيقة، لذا فإن تصحيح بضعة أسطر لا يتكلف سوى دقيقة واحدة تقريباً.