تولید و دریافت ویدیو
ثبت کار ویدیویی، بررسی وضعیت همان کار و دریافت نتیجه.
ویدیو یک کار پسزمینه است
POST /v1/studio/video پس از پذیرش کار HTTP 202 میدهد. id مربوط به درخواست ساروی و providerJobId مربوط به کار ارائهدهنده را نگه دارید. پاسخ پذیرفتهشدن، فایل ویدیوی آماده نیست.
import json, os, urllib.request, urllib.error
payload = {
"model": "bytedance/seedance-2.5",
"prompt": "نمای نزدیک گلهای بهاری، حرکت آرام دوربین و نور صبح",
"duration": 4,
"resolution": "480p",
"aspectRatio": "16:9",
"generateAudio": False
}
request = urllib.request.Request(
"https://api.sarovi.ir/v1/studio/video",
data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
headers={
"Authorization": "Bearer " + os.environ["SAROVI_API_KEY"],
"Content-Type": "application/json"
},
method="POST"
)
try:
with urllib.request.urlopen(request, timeout=300) as response:
result = json.load(response)
print(result)
except urllib.error.HTTPError as error:
detail = json.load(error)
raise RuntimeError(f"{error.code}: {detail['error'].get('code', detail['error'].get('type', 'HTTP_ERROR'))}") from errorکلید را در متغیر محیطی SAROVI_API_KEY قرار بده. بدون نصب کتابخانه؛ با Python استاندارد.
بررسی وضعیت
به POST /v1/studio/video/status بدنهٔ شامل id و providerJobId بدهید. تنها همان پروژه میتواند کار ثبتشدهٔ خود را پیگیری کند. برای polling فاصلهٔ چندثانیهای بگذارید و با طولانی شدن کار فاصله را بیشتر کنید. برای بررسی وضعیت، درخواست تولید دوباره نفرستید.
import json, os, urllib.request, urllib.error
payload = {
"id": "SAROVI_JOB_ID",
"providerJobId": "PROVIDER_JOB_ID"
}
request = urllib.request.Request(
"https://api.sarovi.ir/v1/studio/video/status",
data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
headers={
"Authorization": "Bearer " + os.environ["SAROVI_API_KEY"],
"Content-Type": "application/json"
},
method="POST"
)
try:
with urllib.request.urlopen(request, timeout=300) as response:
result = json.load(response)
print(result)
except urllib.error.HTTPError as error:
detail = json.load(error)
raise RuntimeError(f"{error.code}: {detail['error'].get('code', detail['error'].get('type', 'HTTP_ERROR'))}") from errorکلید را در متغیر محیطی SAROVI_API_KEY قرار بده. بدون نصب کتابخانه؛ با Python استاندارد.
دریافت ویدیو
بعد از completed، همین بدنه را به POST /v1/studio/video/content بفرستید. خروجی باینری رسانه است؛ آن را با روش دریافت فایل ذخیره کنید. Content-Type پاسخ را برای تشخیص نوع فایل بخوانید. در وضعیت failed پیام خطا را بررسی کنید و درخواست تولید تازه را فقط در صورت تصمیم آگاهانه بسازید.
مدت، وضوح و مرجع
قرارداد عمومی مدت ۱ تا ۳۰ ثانیه و وضوح 480p/720p/1080p دارد، ولی هر مدل ترکیب مجاز خودش را دارد. referenceMode برای guide یا frames و references برای تصاویر مرجع استفاده میشود. تنظیم نامعتبر پیش از رزرو و ساخت بررسی میشود.
قیمت
رزرو ویدیو از مدل، مدت، وضوح و تنظیمات محاسبه میشود. هزینهٔ نهایی میتواند پس از بررسی وضعیت تسویه شود. برای Seedance 2.5 همان سیاست قیمتگذاری فعلی Studio اعمال میشود. اعتبار و پرداخت تفاوت رزرو و تسویه را توضیح میدهد.
قرارداد API 1.6.0 · تاریخچهٔ تغییرات