مرجع کامل اندپوینتها
هدرها، پارامترها، فیلدهای اجباری و اختیاری، محدودیتها و نمونهٔ پاسخ تمام مسیرهای REST API v1.
مشترک بین همهٔ مسیرها
احراز هویت و هدرها
تمام endpointها به Bearer API Key نیاز دارند. مسیر POST علاوه بر آن باید Content-Type صحیح داشته باشد.
Authorizationheaderاجباریکلید API فعال. فاصلهٔ بین Bearer و کلید الزامی است.
Content-Typeheaderاجبارینوع بدنهٔ درخواست چت.
POST
/chat/completionsساخت پاسخ چت
از یک پیام ساده یا تاریخچهٔ کامل گفتگو، پاسخ متنی تولید میکند.
Request body
modelstringاختیاریشناسهٔ مدل. مقدارهای مجاز را از
GET /models بخوانید.messagesMessage[]شرطیتاریخچهٔ مرتب گفتگو. پیامهای نامعتبر یا خالی حذف میشوند.
promptstringشرطیورودی تکپیامی جایگزین messages. فیلدهای message و input نیز همین نقش را دارند.
streambooleanاختیاریstreaming در REST API عمومی v1 فعال نیست.
ساختار هر Message
rolestringاجباریsystem رفتار پاسخ را تنظیم میکند، user ورودی کاربر و assistant پاسخهای قبلی را مشخص میکند.
contentstringاجباریمتن غیرخالی پیام. فضای ابتدا و انتها حذف میشود.
نمونهٔ درخواست
curl -X POST https://kujichat.com/api/v1/chat/completions \
-H "Authorization: Bearer $KUJICHAT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kuji-v0",
"messages": [
{"role": "system", "content": "کوتاه و دقیق پاسخ بده."},
{"role": "user", "content": "REST API چیست؟"}
]
}'Response · 200
پاسخ موفقJSON
{
"id": "chatcmpl_4a2f...",
"object": "chat.completion",
"created": 1786642500,
"model": "kuji-v0",
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "REST API روشی استاندارد برای ارتباط سرویسها از طریق HTTP است."
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 18,
"completion_tokens": 21,
"total_tokens": 39,
"credits": 2,
"billing_source": "plan"
}
}فیلدهای پاسخ
idstringشناسهٔ یکتای completion با پیشوند chatcmpl_.
objectstringهمیشه chat.completion است.
creatednumberزمان ساخت پاسخ بهصورت Unix timestamp.
modelstringشناسهٔ مدل استفادهشده.
choicesarrayآرایهٔ خروجی؛ در نسخهٔ فعلی پاسخ اصلی در عضو اول است.
choices[].message.contentstringمتن تولیدشده توسط مدل.
choices[].finish_reasonstringدلیل پایان پاسخ؛ در نسخهٔ فعلی stop.
usage.prompt_tokensnumberبرآورد توکنهای ورودی.
usage.completion_tokensnumberبرآورد توکنهای خروجی.
usage.total_tokensnumberمجموع برآورد توکنهای ورودی و خروجی.
usage.creditsnumberاعتبار کسرشده بر اساس مدل.
usage.billing_sourcestringمنبع کسر هزینه: plan یا api_balance.
GET
/modelsفهرست مدلهای مجاز
فقط مدلهایی را برمیگرداند که برای پلن و کلید فعلی قابل استفادهاند.
RequestcURL
curl https://kujichat.com/api/v1/models \
-H "Authorization: Bearer $KUJICHAT_API_KEY"Response · 200JSON
{
"object": "list",
"data": [{
"id": "kuji-v0",
"object": "model",
"display_name": "Kuji v0",
"provider": "kujichat",
"type": "chat",
"description": "مدل عمومی گفتگو",
"credits_per_request": 2,
"capabilities": {
"chat": true,
"reasoning": false,
"vision": false,
"streaming": false,
"tools": false,
"json_output": false
},
"pricing": {
"billing_unit": "request",
"credits": 2,
"payg_amount": 200,
"currency": "IRT"
},
"available": true,
"status": "available"
}]
}فیلدهای هر مدل
idstringشناسهای که باید در فیلد model درخواست چت بفرستید.
display_namestringنام مناسب نمایش در رابط کاربری.
providerstringشناسهٔ سرویسدهندهٔ مدل.
descriptionstringتوضیح کوتاه کاربرد مدل.
credits_per_requestnumberهزینهٔ ثابت هر درخواست برحسب اعتبار.
capabilitiesobjectوضعیت chat، reasoning، vision، streaming، tools و json_output.
pricing.payg_amountnumberهزینهٔ pay-as-you-go به تومان.
availablebooleanآمادهبودن مدل برای کلید فعلی.
GET
/models/{model_id}جزئیات یک مدل
همان ساختار مدل را برای یک شناسهٔ مشخص برمیگرداند؛ پاسخ داخل data قرار نمیگیرد.
RequestcURL
curl https://kujichat.com/api/v1/models/kuji-v0 \
-H "Authorization: Bearer $KUJICHAT_API_KEY"GET
/usageمصرف و محدودیت فعلی
وضعیت سهمیهٔ ماهانه، موجودی pay-as-you-go، پنجرهٔ rate limit و کلید فعال را برمیگرداند.
RequestcURL
curl https://kujichat.com/api/v1/usage \
-H "Authorization: Bearer $KUJICHAT_API_KEY"Response · 200JSON
{
"object": "usage",
"plan": "pro",
"period": "2026-08",
"api_credits": {
"used": 128,
"limit": 1000,
"remaining": 872
},
"pay_as_you_go": { "balance": 2400 },
"rate_limit": {
"limit_per_minute": 240,
"remaining": 238,
"resets_at": "2026-08-13T18:32:00.000Z"
},
"key": { "id": "...", "name": "Production" }
}فیلدهای مصرف
periodstringدورهٔ ماهانه با فرمت YYYY-MM.
api_credits.usednumberاعتبار مصرفشده در دورهٔ جاری.
api_credits.limitnumberسهمیهٔ ماهانهٔ پلن.
api_credits.remainingnumberسهمیهٔ ماهانهٔ باقیمانده؛ منفی نمیشود.
pay_as_you_go.balancenumberموجودی جداگانهٔ API برای مصرف پس از سهمیه.
rate_limit.limit_per_minutenumberسقف درخواست در یک دقیقه.
rate_limit.remainingnumberتعداد درخواست باقیمانده در پنجرهٔ فعلی.
rate_limit.resets_atstringزمان ISO بازنشانی پنجرهٔ فعلی.
key.namestringنام کلیدی که درخواست را ارسال کرده است.