API عمومی رؤیا
با REST API رؤیا میتوانی مستقیماً از کد خودت، تولید تصویر، ویدیو، صدا و کاراکترهای اختصاصی را صدا بزنی — دقیقاً همان موتوری که استودیوی رؤیا هم از آن استفاده میکند.
آدرس پایه: https://roya.soore.ai/api/v1
با REST API رؤیا میتوانی مستقیماً از کد خودت، تولید تصویر، ویدیو، صدا و کاراکترهای اختصاصی را صدا بزنی — دقیقاً همان موتوری که استودیوی رؤیا هم از آن استفاده میکند.
آدرس پایه: https://roya.soore.ai/api/v1
با REST API رؤیا میتوانی مستقیماً از کد خودت، تولید تصویر، ویدیو، صدا و کاراکترهای اختصاصی را صدا بزنی — دقیقاً همان موتوری که استودیوی رؤیا هم از آن استفاده میکند.
آدرس پایه: https://roya.soore.ai/api/v1
curl -X POST https://roya.soore.ai/api/v1/images \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "slug": "flux-pro", "prompt": "یک گربهی نارنجی روی مبل" }'هر درخواست باید هدر زیر را داشته باشد؛ کلید را از صفحهی کلیدهای API بساز:
Authorization: Bearer roya_sk_xxxxxxxxهر درخواست از اعتبار (کردیت) صاحب همان کلید کسر میشود — دقیقاً از همان مسیر پولشمار استودیو.
| کد | معنی |
|---|---|
| 200 / 202 | موفق — 200 برای نقاط همزمان (نتیجه در همان پاسخ)، 202 برای نقاط ناهمزمان (کار صف شد). |
| 401 | کلید نامعتبر یا باطلشده. |
| 402 | اعتبار ناکافی — همراه با needed و balance در بدنهی پاسخ. |
| 429 | عبور از سقف نرخ درخواست. |
سقف نرخ و نسخهبندی
X-RateLimit-Limit، X-RateLimit-Remaining و X-RateLimit-Reset را برمیگرداند. عبور سقف → 429؛ بر اساس X-RateLimit-Reset دوباره امتحان کن./api/v1 هستند — این پیشوند را در کدت pin کن؛ نسخهی فعلی پایدار میماند.رؤیا را بهعنوان یک ابزار به دستیار هوشمصنوعیت (Claude Code، Cursor، Claude Desktop) وصل کن. توکن اتصال را از صفحهی اتصالها بساز.
آدرس سرور: https://roya.soore.ai/api/mcp — transport: HTTP، احراز هویت: Authorization: Bearer <توکن>
claude mcp add --transport http roya https://roya.soore.ai/api/mcp \
--header "Authorization: Bearer roya_mcp_xxxxxxxx"{
"mcpServers": {
"roya": {
"url": "https://roya.soore.ai/api/mcp",
"headers": {
"Authorization": "Bearer roya_mcp_xxxxxxxx"
}
}
}
}{
"mcpServers": {
"roya": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://roya.soore.ai/api/mcp",
"--header",
"Authorization: Bearer roya_mcp_xxxxxxxx"
]
}
}
}/api/v1/imagesاز روی یک پرامپت متنی تصویر میسازد. همزمان (sync) اجرا میشود و در همان پاسخ، آدرس تصویرهای ساختهشده برمیگردد.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| model_id | string | شرطی | آیدی مدل — یکی از model_id یا slug الزامی است |
| slug | string | شرطی | اسلاگ مدل — یکی از model_id یا slug الزامی است |
| prompt | string | بله | متن توصیف تصویر |
| n | number | خیر | تعداد تصویر خروجی (پیشفرض ۱؛ سقف بسته به مدل) |
| aspect_ratio | string | خیر | نسبت تصویر (مثلاً "1:1"، "16:9")؛ باید در فهرست پشتیبانیشدهی مدل باشد |
| resolution_tier | string | خیر | سطح کیفیت/رزولوشن؛ باید در فهرست پشتیبانیشدهی مدل باشد |
| preset_id | string | خیر | آیدی یک پریست سبک؛ پیش از قیمتگذاری به پرامپت افزوده میشود |
| lora_ids | string[] | خیر | آیدی کاراکترهای LoRAی خودت (از /characters/train) برای تولید تصویر همان کاراکتر |
| image_urls | string[] | خیر | آدرس تصویرهای مرجع (http/https عمومی) برای مدلهای ادیتپذیر |
curl -X POST https://roya.soore.ai/api/v1/images \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "flux-pro",
"prompt": "یک گربهی نارنجی روی مبل، نور نرم عصرگاهی",
"n": 1,
"aspect_ratio": "1:1"
}'// 200
{
"id": "gen_...",
"urls": ["https://.../image/....png"],
"credits_charged": 12,
"credits_balance": 488
}همزمان (sync) است؛ نیازی به polling نیست.
/api/v1/edit-imageتصویر موجود را بر اساس یک دستور متنی ویرایش میکند (inpaint/edit). فقط برای مدلهایی که ورودی تصویر میخواهند.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| model_id | string | شرطی | یکی از model_id یا slug الزامی است |
| slug | string | شرطی | یکی از model_id یا slug الزامی است |
| prompt | string | بله | دستور ویرایش |
| image_url | string | بله | آدرس عمومی (http/https) تصویر مبدأ |
| mask_url | string | شرطی | آدرس ماسک؛ فقط برای مدلهایی که ماسک لازم دارند |
| reference_image_url | string | شرطی | آدرس تصویر مرجع اضافه؛ فقط برای مدلهایی که آن را لازم دارند |
| n | number | خیر | تعداد خروجی (پیشفرض ۱) |
| resolution | string | خیر | رزولوشن خروجی، اگر مدل بپذیرد |
curl -X POST https://roya.soore.ai/api/v1/edit-image \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "flux-fill",
"prompt": "پسزمینه را به یک ساحل آفتابی تغییر بده",
"image_url": "https://example.com/photo.jpg"
}'// 200
{
"id": "gen_...",
"urls": ["https://.../image/....png"],
"credits_charged": 14,
"credits_balance": 474
}همزمان (sync) است؛ نیازی به polling نیست.
/api/v1/videosاز روی متن (یا متن + تصویر فریم اول/آخر) ویدیو میسازد. ناهمزمان (async) است — پاسخ بلافاصله برمیگردد و باید با /api/v1/generations/{id} پیگیری شود.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| model_id | string | شرطی | یکی از model_id یا slug الزامی است |
| slug | string | شرطی | یکی از model_id یا slug الزامی است |
| prompt | string | بله | متن توصیف ویدیو |
| duration | number | خیر | مدت ویدیو به ثانیه؛ باید در فهرست پشتیبانیشدهی مدل باشد |
| resolution | string | خیر | رزولوشن (پیشفرض "720p" اگر مدل پشتیبانی کند) |
| aspect_ratio | string | خیر | نسبت تصویر (پیشفرض "16:9" اگر مدل پشتیبانی کند) |
| audio | boolean | خیر | درخواست صدا همراه ویدیو؛ فقط برای مدلهایی که این قابلیت را دارند |
| image_url | string | خیر | آدرس تصویر فریم اول برای حالت تصویربهویدیو |
| last_frame_url | string | شرطی | آدرس تصویر فریم آخر؛ فقط همراه با image_url معنا دارد |
| preset_id | string | خیر | آیدی یک پریست سبک؛ به پرامپت افزوده میشود |
curl -X POST https://roya.soore.ai/api/v1/videos \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "kling-2.6",
"prompt": "موج آرام دریا هنگام غروب",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9"
}'// 202
{
"id": "gen_...",
"status": "queued",
"credits_charged": 60,
"credits_balance": 428
}ناهمزمان (async) است — نتیجه را از /api/v1/generations/{id} بگیر.
/api/v1/edit-videoویدیوی موجود را بر اساس یک دستور متنی ویرایش/بازتولید یا تمدید میکند. ناهمزمان (async) است.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| model_id | string | شرطی | یکی از model_id یا slug الزامی است |
| slug | string | شرطی | یکی از model_id یا slug الزامی است |
| video_url | string | بله | آدرس عمومی ویدیوی مبدأ |
| prompt | string | شرطی | دستور ویرایش؛ برای بعضی مدلهای تمدید ویدیو اختیاری است |
| duration | number | خیر | فقط برای مدلهای «تمدید ویدیو»: تعداد ثانیهی اضافهشونده |
| mode | string | خیر | فقط برای مدلهای «تمدید ویدیو»: "start" یا "end" — کدام سر ویدیو تمدید شود |
| resolution | string | خیر | رزولوشن خروجی، اگر مدل بپذیرد |
| image_urls | string[] | خیر | آدرس تصویرهای مرجع اضافه؛ فقط در بعضی مدلها |
| keep_audio | boolean | خیر | نگهداشتن صدای اصلی ویدیو؛ فقط در بعضی مدلها |
curl -X POST https://roya.soore.ai/api/v1/edit-video \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "kling-video-edit",
"video_url": "https://example.com/clip.mp4",
"prompt": "رنگ صحنه را گرمتر و پاییزی کن"
}'// 202
{
"id": "gen_...",
"status": "queued",
"credits_charged": 45,
"credits_balance": 383
}ناهمزمان (async) است — نتیجه را از /api/v1/generations/{id} بگیر. مدت ویدیوی ورودی برای بیشتر مدلها سمت سرور اندازهگیری میشود، نه از روی ادعای کلاینت.
/api/v1/motionحرکت یک ویدیوی مرجع را به تصویر یک کاراکتر/سوژه منتقل میکند. ناهمزمان (async) است.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| model_id | string | شرطی | یکی از model_id یا slug |
| slug | string | شرطی | یکی از model_id یا slug |
| image_url | string | بله | آدرس تصویر کاراکتر/سوژهای که باید حرکت کند |
| video_url | string | بله | آدرس ویدیوی مرجع حرکت |
| prompt | string | خیر | توضیح اختیاری صحنه/حرکت |
| character_orientation | string | شرطی | "image" یا "video" — مرجع جهتگیری کاراکتر؛ برای بعضی مدلها الزامی است |
| resolution | string | خیر | رزولوشن خروجی؛ فقط در بعضی مدلها |
curl -X POST https://roya.soore.ai/api/v1/motion \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "kling-motion-control",
"image_url": "https://example.com/character.jpg",
"video_url": "https://example.com/reference-motion.mp4",
"character_orientation": "image"
}'// 202
{
"id": "gen_...",
"status": "queued",
"credits_charged": 70,
"credits_balance": 313
}ناهمزمان (async) است — نتیجه را از /api/v1/generations/{id} بگیر. مدت ویدیوی مرجع سمت سرور اندازهگیری میشود.
/api/v1/lipsyncویدیو یا تصویر یک چهره را با صدا یا متن هماهنگ میکند (حرکت لب منطبق بر گفتار). ناهمزمان (async) است.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| model_id | string | شرطی | یکی از model_id یا slug |
| slug | string | شرطی | یکی از model_id یا slug |
| video_url | string | شرطی | آدرس ویدیوی هدف (حالت ویدیو+صدا) |
| image_url | string | شرطی | آدرس تصویر چهره (حالت تصویر+صدا/آواتار) |
| audio_url | string | شرطی | آدرس فایل صوتی گفتار |
| text | string | شرطی | متنی که با TTS به گفتار تبدیل و لبسینک میشود (بهجای audio_url) |
| voice_id | string | خیر | آیدی صدا؛ فقط در حالت متنمحور |
| voice_language | string | خیر | زبان گفتار؛ فقط در حالت متنمحور |
| voice_speed | number | خیر | سرعت گفتار؛ فقط در حالت متنمحور |
| sync_mode | string | خیر | راهبرد هماهنگسازی، بسته به مدل |
| model | string | خیر | فقط برای واریانت sync-lipsync نسخه ۲ — یکی از lipsync-2 یا lipsync-2-pro |
| prompt | string | خیر | راهنمایی اضافه، بسته به مدل |
curl -X POST https://roya.soore.ai/api/v1/lipsync \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "omnihuman",
"image_url": "https://example.com/avatar.jpg",
"audio_url": "https://example.com/speech.mp3"
}'// 202
{
"id": "gen_...",
"status": "queued",
"credits_charged": 55,
"credits_balance": 258
}ناهمزمان (async) است — نتیجه را از /api/v1/generations/{id} بگیر. ترکیب دقیق فیلدهای لازم (ویدیو+صدا یا تصویر+صدا/متن) به مدل انتخابی بستگی دارد.
/api/v1/audioمتن را به فایل صوتی گفتار تبدیل میکند. ناهمزمان (async) است.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| model_id | string | شرطی | یکی از model_id یا slug |
| slug | string | شرطی | یکی از model_id یا slug |
| text | string | بله | متن گفتار (حداکثر ۶۰۰ کاراکتر) |
| voice | string | خیر | آیدی/نام صدا |
| format | string | خیر | فرمت خروجی، بسته به مدل |
| speed | number | خیر | سرعت گفتار |
| emotion | string | خیر | حس/سبک بیان |
| language | string | خیر | کد زبان |
curl -X POST https://roya.soore.ai/api/v1/audio \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "elevenlabs-tts",
"text": "سلام، به رؤیا خوش اومدی!",
"voice": "fa-warm-1"
}'// 202
{
"id": "gen_...",
"status": "queued",
"credits_charged": 8,
"credits_balance": 250
}ناهمزمان (async) است — نتیجه را از /api/v1/generations/{id} بگیر.
/api/v1/musicبسته به مدل انتخابی، موسیقی یا افکت صوتی میسازد. ناهمزمان (async) است.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| model_id | string | شرطی | یکی از model_id یا slug |
| slug | string | شرطی | یکی از model_id یا slug |
| prompt | string | شرطی | توضیح موسیقی/افکت (معادل text) |
| text | string | شرطی | معادل prompt — یکی از این دو الزامی است |
| lyrics | string | خیر | متن ترانه؛ فقط در حالت موسیقی |
| is_instrumental | boolean | خیر | بدون آواز (بیکلام)؛ فقط در حالت موسیقی |
| lyrics_optimizer | boolean | خیر | بهبود خودکار متن ترانه؛ فقط در حالت موسیقی |
| audio_setting | object | خیر | تنظیمات کدک خروجی: { sample_rate?, format?, bitrate? }؛ فقط در حالت موسیقی |
| negative_prompt | string | خیر | آنچه باید نادیده گرفته شود؛ فقط در حالت موسیقی |
| seed | number | خیر | بذر تصادفی برای تکرارپذیری |
| duration_seconds | number | خیر | مدت افکت صوتی؛ فقط در حالت افکت (SFX) |
| prompt_influence | number | خیر | میزان پیروی افکت از پرامپت؛ فقط در حالت SFX |
| output_format | string | خیر | فرمت خروجی؛ فقط در حالت SFX |
| loop | boolean | خیر | حلقهایبودن افکت؛ فقط در حالت SFX |
curl -X POST https://roya.soore.ai/api/v1/music \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "minimax-music",
"prompt": "یک آهنگ پاپ شاد با ریتم تند",
"is_instrumental": false
}'// 202
{
"id": "gen_...",
"status": "queued",
"credits_charged": 30,
"credits_balance": 220
}حالت موسیقی/افکت خودکار از روی مدل انتخابی تشخیص داده میشود — فیلدی برای انتخاب حالت وجود ندارد. ناهمزمان است — نتیجه را از /api/v1/generations/{id} بگیر.
/api/v1/transcribeفایل صوتی را به متن تبدیل میکند. ناهمزمان (async) است؛ با pollکردن generation، فیلد output_urls[0] یک آدرس فایل متنی (.txt) است — آن را fetch کن تا متن رونویسی را بگیری (نه متن inline).
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| model_id | string | شرطی | یکی از model_id یا slug |
| slug | string | شرطی | یکی از model_id یا slug |
| audio_url | string | بله | آدرس عمومی فایل صوتی (حداکثر ۶۰۰ ثانیه) |
| language | string | خیر | زبان گفتار (کمک به دقت رونویسی) |
curl -X POST https://roya.soore.ai/api/v1/transcribe \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "whisper-large",
"audio_url": "https://example.com/voice-note.mp3",
"language": "fa"
}'// 202
{
"id": "gen_...",
"status": "queued",
"credits_charged": 5,
"credits_balance": 215
}پاسخ این درخواست فقط تأیید صفشدن کار است؛ متن نهایی را از /api/v1/generations/{id} (فیلد output_urls) بگیر.
/api/v1/voiceصدای یک فایل را تغییر میدهد یا با صدای مرجع دیگری جایگزین میکند. ناهمزمان (async) است.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| model_id | string | شرطی | یکی از model_id یا slug |
| slug | string | شرطی | یکی از model_id یا slug |
| audio_url | string | شرطی | آدرس عمومی فایل صوتی ورودی |
| source_audio_url | string | شرطی | آدرس صدای مبدأ؛ در حالت تبدیل صدا |
| target_voice_audio_url | string | شرطی | آدرس صدای هدف (مرجع)؛ در حالت کلون صدا |
| voice | string | خیر | آیدی یک صدای آماده |
| text | string | خیر | متن؛ در جریانهای کلونصدا+گفتار |
| model | string | خیر | انتخابگر داخلی مدل ارائهدهنده (جدا از model_id) |
| noise_reduction | boolean | خیر | کاهش نویز |
| need_volume_normalization | boolean | خیر | نرمالسازی بلندی صدا |
| accuracy | number | خیر | میزان دقت/شدت تبدیل |
| remove_background_noise | boolean | خیر | حذف نویز پسزمینه |
| seed | number | خیر | بذر تصادفی |
| output_format | string | خیر | فرمت خروجی |
curl -X POST https://roya.soore.ai/api/v1/voice \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "voice-clone",
"source_audio_url": "https://example.com/my-voice.mp3",
"target_voice_audio_url": "https://example.com/target-voice.mp3"
}'// 202
{
"id": "gen_...",
"status": "queued",
"credits_charged": 20,
"credits_balance": 195
}کدامیک از فیلدهای *_url الزامی است به مدل انتخابی (تبدیل صدا یا کلون صدا) بستگی دارد. ناهمزمان است — نتیجه را از /api/v1/generations/{id} بگیر.
/api/v1/appsاپهای آماده (مثل حذف پسزمینه، پاککن، تعویض چهره، آپاسکیل، ریلایت) را اجرا میکند. ناهمزمان (async) است.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| model_id | string | شرطی | یکی از model_id یا slug |
| slug | string | شرطی | یکی از model_id یا slug |
| params | object | خیر | پارامترهای اختصاصی همان اپ (مثلاً image_url)؛ پیشفرض شیء خالی. فیلدهای رسانه باید آدرس عمومی http(s) باشند، نه data URL |
curl -X POST https://roya.soore.ai/api/v1/apps \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"slug": "bg-remove",
"params": { "image_url": "https://example.com/photo.jpg" }
}'// 202
{
"id": "gen_...",
"status": "queued",
"credits_charged": 6,
"credits_balance": 189
}شکل دقیق params به schema همان اپ بستگی دارد — از /api/v1/models برای دیدن فهرست اپهای فعال کمک بگیر. ناهمزمان است — نتیجه را از /api/v1/generations/{id} بگیر.
/api/v1/characters/trainاز روی چند عکس مرجع، یک کاراکتر اختصاصی (LoRA) آموزش میدهد که بعداً در /api/v1/images با lora_ids قابل استفاده است.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| images_zip_url | string | بله | آدرس عمومی یک فایل zip از عکسهای مرجع کاراکتر |
| model_id | string | شرطی | یکی از model_id یا slug |
| slug | string | شرطی | یکی از model_id یا slug |
| trigger_word | string | خیر | کلمهی محرک کاراکتر؛ همچنین بهعنوان نام پیشفرض کاراکتر استفاده میشود |
curl -X POST https://roya.soore.ai/api/v1/characters/train \
-H "Authorization: Bearer roya_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"images_zip_url": "https://example.com/my-face-photos.zip",
"slug": "lora-train",
"trigger_word": "sajad_style"
}'// 202
{
"id": "gen_...",
"status": "queued",
"credits_charged": 150,
"credits_balance": 39
}ناهمزمان و پرهزینه است. وضعیت آموزش را از /api/v1/characters/{id} بگیر و پس از آمادهشدن، همان id را به /api/v1/characters/{id} با متد POST بده تا نهایی شود.
/api/v1/characters/{id}وضعیت یک کار آموزش کاراکتر را برمیگرداند — id همان id ایست که از /api/v1/characters/train گرفتهای.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| id | string (uuid) | بله | آیدی کار آموزش (از پاسخ /characters/train) |
curl https://roya.soore.ai/api/v1/characters/gen_xxxxxxxx \
-H "Authorization: Bearer roya_sk_xxxxxxxx"// 200
{
"id": "gen_...",
"status": "done",
"error": null,
"finalizable": true
}وقتی finalizable=true شد، همین id را به همین مسیر با POST بفرست تا کاراکتر نهایی و قابلاستفاده شود.
/api/v1/characters/{id}پس از تمامشدن آموزش (status=done)، کاراکتر را نهایی میکند و یک character_id قابلاستفاده در lora_ids برمیگرداند. idempotent است.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| id | string (uuid) | بله | همان id کار آموزش؛ بدنهای لازم نیست |
curl -X POST https://roya.soore.ai/api/v1/characters/gen_xxxxxxxx \
-H "Authorization: Bearer roya_sk_xxxxxxxx"// 200 یا 201
{
"character_id": "lora_...",
"character": {
"id": "lora_...",
"name": "sajad_style",
"status": "ready",
"created_at": "2026-07-08T12:00:00.000Z"
}
}اگر پیشتر همین کار آموزش نهایی شده باشد، بدون ساخت رکورد تازه همان کاراکتر قبلی را برمیگرداند (idempotent).
/api/v1/modelsفهرست مدلهای فعال و قیمت پایهشان را برمیگرداند — برای پیداکردن slug/model_id مناسب پیش از فراخوانی سایر نقاط.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| section | string | خیر | فیلتر بخش (مثلاً "image"، "video"، "tts"، "music"…)؛ اگر خالی باشد همهی بخشها برمیگردد |
curl "https://roya.soore.ai/api/v1/models?section=image" \
-H "Authorization: Bearer roya_sk_xxxxxxxx"// 200
{
"count": 12,
"models": [
{
"id": "mdl_...",
"slug": "flux-pro",
"section": "image",
"provider": "fal",
"name_fa": "فلاکس پرو",
"name_en": "Flux Pro",
"price_credits": 12
}
]
}/api/v1/presetsپریستهای آمادهی سبک برای تصویر یا ویدیو را برمیگرداند؛ id هرکدام قابلاستفاده در preset_id است.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| section | string | خیر | "video" برای پریستهای ویدیو؛ هر مقدار دیگر یا خالی → پریستهای تصویر |
curl "https://roya.soore.ai/api/v1/presets?section=video" \
-H "Authorization: Bearer roya_sk_xxxxxxxx"// 200
{
"section": "video",
"count": 8,
"presets": [
{ "id": "cinematic", "name": "سینمایی", "category": "style", "desc": "…" }
]
}/api/v1/generations/{id}برای پیگیری نقاط ناهمزمان (ویدیو، صدا، لبسینک، اپها، آموزش کاراکتر…) — وضعیت و در پایان، آدرس خروجی را برمیگرداند.
| فیلد | نوع | الزامی؟ | توضیح |
|---|---|---|---|
| id | string (uuid) | بله | آیدی generation که در پاسخ نقطهی اصلی گرفتهای |
curl https://roya.soore.ai/api/v1/generations/gen_xxxxxxxx \
-H "Authorization: Bearer roya_sk_xxxxxxxx"// 200
{
"id": "gen_...",
"section": "video",
"status": "done",
"output_urls": ["https://.../video/....mp4"],
"error": null,
"credits_charged": 60
}status معمولاً یکی از queued / running / done / error است. تا status=done صبر کن، بعد از output_urls بخوان.