نِت اَرز · مستندات API هوش مصنوعی
همهٔ مستندات
مدل‌ها و قیمت‌ها مرجع تعاملی دریافت کلید

تولید تصویر

ساخت و ویرایش تصویر با GPT Image و Nano Banana گوگل از API هوش مصنوعی نِت اَرز؛ اندازه، نسبت قاب، وضوح 1K تا 4K، تصویر مرجع، قیمت‌گذاری توکنی و نمونه‌کد.

base_url: https://netarz.ir/api/ai/v1 به‌روزرسانی: 1405/07/16
POST /api/ai/v1/images/generations نیازمند کلید API

تولید تصویر از متن، از همان endpoint سازگار با OpenAI و با همان کلید. پشت این endpoint GPT Image شرکت OpenAI، Nano Banana گوگل (مدل‌های تصویری Gemini) و ده‌ها مدل تصویری دیگر از راه OpenRouter هستند. پرامپت فارسی را مستقیم بفرستید؛ GPT Image و Nano Banana متن فارسی را خوب می‌فهمند و برای بقیه، پرامپت انگلیسی نتیجهٔ مطمئن‌تری دارد. ولی برای نوشتهٔ فارسی داخل خود تصویر قولی نمی‌دهیم؛ اگر تیتر فارسی لازم دارید، آن را بعداً با ابزار طراحی روی تصویر بگذارید. فهرست کامل و قیمت هر مدل در صفحهٔ مدل‌ها.

کدام مدل‌های تصویر دیگر روی درگاه نیستند

شناسه‌های dall-e-2، dall-e-3، imagen-4 (Google) و grok-2-image (xAI) دیگر ارائه نمی‌شوند و درخواست به آن‌ها خطای ۴۰۴ با کد model_discontinued می‌گیرد. مدل‌های تصویری گوگل روی درگاه همان Nano Banana هستند، نه Imagen.

GPT Image (OpenAI)

Python
import base64

img = client.images.generate(
    model="gpt-image-1",
    prompt="لوگوی مینیمال یک کافه با رنگ طلایی روی پس‌زمینهٔ ساده",
    size="1024x1024",
    quality="medium",          # low | medium | high
    n=1,
)
open("logo.png", "wb").write(base64.b64decode(img.data[0].b64_json))
Node.js
const img = await client.images.generate({
  model: "gpt-image-1",
  prompt: "لوگوی مینیمال یک کافه با رنگ طلایی روی پس‌زمینهٔ ساده",
  size: "1024x1024",
  quality: "medium",
});
// مدل‌های GPT Image همیشه base64 برمی‌گردانند
require("fs").writeFileSync("logo.png", Buffer.from(img.data[0].b64_json, "base64"));
cURL
curl https://netarz.ir/api/ai/v1/images/generations \
  -H "Authorization: Bearer $NETARZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2.5-flare",
    "prompt": "لوگوی مینیمال یک کافه با رنگ طلایی روی پس‌زمینهٔ ساده",
    "size": "1536x1024",
    "quality": "high"
  }'
پاسخ
{
  "created": 1756540800,
  "data": [
    { "b64_json": "iVBORw0KGgoAAAANSUhEUgAA…" }
  ],
  "usage": {
    "input_tokens": 24,
    "output_tokens": 4160,
    "total_tokens": 4184
  }
}

پارامترها

پارامترتوضیح
model الزامییکی از مدل‌های خانوادهٔ تصویر؛ فهرست. اندازه‌ها و کیفیت‌های مجاز هر مدل در capabilities.sizes و capabilities.quality آمده است.
prompt الزامیتوصیف تصویر.
nتعداد تصویر (۱ تا ۱۰). هر تصویر جداگانه هزینه دارد.
size1024x1024 (مربع)، 1024x1536 (عمودی) یا 1536x1024 (افقی). پیش‌فرض 1024x1024.
qualitylow | medium | high. مدل‌های GPT Image 2.5 دو پلهٔ بالاتر هم دارند: xhigh و max.
response_formatمدل‌های GPT Image همیشه b64_json برمی‌گردانند؛ روی url هم لینک نمی‌گیرید.
style، background، output_formatپارامترهای اختصاصی مدل؛ عبور مستقیم.

Nano Banana (Gemini)

مدل‌های تصویری گوگل را با همان کد و همان کلید صدا می‌زنید؛ لازم نیست کتابخانه یا کلید جداگانه‌ای از گوگل داشته باشید. درگاه درخواست را از قالب OpenAI به قالب گوگل ترجمه می‌کند و پاسخ را دوباره در قالب OpenAI به شما می‌دهد.

شناسهٔ مدلناموضوح
gemini-3-pro-imageNano Banana Pro1K، 2K، 4K
gemini-3.1-flash-imageNano Banana 21K، 2K، 4K
gemini-3.1-flash-lite-imageNano Banana 2 Liteفقط 1K
Python
import base64

img = client.images.generate(
    model="gemini-3.1-flash-image",
    prompt="عکس محصول: یک فنجان قهوه روی میز چوبی، نور گرم صبح، پس‌زمینهٔ محو",
    size="1536x1024",          # نزدیک‌ترین نسبت قاب: 3:2
    quality="2K",              # 1K | 2K | 4K
)
open("coffee.jpg", "wb").write(base64.b64decode(img.data[0].b64_json))
Node.js
const img = await client.images.generate({
  model: "gemini-3-pro-image",
  prompt: "نمای باز از یک کتابخانهٔ قدیمی با نور پنجره، سبک نقاشی آبرنگ",
  aspect_ratio: "16:9",   // به‌جای size هم پذیرفته می‌شود
  quality: "4K",
});
// خروجی Nano Banana تصویر JPEG است
require("fs").writeFileSync("library.jpg", Buffer.from(img.data[0].b64_json, "base64"));
cURL
curl https://netarz.ir/api/ai/v1/images/generations \
  -H "Authorization: Bearer $NETARZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-lite-image",
    "prompt": "تصویر عمودی یک گلدان سبز کنار پنجره، سبک مینیمال",
    "size": "1024x1792",
    "n": 2
  }'
پاسخ
{
  "created": 1790899200,
  "data": [
    { "b64_json": "/9j/4AAQSkZJRgABAQAAAQ…", "output_format": "jpeg" }
  ],
  "usage": {
    "input_tokens": 21,
    "output_tokens": 1680,
    "total_tokens": 1701
  }
}

خروجی این مدل‌ها تصویر JPEG است: فایل را در data[].b64_json می‌گیرید و output_format برابر jpeg است. فایل را با پسوند .jpg ذخیره کنید.

پارامترها

پارامترتوضیح
model الزامییکی از سه شناسهٔ جدول بالا.
prompt الزامیتوصیف تصویر، یا دستور ویرایش وقتی تصویر مرجع می‌فرستید.
nتعداد تصویر، ۱ تا ۴. هر تصویر یک درخواست جدا به گوگل است و توکن‌های خودش را دارد.
sizeاندازه به سبک OpenAI، مثل 1536x1024. این مدل‌ها پیکسل دقیق نمی‌گیرند؛ درگاه نزدیک‌ترین نسبت قاب (aspect ratio) را انتخاب می‌کند: 1:1، 2:3، 3:2، 3:4، 4:3، 4:5، 5:4، 9:16، 16:9 یا 21:9.
aspect_ratioاگر نسبت قاب را خودتان بفرستید (یکی از مقدارهای بالا)، به size ترجیح داده می‌شود.
qualityوضوح تصویر: 1K | 2K | 4K. مدل Lite فقط 1K دارد. نام گوگلی همین فیلد، image_size، هم پذیرفته می‌شود.
imageتصویر مرجع برای ویرایش یا ترکیب: یک رشته یا آرایه‌ای تا ۴ تصویر، به شکل data URL (data:image/png;base64,…) یا base64 خام. لینک اینترنتی خوانده نمی‌شود؛ فایل را خودتان به base64 تبدیل کنید.

size فقط قاب را تعیین می‌کند، نه وضوح را. اگر quality (یا image_size) را نفرستید، تصویر 1K ساخته می‌شود؛ پس کدی که از OpenAI منتقل می‌کنید با "size": "1536x1024" همان تصویر 1K ارزان‌تر را می‌گیرد. برای 2K یا 4K، "quality": "2K" یا "4K" را صریح بفرستید. ("quality": "high" به سبک OpenAI هم 2K حساب می‌شود.)

ویرایش با تصویر مرجع

عکس خودتان را در فیلد image بفرستید و در prompt بنویسید چه تغییری می‌خواهید. با چند تصویر مرجع می‌توانید اجزای چند عکس را در یک تصویر کنار هم بگذارید. در SDK پایتون، این فیلد را با extra_body می‌فرستید:

Python
import base64

photo = base64.b64encode(open("product.png", "rb").read()).decode()

img = client.images.generate(
    model="gemini-3.1-flash-image",
    prompt="پس‌زمینهٔ این عکس را سفید و ساده کنید و سایهٔ نرمی زیر محصول بگذارید",
    quality="2K",
    # تا ۴ تصویر مرجع؛ data URL یا base64 خام — لینک اینترنتی خوانده نمی‌شود
    extra_body={"image": [f"data:image/png;base64,{photo}"]},
)
open("product-white.jpg", "wb").write(base64.b64decode(img.data[0].b64_json))

تصویرهای مرجع جزو بدنهٔ درخواست‌اند و با آن از سقف اندازهٔ درخواست حساب می‌شوند؛ سقف را در محدودیت‌ها و امنیت ببینید.

وقتی گوگل تصویر را نمی‌سازد

اگر فیلتر محتوایی گوگل درخواستی را رد کند، پاسخ خطای ۴۰۰ با کد upstream_rejected است و هزینه‌ای از اعتبارتان کم نمی‌شود. توصیف را تغییر دهید و دوباره بفرستید؛ بیشتر وقت‌ها نام یک شخص واقعی یا یک اثر مشخص در توصیف، علت رد شدن است.

مدل‌های تصویر از راه OpenRouter

ده‌ها مدل تصویری دیگر هم با شناسهٔ openrouter/… از همین endpoint کار می‌کنند؛ مثل FLUX، Recraft (با خروجی برداری SVG)، Seedream، Qwen Image، Grok Imagine و Riverflow. کد همان کد بالاست؛ فقط model عوض می‌شود. هر مدل اندازه‌ها و نسبت‌های خودش را دارد و اندازه‌ای را که نسازد با خطای ۴۰۰ رد می‌کند، بدون هزینه.

پارامترروی این مدل‌ها
sizeپیکسل دقیق (2048x2048) یا یک پله (1K، 2K، 4K).
resolution، aspect_ratioجایگزین size: پله و نسبت جدا، مثل "2K" و "16:9".
qualitylow | medium | high؛ مدلی که کیفیت جدا ندارد آن را نادیده می‌گیرد.
input_referencesتصویرهای مرجع برای ویرایش یا هم‌سبک‌سازی، به‌صورت آرایهٔ {"type":"image_url","image_url":{"url":"data:image/png;base64,…"}}.
output_format، background، seedاگر مدل پشتیبانی کند اعمال می‌شود.

پاسخ همیشه b64_json است و کنار هر تصویر media_type می‌آید.

قیمت‌گذاری

مدل‌های تصویری دو جور حساب می‌شوند: توکنی (GPT Image، Nano Banana و چند مدل دیگر) و به‌ازای هر تصویر (بیشتر مدل‌های OpenRouter، با کلید per_image). در هر دو حالت، هزینهٔ واقعی همان درخواست مبنای صورت‌حساب است.

  • GPT Image: هرچه اندازه و کیفیت بالاتر، توکن خروجی بیشتر؛ پس quality را به اندازهٔ کاری که دارید بگذارید.
  • Nano Banana: توکن‌های تصویر خروجی را گوگل گزارش می‌کند و با وضوح بالا می‌رود. تعداد تقریبی توکن خروجی هر تصویر در هر وضوح، در capabilities.image_tokens همان مدل آمده است (GET /models).
  • مدل‌های به‌ازای هر تصویر: per_image قیمت پایه‌ترین اندازهٔ مدل است و اندازهٔ بزرگ‌تر گران‌تر حساب می‌شود.
  • پیش از درخواست، مبلغی بر اساس n و گران‌ترین اندازهٔ همان مدل رزرو می‌شود (نسبتش در capabilities.flat_image_multiplier)؛ بعد از پاسخ با هزینهٔ واقعی تسویه و باقی همان لحظه آزاد می‌شود. پس اعتبارتان باید دست‌کم به اندازهٔ همین رزرو باشد.
  • اگر ارائه‌دهنده usage گزارش نکند، برای هر تصویر حدود ۴٬۲۰۰ توکن خروجی فرض می‌شود.

نرخ توکن هر مدل به تومان و دلار در صفحهٔ مدل‌ها آمده است.

نکات

  • خروجی را همان‌جا از base64 به فایل تبدیل و در فضای خودتان ذخیره کنید؛ درگاه تصویر را نگه نمی‌دارد.
  • endpointهای جداگانهٔ /images/edits و /images/variations پشتیبانی نمی‌شوند. برای ویرایش یک عکس، آن را با فیلد image به یکی از مدل‌های Nano Banana بفرستید، یا با input_references به یکی از مدل‌های OpenRouter که تصویر ورودی می‌پذیرد.
  • برای ورودی تصویر (خواندن یک عکس به‌جای ساختن آن) سراغ Chat Completions و مدل‌های دارای قابلیت vision بروید.