رفتن به محتوا
سارویتوسعه‌دهندگان
مستندات/تصویر، ویدیو و صدا

تولید و ویرایش تصویر

ساخت تصویر، تنظیم اندازه و فرمت، و استفاده از تصویر مرجع.

ساخت و ویرایش تصویر

POST /v1/studio/image با مجوز studio:write تصویر می‌سازد. prompt اجباری است؛ model، quality، outputFormat و references اختیاری‌اند. برای ویرایش، تصویر PNG/JPEG/WebP را به‌صورت dataUrl در references بفرستید.

اندازهٔ خودکار

aspectRatio: "auto" جهت و ابعاد را از متن فارسی یا انگلیسی دنبال می‌کند. اگر متن اندازه نداشته باشد، نسبت تصویر مرجع حفظ می‌شود. درخواست‌های قدیمی بدون فیلد اندازه همچنان 1:1 هستند. اندازهٔ دستی بر جهت متن اولویت دارد.

Python
import json, os, urllib.request, urllib.error

payload = {
    "model": "google/gemini-2.5-flash-image",
    "prompt": "یک پوستر عمودی مینیمال از یک گل سفید",
    "aspectRatio": "auto"
}

request = urllib.request.Request(
    "https://api.sarovi.ir/v1/studio/image",
    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 استاندارد.

اندازهٔ فایل نهایی

برای خروجی دقیق، size: "1200x630" و fit: "pad" بفرستید. این اندازهٔ فایل نهایی است و لزوماً اندازهٔ بومی مدل نیست. pad تصویر کامل را بدون کشیدگی با حاشیه حفظ می‌کند؛ crop لبه‌ها را می‌بُرد تا قاب پر شود. پیش‌فرض pad است. نسبت‌های دلخواه مانند aspectRatio: "7:4" نیز پذیرفته می‌شوند؛ مدل نزدیک‌ترین قاب پشتیبانی‌شده را می‌سازد و خروجی به نسبت درخواستی تنظیم می‌شود.

هر ضلع بین 64 و 4096 پیکسل، کل فایل حداکثر 4 مگاپیکسل و نسبت بین 1:8 و 8:1 است. ابعاد نامعتبر یا متناقض با نسبت صریح، پیش از اجرا و مصرف اعتبار رد می‌شوند. خروجی width، height و sizing را شامل ابعاد اصلی و روش تنظیم برمی‌گرداند.

سازگاری Responses

POST /v1/responses با یک مدل تصویر و مجوز studio:write نیز کار می‌کند. داخل tools یک image_generation بفرستید؛ گزینه‌های size، aspect_ratio و fit همان رفتار را دارند. size: "auto" واقعاً از متن یا مرجع پیروی می‌کند. کیفیت، output_format، background و action بر اساس مدل کنترل می‌شوند. برای ویرایش از input_image با data URL استفاده کنید.

Python
import json, os, urllib.request, urllib.error

payload = {
    "model": "google/gemini-2.5-flash-image",
    "input": "یک بنر مینیمال از یک گل سفید",
    "tools": [
        {
            "type": "image_generation",
            "size": "1200x630",
            "fit": "pad"
        }
    ],
    "store": False
}

request = urllib.request.Request(
    "https://api.sarovi.ir/v1/studio/image",
    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 استاندارد.

پاسخ image_generation_call با تصویر base64 است. stream:true رویدادهای SSE را پس از آماده‌شدن خروجی می‌دهد؛ تصویر جزئی، تصویر از URL خارجی، previous_response_id و ابزار تصویر زیر مدل چت پشتیبانی نمی‌شوند. هزینه یک بار در همان موتور Studio تسویه می‌شود. نتیجهٔ فایل ذخیره‌شده از /v1/files/{id} قابل دریافت است. کلید Idempotency-Key را برای تکرار همان درخواست حفظ کنید.

قرارداد API 1.6.0 · تاریخچهٔ تغییرات