پرش به محتوا
هوشی

مستندات API

احراز هویت و کلیدهای API

هر درخواست به API هوشی با یک کلید شخصی که با hk- شروع می‌شود احراز می‌شود. کلید را در هر هدری که SDK رسمی پروایدرت استفاده می‌کند بفرست؛ هوشی همه را می‌شناسد.

ساخت کلید

  1. وارد کنسول توسعه‌دهندگان شو (با همان حساب هوشی).
  2. در بخش «کلیدهای API» روی «ساخت کلید» بزن، یک نام توصیفی (مثلاً «سرور production») بده و در صورت نیاز محدودیت‌ها را تنظیم کن.
  3. کلید کامل (مثل hk-Xq3…) فقط یک‌بار نمایش داده می‌شود؛ هوشی فقط هش آن را نگه می‌دارد و بعداً فقط چهار حرف آخرش را می‌بینی. اگر گمش کردی، کلید را حذف و یک کلید تازه بساز.

هر حساب می‌تواند تا ۲۵ کلید فعال داشته باشد؛ برای هر محیط یا هر سرویس یک کلید جدا بساز تا مصرف و دسترسی‌ها قابل‌ردیابی باشند.

هدرهای پذیرفته‌شده

هوشی کلید را به ترتیب زیر جست‌وجو می‌کند و اولین مورد پیدا‌شده را استفاده می‌کند. همهٔ این روش‌ها روی هر دو API (یکپارچه و بومی) کار می‌کنند؛ بنابراین SDKهای رسمی بدون هیچ تغییری جز base_url و کلید کار می‌کنند.

اولویتروش ارسالSDK / ابزار معمول
۱Authorization: Bearer hk-...OpenAI SDK، LangChain، Vercel AI SDK، cURL، Claude Code با ANTHROPIC_AUTH_TOKEN
۲x-api-key: hk-...Anthropic SDK (پایتون / TypeScript)، Claude Code با ANTHROPIC_API_KEY
۳x-goog-api-key: hk-...Google GenAI SDK
۴xi-api-key: hk-...ElevenLabs SDK
۵x-key: hk-...Black Forest Labs (FLUX)
۶?key=hk-...کوئری‌استرینگ به سبک Gemini (در لاگ‌ها ثبت می‌شود؛ فقط برای تست)
curl https://api.hooshi.ai/v1/balance \
  -H "Authorization: Bearer $HOOSHI_API_KEY"

پاسخ موفق:

JSON
{ "object": "balance", "currency": "IRT", "balance": 482350.5, "min_required": 1000 }

endpoint عمومی

GET /v1/models و GET /v1/models/{id} بدون کلید هم پاسخ می‌دهند تا بتوانی فهرست مدل‌ها و قیمت‌ها را در ابزارها و صفحات عمومی نمایش دهی. بقیهٔ endpointها کلید می‌خواهند.

مراحل بررسی هر درخواست

قبل از ارسال درخواست به پروایدر، هوشی به ترتیب این موارد را بررسی می‌کند. اولین شرطی که برقرار نباشد، با خطای مربوطه پاسخ داده می‌شود و هزینه‌ای کسر نمی‌شود:

بررسیدر صورت شکستHTTP
کلید ارسال شده و با hk- شروع می‌شودinvalid_api_key401
کلید وجود دارد، فعال است، منقضی نشده و حساب کاربر فعال استinvalid_api_key401
IP درخواست در فهرست IPهای مجاز کلید است (اگر تعریف شده باشد)ip_not_allowed403
تعداد درخواست‌های دقیقهٔ جاری از سقف کلید بیشتر نشدهrate_limit_exceeded429
موجودی کیف پول API حداقل به اندازهٔ حداقل موجودی استinsufficient_quota402
مصرف ماه جاری این کلید از سقف هزینهٔ ماهانه‌اش کمتر استspend_limit_reached402
مدل درخواستی در فهرست مدل‌های مجاز کلید است (اگر تعریف شده باشد)model_not_allowed403

محدودیت‌های قابل تنظیم برای هر کلید

همهٔ تنظیمات زیر از کنسول قابل تغییرند و بلافاصله (حداکثر با یک دقیقه تأخیر کش) اعمال می‌شوند.

تنظیمپیش‌فرضتوضیح
محدودیت نرخ (درخواست در دقیقه)۶۰بین ۱ تا ۳۰۰۰. جزئیات در محدودیت نرخ.
سقف هزینهٔ ماهانه (تومان)بدون سقفوقتی مجموع هزینهٔ این کلید از اول ماه میلادی جاری به سقف برسد، درخواست‌ها با 402 رد می‌شوند.
IPهای مجازهمهتا ۵۰ آدرس IPv4/IPv6. درخواست از IP دیگر با 403 رد می‌شود. آدرس دقیق را وارد کن؛ رنج (CIDR) پشتیبانی نمی‌شود.
مدل‌های مجازهمهفهرستی از شناسه‌های provider/model؛ مثلاً فقط openai/gpt-6-luna برای یک کلید تست ارزان.
تزریق هویت مدلروشنسیستم‌پرامپت کوتاهی که به مدل می‌گوید دقیقاً کدام مدل است. بیشتر بخوان.
تاریخ انقضانداردبعد از این تاریخ کلید به‌طور خودکار نامعتبر می‌شود؛ مناسب کلیدهای موقت پیمانکار یا هکاتون.
فعال / غیرفعالفعالبدون حذف کلید، موقتاً قطعش کن.

کلیدهای جدا برای هر محیط

یک کلید برای توسعه با سقف هزینهٔ کم و مدل‌های ارزان، و یک کلید جدا برای production با IP سرور مجاز بساز. اگر کلیدی لو رفت، فقط همان را باطل می‌کنی.

بهترین روش‌های امنیتی

کلید را در متغیر محیطی نگه دار

import os
from openai import OpenAI

client = OpenAI(base_url="https://api.hooshi.ai/v1", api_key=os.environ["HOOSHI_API_KEY"])

هرگز از مرورگر یا اپ موبایل مستقیم صدا نزن

کد سمت کلاینت قابل مشاهده است. یک endpoint کوچک در بک‌اند خودت بساز که کاربر را احراز کند و درخواست را با کلید هوشی به API بفرستد (نمونه در رابط چت استریمی). این‌طوری محدودیت مصرف هر کاربر را هم خودت کنترل می‌کنی.

کلیدها را دوره‌ای عوض کن

  • کلید جدید بساز، در سرورها جایگزین کن و بعد کلید قدیمی را غیرفعال یا حذف کن؛ این‌طوری قطعی نداری.
  • از ستون «آخرین استفاده» در کنسول و گزارش مصرف برای پیدا کردن کلیدهای بلااستفاده یا مصرف مشکوک استفاده کن.
  • اگر کلیدی را در گیت‌هاب یا جای عمومی دیدی، فوراً از کنسول حذفش کن.

سقف هزینه و IP مجاز را جدی بگیر

حتی اگر کلید لو برود، سقف هزینهٔ ماهانه خسارت را محدود می‌کند و فهرست IP مجاز عملاً کلید را خارج از سرورهای تو بی‌استفاده می‌کند.

خطاهای احراز هویت

401 Unauthorized
{
  "error": {
    "message": "Invalid, disabled or expired API key.",
    "type": "invalid_api_key",
    "code": "invalid_api_key",
    "param": null
  }
}

فهرست کامل کدها در خطاها و تلاش مجدد آمده است.