Subyar
پرتال رسمی توسعه‌دهندگان سابیار v2.1

مستندات و مرجع کامل API سابیار

تمامی قابلیت‌های هوشمند سابیار را با چند خط کد در برنامه‌ها، ربات‌ها و خط لوله‌های خود ادغام کنید. شامل دریافت مدل‌های هوش مصنوعی، قالب‌ها و لحن‌های ترجمه، ارسال فایل و شروع جاب ترجمه، مکالمات چت تعاملی و ابزارهای اصلاح RTL.

آدرس پایه سرویس (Base URL)

تمام درخواست‌ها باید به نشانی زیر ارسال شوند:

https://subyar.com/api

احراز هویت سریع (X-API-Key)

کلید امن خود را در هدر درخواست قرار دهید:

X-API-Key: sub_live_your_key_here

فرمت پاسخ‌ها (JSON Response)

کلیه پاسخ‌ها دارای کدهای HTTP استاندارد و فرمت یکپارچه JSON هستند.

Content-Type: application/json

مدل‌ها و سرویس‌دهندگان (AI Models)

دریافت فهرست مدل‌های در دسترس (Google Gemini, OpenRouter, Claude, GPT و ...) جهت انتخاب در ترجمه و مکالمات.

GET
/api/providers/دریافت فهرست ارائه‌دهندگان و مدل‌های فعال
احراز هویت

پیش از ارسال جاب یا شروع مکالمه، با این اندپوینت می‌توانید لیست مدل‌های مجاز را دریافت کرده و در فیلد model قرار دهید.

پارامترهای درخواست

نامنوعوضعیتتوضیحات
refresh (query)booleanاختیاریبروزرسانی فوری کش سرور (پیش‌فرض: false)
curl Example
curl -X GET "https://subyar.com/api/providers/" \
  -H "X-API-Key: sub_live_your_api_key_here"
Response (200)
application/json
{
  "providers": [
    {
      "id": "gemini",
      "name": "Google Gemini",
      "supports_model_selection": true,
      "models": [
        {
          "id": "gemini-2.5-flash",
          "name": "Gemini 2.5 Flash (پر سرعت و بهینه)"
        },
        {
          "id": "gemini-2.5-pro",
          "name": "Gemini 2.5 Pro (بالاترین کیفیت ادبی)"
        }
      ]
    },
    {
      "id": "openrouter",
      "name": "OpenRouter",
      "supports_model_selection": true,
      "models": [
        {
          "id": "anthropic/claude-3.5-sonnet",
          "name": "Claude 3.5 Sonnet"
        },
        {
          "id": "openai/gpt-4o",
          "name": "GPT-4o"
        },
        {
          "id": "meta-llama/llama-3.3-70b-instruct",
          "name": "Llama 3.3 70B"
        }
      ]
    }
  ]
}
GET
/api/providers/default-selectionدریافت مدل و سرویس‌دهنده پیش‌فرض
احراز هویت

در صورتی که نمی‌خواهید کاربر مدل خاصی انتخاب کند، از مقدار بازگشتی این اندپوینت به عنوان پیش‌فرض استفاده کنید.

curl Example
curl -X GET "https://subyar.com/api/providers/default-selection" \
  -H "X-API-Key: sub_live_your_api_key_here"
Response (200)
application/json
{
  "selection": {
    "provider_id": "gemini",
    "model_id": "gemini-2.5-flash"
  }
}

قالب‌ها و پرامپت‌ها (Templates)

مدیریت قالب‌های ترجمه، لحن‌ها، پرامپت‌های تخصصی (فیلم، مستند، انیمه) و گلاسری کلمات اختصاصی.

GET
/api/templates/فهرست قالب‌های ترجمه
احراز هویت

شناسه id هر قالب را می‌توانید هنگام ایجاد جاب یا شروع مکالمه در فیلد template_id پاس دهید تا ترجمه با پرامپت و لحن آن قالب انجام شود.

curl Example
curl -X GET "https://subyar.com/api/templates/" \
  -H "X-API-Key: sub_live_your_api_key_here"
Response (200)
application/json
{
  "templates": [
    {
      "id": "b45a0b7c-1234-4567-8901-abcdef123456",
      "name_en": "Anime & Animation (Casual)",
      "name_fa": "انیمه و انیمیشن (لحن محاوره‌ای جوانانه)",
      "is_builtin": true,
      "description_fa": "مناسب دیالوگ‌های پرهیجان، حفظ اصطلاحات ژاپنی و نگارش روان",
      "values": {
        "content.source_lang": "en",
        "content.target_lang": "fa",
        "tone": "casual",
        "system_prompt": "Translate subtitles naturally for anime fans..."
      },
      "created_at": "2026-01-01T00:00:00Z"
    },
    {
      "id": "c98e1f2a-5678-4321-9876-fedcba654321",
      "name_en": "Documentary (Formal)",
      "name_fa": "مستند و فیلم تاریخی (لحن رسمی و فاخر)",
      "is_builtin": true,
      "description_fa": "واژه‌گزینی دقیق و ادبی برای مستندهای علمی و تاریخی",
      "values": {
        "content.source_lang": "en",
        "content.target_lang": "fa",
        "tone": "formal"
      },
      "created_at": "2026-01-01T00:00:00Z"
    }
  ]
}
POST
/api/templates/ایجاد قالب ترجمه جدید
احراز هویت

یک قالب جدید در دیتابیس ثبت می‌کند که در تمام جاب‌ها و مکالمات کاربر در دسترس خواهد بود.

پارامترهای درخواست

نامنوعوضعیتتوضیحات
name_fastringاجبارینام قالب به فارسی
name_enstringاجبارینام قالب به انگلیسی
description_fastringاختیاریتوضیحات اختیاری فارسی
valuesobjectاختیاریتنظیمات پرامپت، لحن و واژه‌نامه
curl Example
curl -X POST "https://subyar.com/api/templates/" \
  -H "X-API-Key: sub_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "name_fa": "سریال‌های سیتکام طنز",
    "name_en": "Comedy Sitcoms",
    "description_fa": "حفظ شوخی‌ها و اصطلاحات طنز",
    "values": { "tone": "humorous" }
  }'
Response (201)
application/json
{
  "id": "d12e3456-789a-bcde-f012-3456789abcde",
  "name_fa": "سریال‌های سیتکام طنز",
  "name_en": "Comedy Sitcoms",
  "is_builtin": false,
  "values": {
    "tone": "humorous"
  },
  "created_at": "2026-09-13T09:00:00Z"
}

خط لوله ترجمه زیرنویس (Jobs)

ارسال فایل زیرنویس با قالب و مدل دلخواه، تخمین هزینه، دریافت وضعیت زنده و دانلود نتیجه.

POST
/api/jobs/ایجاد جاب ترجمه زیرنویس
احراز هویت

فایل ورودی (SRT, ASS, VTT, DOCX, TXT) را دریافت کرده و یک جاب در صف ترجمه هوشمند ثبت می‌کند. می‌توانید مدل و قالب انتخابی را در فیلد job_options تعیین کنید.

پارامترهای درخواست

نامنوعوضعیتتوضیحات
fileFileاجباریفایل زیرنویس (SRT, ASS, VTT, DOCX, TXT)
ai_providerstringاختیاریسرویس‌دهنده (پیش‌فرض: gemini یا openrouter)
job_optionsstring (JSON)اختیاریتنظیمات مدل و قالب: {"model": "gemini-2.5-flash", "template_id": "..."}
content_specstring (JSON)اختیاریزبان مبدأ و مقصد: {"conversation_settings": {"source_language": "en", "target_language": "fa"}}
user_notestringاختیارییادداشت یا دستور تکمیلی برای هوش مصنوعی (اختیاری)
curl Example
curl -X POST "https://subyar.com/api/jobs/" \
  -H "X-API-Key: sub_live_your_api_key_here" \
  -F "file=@episode_01.srt" \
  -F "ai_provider=gemini" \
  -F 'job_options={"model": "gemini-2.5-flash", "template_id": "b45a0b7c-..."}' \
  -F 'content_spec={"conversation_settings": {"source_language": "en", "target_language": "fa"}}'
Response (201)
application/json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "source_filename": "episode_01.srt",
  "status": "pending",
  "total_lines": 480,
  "translated_lines": 0,
  "progress_percentage": 0,
  "ai_provider": "gemini",
  "created_at": "2026-09-13T09:10:00Z"
}
POST
/api/jobs/estimateتخمین هزینه و تعداد کلمات زیرنویس
احراز هویت

فایل زیرنویس را بدون ایجاد جاب آنالیز کرده و تعداد کلمات و امکان ترجمه با موجودی فعلی حساب را برمی‌گرداند.

پارامترهای درخواست

نامنوعوضعیتتوضیحات
fileFileاجباریفایل زیرنویس ورودی
curl Example
curl -X POST "https://subyar.com/api/jobs/estimate" \
  -H "X-API-Key: sub_live_your_api_key_here" \
  -F "file=@episode_01.srt"
Response (200)
application/json
{
  "total_lines": 480,
  "total_words": 3410,
  "estimated_tokens": 4950,
  "can_afford": true,
  "user_words_remaining": 50000
}
GET
/api/jobs/{job_id}استعلام وضعیت و پیشرفت جاب
احراز هویت

در فواصل ۲ تا ۵ ثانیه‌ای این اندپوینت را فراخوانی کنید تا زمانی که status برابر با completed یا failed شود.

curl Example
curl -X GET "https://subyar.com/api/jobs/550e8400-e29b-41d4-a716-446655440000" \
  -H "X-API-Key: sub_live_your_api_key_here"
Response (200)
application/json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "translating",
  "progress_percentage": 65,
  "total_lines": 480,
  "translated_lines": 312,
  "source_filename": "episode_01.srt",
  "created_at": "2026-09-13T09:10:00Z",
  "completed_at": null
}
GET
/api/jobs/{job_id}/previewپیش‌نمایش دوزبانه خط به خط
احراز هویت

متن هر خط را به همراه تایم‌کد شروع، پایان، متن مبدأ و متن ترجمه‌شده بازمی‌گرداند؛ مناسب رندر در وب یا اپلیکیشن.

curl Example
curl -X GET "https://subyar.com/api/jobs/550e8400-e29b-41d4-a716-446655440000/preview" \
  -H "X-API-Key: sub_live_your_api_key_here"
Response (200)
application/json
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "total_events": 480,
  "events": [
    {
      "index": 1,
      "start": "00:00:01.50",
      "end": "00:00:04.20",
      "original": "Welcome to Subyar AI platform!",
      "translated": "به پلتفرم هوش مصنوعی سابیار خوش آمدید!"
    }
  ]
}
GET
/api/jobs/{job_id}/downloadدانلود فایل زیرنویس ترجمه‌شده
احراز هویت

پس از تکمیل جاب، فایل خروجی را به صورت استریم با هدر Content-Disposition دانلود کنید.

پارامترهای درخواست

نامنوعوضعیتتوضیحات
format (query)stringاختیاریتبدیل فرمت به srt یا ass (اختیاری)
curl Example
curl -O -J "https://subyar.com/api/jobs/550e8400-e29b-41d4-a716-446655440000/download?format=srt" \
  -H "X-API-Key: sub_live_your_api_key_here"
Response (200)
application/json
1
00:00:01,500 --> 00:00:04,200
به پلتفرم هوش مصنوعی سابیار خوش آمدید!

2
...

مکالمات و چت هوشمند زیرنویس (Conversations)

گفتگوی تعاملی با هوش مصنوعی برای ترجمه خط به خط، اعمال ویرایش‌های درجا (In-Chat Copilot) و اصلاح لحن با پرامپت متنی.

GET
/api/conversations/فهرست گفتگوهای کاربر
احراز هویت

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

curl Example
curl -X GET "https://subyar.com/api/conversations/" \
  -H "X-API-Key: sub_live_your_api_key_here"
Response (200)
application/json
[
  {
    "id": "conv_123456",
    "title": "ترجمه سریال فرندز - فصل ۱",
    "message_count": 8,
    "settings": {
      "provider": "gemini",
      "model": "gemini-2.5-flash"
    },
    "created_at": "2026-09-13T07:30:00Z"
  }
]
POST
/api/conversations/ایجاد گفتگوی ترجمه جدید
احراز هویت

یک گفتگوی جدید ایجاد کرده و شناسه آن را بازمی‌گرداند تا پیام‌ها و فایل‌ها را در آن ارسال کنید.

پارامترهای درخواست

نامنوعوضعیتتوضیحات
titlestringاختیاریعنوان گفتگو (اختیاری)
curl Example
curl -X POST "https://subyar.com/api/conversations/" \
  -H "X-API-Key: sub_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"title": "ترجمه انیمه اتک آن تایتان"}'
Response (201)
application/json
{
  "id": "conv_abcdef",
  "title": "ترجمه انیمه اتک آن تایتان",
  "message_count": 0,
  "settings": {},
  "created_at": "2026-09-13T09:15:00Z"
}
POST
/api/conversations/{conversation_id}/messagesارسال پیام یا فایل در گفتگو (Chat & Copilot)
احراز هویت

اگر فایل ارسال شود، ترجمه جاب در بستر گفتگو کلید می‌خورد. اگر پیام متنی ارسال شود (مثلاً «لحن خط ۲۰ را دوستانه‌تر کن»)، دستیار هوشمند Copilot خطوط مربوطه را اصلاح می‌کند.

پارامترهای درخواست

نامنوعوضعیتتوضیحات
contentstringاختیاریمتن پیام یا دستور بازنویسی
model_idstringاختیاریشناسه مدل انتخابی
template_idstringاختیاریشناسه قالب ترجمه انتخابی
fileFileاختیاریفایل زیرنویس برای ترجمه (اختیاری)
curl Example
curl -X POST "https://subyar.com/api/conversations/conv_abcdef/messages" \
  -H "X-API-Key: sub_live_your_api_key_here" \
  -F "content=لطفاً تیکه‌کلام‌ها را عامیانه‌تر ترجمه کن" \
  -F "model_id=gemini-2.5-flash"
Response (200)
application/json
[
  {
    "id": "msg_user_1",
    "role": "user",
    "content": "لطفاً تیکه‌کلام‌ها را عامیانه‌تر ترجمه کن",
    "created_at": "2026-09-13T09:16:00Z"
  },
  {
    "id": "msg_ai_2",
    "role": "assistant",
    "content": "ویرایش هوشمند با موفقیت روی خطوط مورد نظر اعمال شد.",
    "file": {
      "type": "copilot_edit",
      "status": "completed",
      "summary": "لحن خطوط عامیانه و روان گردید."
    },
    "created_at": "2026-09-13T09:16:02Z"
  }
]

جعبه ابزار زیرنویس (Subtitle Tools)

اصلاح جهت متن و رفع وارونگی حروف فارسی (RTL Fix) و تبدیل فایل‌های SRT به استایل‌های جذاب ASS.

POST
/api/tools/rtl-fixاصلاح راست‌چین و علائم نگارشی (RTL Fixer)
احراز هویت

فایل زیرنویس SRT یا ASS را دریافت کرده و فایل اصلاح‌شده بدون کوچک‌ترین تغییر در تایمینگ‌ها به صورت دانلود بازمی‌گرداند.

پارامترهای درخواست

نامنوعوضعیتتوضیحات
fileFileاجباریفایل زیرنویس SRT یا ASS
curl Example
curl -X POST "https://subyar.com/api/tools/rtl-fix" \
  -H "X-API-Key: sub_live_your_api_key_here" \
  -F "file=@unfixed.srt" \
  --output "fixed.srt"
Response (200)
application/json
[Fixed subtitle file binary stream]
POST
/api/tools/srt-to-assتبدیل SRT به ASS استایل‌دار
احراز هویت

یک تسک پس‌زمینه ایجاد کرده و شناسه job_id را بازمی‌گرداند تا فایل نهایی را دریافت کنید.

پارامترهای درخواست

نامنوعوضعیتتوضیحات
srt_fileFileاجباریفایل SRT ورودی
tonestringاختیاریتم استایل (anime, modern, cinema)
curl Example
curl -X POST "https://subyar.com/api/tools/srt-to-ass" \
  -H "X-API-Key: sub_live_your_api_key_here" \
  -F "srt_file=@input.srt" \
  -F "tone=anime"
Response (202)
application/json
{
  "job_id": "srt2ass-98124-abc",
  "status": "processing",
  "message": "Conversion job dispatched"
}

کلیدهای API توسعه‌دهندگان (API Keys)

ایجاد، دریافت لیست، فعال/غیرفعال کردن و ابطال کلیدهای API جهت احراز هویت برنامه‌نویسی در هدر X-API-Key.

POST
/api/api-keys/ایجاد کلید API جدید
احراز هویت

رشته کامل secret_key تنها یک بار در این پاسخ نمایش داده می‌شود و در دیتابیس به شکل هش SHA-256 ذخیره می‌گردد.

پارامترهای درخواست

نامنوعوضعیتتوضیحات
namestringاجبارینام اختیاری برای شناسایی کلید
scopesstring[]اختیاریمجوزهای مجاز کلید (مثلاً ['jobs:read', 'game:read', 'studio:read'] یا ['*'])
expires_in_daysnumberاختیاریمدت اعتبار به روز (پیش‌فرض: نامحدود)
curl Example
curl -X POST "https://subyar.com/api/api-keys/" \
  -H "Authorization: Bearer <YOUR_JWT_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"name": "My Translation Bot", "expires_in_days": 90}'
Response (201)
application/json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "name": "My Translation Bot",
  "key_prefix": "sub_live_a1b2c3...",
  "scopes": [
    "*"
  ],
  "is_active": true,
  "expires_at": "2026-12-12T08:00:00Z",
  "created_at": "2026-09-13T09:00:00Z",
  "secret_key": "sub_live_a1b2c3d4e5f678901234567890abcdef"
}
GET
/api/api-keys/فهرست کلیدهای API کاربر
احراز هویت

جهت مانیتورینگ کلیدها در پروفایل یا اسکریپت‌های مدیریت دسترسی.

curl Example
curl -X GET "https://subyar.com/api/api-keys/" \
  -H "Authorization: Bearer <YOUR_JWT_TOKEN>"
Response (200)
application/json
{
  "keys": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "name": "My Translation Bot",
      "key_prefix": "sub_live_a1b2c3...",
      "scopes": [
        "*"
      ],
      "is_active": true,
      "last_used_at": "2026-09-13T09:12:00Z",
      "expires_at": null,
      "created_at": "2026-09-13T09:00:00Z"
    }
  ],
  "total": 1
}
DELETE
/api/api-keys/{key_id}ابطال و حذف دائمی کلید API
احراز هویت

پس از ارسال این درخواست، کلید مربوطه فوراً از کار می‌افتد و دیگر برای احراز هویت پذیرفته نخواهد شد.

curl Example
curl -X DELETE "https://subyar.com/api/api-keys/3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Authorization: Bearer <YOUR_JWT_TOKEN>"
Response (200)
application/json
{
  "status": "ok",
  "deleted": true,
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

حساب کاربری و سهمیه‌ها (Account & Quota)

بررسی مشخصات حساب کاربری، سهمیه کلمات باقی‌مانده و تاریخ انقضای پلن فعال.

GET
/api/users/profileمشخصات حساب کاربری
احراز هویت

هم با توکن JWT و هم با هدر X-API-Key قابل استفاده است.

curl Example
curl -X GET "https://subyar.com/api/users/profile" \
  -H "X-API-Key: sub_live_your_api_key_here"
Response (200)
application/json
{
  "id": "usr_123456",
  "email": "developer@example.com",
  "username": "subyar_dev",
  "is_active": true,
  "is_premium": true,
  "phone_verified": true,
  "created_at": "2026-01-01T00:00:00Z"
}
GET
/api/plans/entitlementsسهمیه و موجودی کلمات باقی‌مانده
احراز هویت

پیش از ارسال ترجمه فایل‌های سنگین، موجودی words_remaining را با این اندپوینت بررسی کنید.

curl Example
curl -X GET "https://subyar.com/api/plans/entitlements" \
  -H "X-API-Key: sub_live_your_api_key_here"
Response (200)
application/json
{
  "plan_name": "Pro Monthly",
  "words_limit": 150000,
  "words_used": 42000,
  "words_remaining": 108000,
  "expires_at": "2026-10-15T00:00:00Z",
  "is_active": true
}