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

راهنمای جامع اتصال به API استاندارد و سازگار با الگوی OpenAI. مناسب برای افزونه‌های وردپرس، فروشگاه‌های اینترنتی و توسعه‌دهندگان.

سازگاری استاندارد: ساختار درخواست و پاسخ این وب‌سرویس با الگوی رایج OpenAI (مانند chat/completions و models) هماهنگ است تا استفاده از آن برای برنامه‌نویسان آشنا و ساده باشد.
معماری امن:
• شما و افزونه‌تان فقط به https://hooshan-api.ir/v1 متصل می‌شوید.
• ارتباط با سرویس‌دهندگان بالادستی صرفاً از سمت سرور هوشان انجام می‌شود.
• کلیدهای سرویس‌دهنده هرگز در اختیار کاربر نهایی قرار نمی‌گیرد.
فهرست مطالب
  1. مدل‌های فعال
  2. شروع سریع
  3. احراز هویت
  4. فهرست Endpointها
  5. بازنویسی و تکمیل متن (chat/completions)
  6. بررسی اعتبار حساب
  7. ساخت تصویر
  8. نمونه کدها
  9. کدهای خطا
  10. امنیت و محدودیت‌ها
  11. نکات ویژه افزونه وردپرس

۱. شروع سریع

  1. در سایت https://hooshan-api.ir ثبت‌نام کنید (ورود با کد یکبارمصرف).
  2. پروفایل خود را تکمیل نمایید.
  3. از بخش داشبورد، یک توکن API ایجاد کنید. توکن تنها یک‌بار نمایش داده می‌شود؛ آن را در محل امن ذخیره کنید.
  4. حساب خود را شارژ کنید.
  5. درخواست‌ها را با هدر احراز هویت ارسال نمایید.

آدرس پایه API:

https://hooshan-api.ir/v1

۲. احراز هویت

تمام endpointها (به‌جز وضعیت سلامت سرویس) نیازمند توکن هستند.

Authorization: Bearer YOUR_API_TOKEN
توکن را مانند رمز عبور محرمانه نگه دارید. در صورت افشا، بلافاصله از داشبورد آن را لغو و توکن جدید ایجاد کنید. در مستندات و کدهای نمونه هرگز توکن واقعی قرار ندهید.

۳. فهرست Endpointها

روشمسیرتوضیح
POST/v1/chat/completionsبازنویسی و تکمیل متن (سازگار با OpenAI)
GET/v1/modelsلیست مدل‌های فعال
POST/v1/images/generationsساخت تصویر
GET/v1/accountموجودی اعتبار (ویژه افزونه)
GET/v1/usageتاریخچه مصرف
GET/v1/healthوضعیت سرویس (بدون توکن)

۴. بازنویسی و تکمیل متن

POST /v1/chat/completions

این endpoint با الگوی استاندارد OpenAI طراحی شده است.

بدنه درخواست (JSON):

{
  "model": "gpt-4o-mini",
  "messages": [
    {
      "role": "system",
      "content": "متن را به صورت حرفه‌ای، یونیک و مناسب فروشگاه اینترنتی بازنویسی کن. از نام برندهای رقیب استفاده نکن."
    },
    {
      "role": "user",
      "content": "متن اصلی محصول در اینجا قرار می‌گیرد..."
    }
  ],
  "max_tokens": 1500,
  "temperature": 0.7
}

پاسخ موفق (سازگار با OpenAI):

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "created": 1710000000,
  "model": "gpt-4o-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "متن بازنویسی‌شده..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 120,
    "completion_tokens": 340,
    "total_tokens": 460
  },
  "hooshan": {
    "remaining_balance": 1249540
  }
}

فیلد hooshan.remaining_balance اختصاصی این سرویس است و مانده اعتبار پس از کسر را نشان می‌دهد.

۵. بررسی اعتبار حساب

GET /v1/account

برای افزونه و پنل کاربری؛ موجودی توکن و معادل تقریبی ریالی را برمی‌گرداند.

curl -X GET https://hooshan-api.ir/v1/account \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
{
  "object": "account",
  "data": {
    "mobile": "09xxxxxxxxx",
    "balance_tokens": 1250000,
    "balance_rial": 187500,
    "total_charged": 2000000,
    "total_consumed": 750000
  }
}
GET /v1/models

لیست مدل‌های فعال متن و تصویر به‌همراه قیمت تقریبی.

۶. ساخت تصویر

POST /v1/images/generations
{
  "model": "dall-e-3",
  "prompt": "تصویر حرفه‌ای محصول روی پس‌زمینه روشن",
  "size": "1024x1024",
  "n": 1
}
{
  "created": 1710000000,
  "data": [
    { "url": "https://..." }
  ],
  "hooshan": {
    "tokens_used": 10000,
    "remaining_balance": 1239158
  }
}

۷. نمونه کدها

در تمام نمونه‌ها به‌جای YOUR_API_TOKEN توکن واقعی خود را قرار دهید. هرگز توکن را در مخزن کد عمومی قرار ندهید.

cURL

curl -X POST https://hooshan-api.ir/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [
      {"role": "system", "content": "بازنویسی حرفه‌ای و یونیک برای فروشگاه"},
      {"role": "user", "content": "متن محصول..."}
    ],
    "max_tokens": 1200
  }'

PHP

$token = getenv('HOOSHAN_API_TOKEN'); // از متغیر محیطی بخوانید
$url   = 'https://hooshan-api.ir/v1/chat/completions';

$payload = [
    'model' => 'gpt-4o-mini',
    'messages' => [
        ['role' => 'system', 'content' => 'بازنویسی حرفه‌ای، یونیک و مناسب فروشگاه اینترنتی'],
        ['role' => 'user', 'content' => $productText],
    ],
    'max_tokens' => 1500,
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $token,
        'Content-Type: application/json',
        'Accept: application/json',
    ],
    CURLOPT_POSTFIELDS     => json_encode($payload, JSON_UNESCAPED_UNICODE),
    CURLOPT_TIMEOUT        => 120,
    CURLOPT_SSL_VERIFYPEER => true,
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$data = json_decode($response, true);
if ($httpCode === 200 && isset($data['choices'][0]['message']['content'])) {
    $rewritten = $data['choices'][0]['message']['content'];
    $remaining = $data['hooshan']['remaining_balance'] ?? null;
}

JavaScript

const res = await fetch('https://hooshan-api.ir/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  },
  body: JSON.stringify({
    model: 'gpt-4o-mini',
    messages: [
      { role: 'system', content: 'بازنویسی یونیک و سئو‌شده' },
      { role: 'user', content: productText }
    ],
    max_tokens: 1500
  })
});
const data = await res.json();
if (res.ok) {
  console.log(data.choices[0].message.content);
} else {
  console.error(data.error?.message || data.message);
}

Python

import os
import requests

token = os.environ.get("HOOSHAN_API_TOKEN")
url = "https://hooshan-api.ir/v1/chat/completions"

payload = {
    "model": "gpt-4o-mini",
    "messages": [
        {"role": "system", "content": "بازنویسی حرفه‌ای برای فروشگاه"},
        {"role": "user", "content": product_text},
    ],
    "max_tokens": 1500,
}
headers = {
    "Authorization": f"Bearer {token}",
    "Content-Type": "application/json",
}
r = requests.post(url, json=payload, headers=headers, timeout=120)
data = r.json()
if r.status_code == 200:
    print(data["choices"][0]["message"]["content"])
else:
    print(data.get("error", {}).get("message", data))

۸. کدهای خطا

پاسخ خطا در قالب استاندارد مشابه OpenAI برگردانده می‌شود:

{
  "error": {
    "message": "توضیح خطا به زبان فارسی",
    "type": "insufficient_quota",
    "code": 402
  }
}
کدنوعمعنی
401authentication_errorتوکن ارسال نشده یا نامعتبر
402insufficient_quotaاعتبار کافی نیست
403permission_errorحساب یا نشانی مسدود است
422invalid_request_errorورودی نامعتبر
429rate_limit_exceededتعداد درخواست بیش از حد
502server_errorخطا از سرویس بالادستی
500server_errorخطای داخلی

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

۱۰. نکات ویژه افزونه وردپرس

برای شارژ اعتبار و مدیریت توکن وارد داشبورد شوید:
https://hooshan-api.ir

نسخه مستندات: ۱.۵.۰ — هوشان — https://hooshan-api.ir