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

محدودیت‌ها و امنیت

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

base_url: https://netarz.ir/api/ai/v1 به‌روزرسانی: 1405/07/09

محدودیت‌های نرخ

محدودیتمقدار پیش‌فرضخطاتوضیح
درخواست در دقیقه (RPM)۶۰ برای هر کلیدrate_limit_exceeded (۴۲۹)مقدار مؤثر: تنظیم اختصاصی کلید ← حساب ← پیش‌فرض. با GET /me ببینید.
درخواست همزمان۸ برای هر حسابconcurrency_limit (۴۲۹)درخواست‌های در حال پردازش (استریم تا پایان پاسخ شمرده می‌شود).
درخواست از یک IP (پیش از احراز هویت)۶۰۰ در دقیقهrate_limit_exceeded (۴۲۹)محافظت در برابر حدس کلید و سوءاستفاده.
کلید اشتباه۲۰ در ۱۰ دقیقه از یک IPtoo_many_failed_attempts (۴۲۹)پس از آن، همان IP چند دقیقه مسدود می‌شود.
مدل‌های رایگان۳۰ درخواست موفق در روزfree_quota_exceeded (۴۲۹)برای هر حساب، به وقت تهران. فعلاً مدل رایگانی ارائه نمی‌شود، پس این سقف عملاً به کسی نمی‌خورد.

پاسخ‌های ۴۲۹ هدر Retry-After (ثانیه) دارند:

پاسخ ۴۲۹
HTTP/1.1 429 Too Many Requests
Retry-After: 5
Content-Type: application/json

{"error":{"message":"محدودیت 60 درخواست در دقیقه برای این کلید. کمی صبر کنید.","type":"rate_limit_error","code":"rate_limit_exceeded"}}

همهٔ این مقادیر با یک تیکت و بر اساس نیاز واقعی قابل افزایش‌اند؛ RPM و همزمانی را می‌توان برای هر کلید/حساب جداگانه تنظیم کرد.

محدودیت‌های اندازه

موردحداکثرخطا
بدنهٔ درخواست (JSON)۲۰ مگابایت (۲۰,۴۸۰ کیلوبایت)request_too_large (۴۱۳)
فایل صوتی۲۵ مگابایتrequest_too_large (۴۱۳)
متن ورودی متن‌به‌گفتار۴٬۰۹۶ کاراکتر (Gemini TTS: ۳٬۰۰۰)input_too_long (۴۰۰)
تعداد پیام‌ها در Chat Completions۵۰۰too_many_messages (۴۰۰)
n در Chat Completions / تصاویر۴ / ۱۰ (Nano Banana: ۴)مقادیر بزرگ‌تر به سقف محدود می‌شوند
زمان انتظار پاسخ ارائه‌دهنده۹۰ ثانیهupstream_unreachable (۵۰۲)

برای درخواست‌های غیراستریم، در صورت خطای اتصال یا پاسخ‌های ۵۰۲/۵۰۳/۵۲۹ ارائه‌دهنده، نِت اَرز به‌طور خودکار ۱ بار تلاش مجدد می‌کند. تلاش‌های ناموفق هزینه‌ای ندارند.

مدیریت تلاش مجدد در کلاینت

Python — backoff
import time, random
from openai import OpenAI, RateLimitError, APIStatusError

client = OpenAI(base_url="https://netarz.ir/api/ai/v1", api_key="sk-ntz-v1-...", max_retries=0)

def ask(messages, attempts=5):
    for i in range(attempts):
        try:
            return client.chat.completions.create(model="gpt-4o-mini", messages=messages, max_tokens=300)
        except RateLimitError as e:                       # 429: RPM، همزمانی، سقف رایگان، ظرفیت ارائه‌دهنده
            wait = float(e.response.headers.get("Retry-After", 2 ** i)) + random.random()
            time.sleep(wait)
        except APIStatusError as e:
            if e.status_code == 402:                      # اعتبار — تلاش مجدد بی‌فایده است
                raise
            if e.status_code >= 500:                      # خطای ارائه‌دهنده — رایگان بود، دوباره تلاش کنید
                time.sleep(2 ** i)
                continue
            raise
    raise RuntimeError("giving up")

امنیت کلیدها

فهرست IP مجاز

برای هر کلید می‌توانید فهرستی از IPها تعریف کنید؛ درخواست از IP دیگر با ip_not_allowed (۴۰۳) رد می‌شود. هر خط یکی از این شکل‌ها:

IPهای مجاز
185.12.34.56          # یک IP دقیق
185.12.34.            # پیشوند: هر IP که با این شروع شود
185.12.0.0/16         # CIDR (IPv4)

مدل‌های مجاز

هم در سطح پروژه و هم در سطح کلید می‌توانید مدل‌های مجاز را محدود کنید (فهرست خالی = همه). یک کلید فقط به مدل‌هایی دسترسی دارد که هم پروژه و هم خودش اجازه داده‌اند؛ در غیر این صورت model_not_allowed (۴۰۳).

سقف هزینه و بودجه

  • سقف هزینهٔ کلید: مجموع مصرف کلید در کل عمرش؛ با رسیدن به آن key_spend_limit_reached (۴۰۲).
  • بودجهٔ ماهانهٔ پروژه: project_budget_exceeded (۴۰۲) — بر اساس ماه میلادی جاری.
  • تاریخ انقضا: پس از آن کلید با api_key_expired (۴۰۱) رد می‌شود؛ برای کلیدهای موقت (تست، پیمانکار) مفید است.

چرخش کلید

  1. کلید جدید با همان محدودیت‌ها بسازید.
  2. کلید جدید را در سرویس‌ها مستقر کنید و از last_used_at کلید قدیمی در پنل مطمئن شوید که دیگر استفاده نمی‌شود.
  3. کلید قدیمی را باطل کنید (بازگشت‌ناپذیر). اگر فقط می‌خواهید موقتاً قطع کنید، «غیرفعال» کنید.
کلید را فقط در سرور نگه دارید

هرگز کلید را در کد فرانت‌اند، اپ موبایل، افزونهٔ مرورگر یا مخزن عمومی قرار ندهید. برای اپ‌های کاربرمحور، یک endpoint در سرور خودتان بسازید که درخواست را با کلید به نِت اَرز بفرستد و خودش کاربران را احراز هویت و محدود کند.

در سمت نِت اَرز

  • کلیدها فقط به‌صورت هش SHA-256 ذخیره می‌شوند و مقدار کامل پس از ساخت قابل بازیابی نیست.
  • متن پیام‌ها و پاسخ‌ها ذخیره نمی‌شود؛ فقط فراداده (مدل، توکن‌ها، وضعیت، IP، زمان) برای صورت‌حساب و امنیت.
  • ارتباط با همهٔ ارائه‌دهندگان از سرورهای نِت اَرز و روی TLS انجام می‌شود؛ فیلد user شما پیش از ارسال با شناسهٔ ناشناس حساب جایگزین می‌شود.
  • هر حساب یک سقف مصرف روزانهٔ ایمنی (در صورت تعیین) و کل سرویس یک سقف ظرفیت روزانه دارد؛ در حالت نادر تکمیل ظرفیت، خطای daily_capacity_reached (۵۰۳) برمی‌گردد.