الأخطاء
رموز الأخطاء وكيفية معالجتها
الأخطاء
شكل الخطأ
جميع أخطاء API تتبع هذا الشكل:
{
"error": "Insufficient credits. Please top up your account.",
"code": "INSUFFICIENT_BALANCE",
"required": 5,
"available": 2,
"topUpUrl": "/dashboard/billing"
}رموز الأخطاء
أخطاء المصادقة (4xx)
| الرمز | HTTP | الوصف |
|---|---|---|
UNAUTHORIZED | 401 | مفتاح API غير صالح |
ACCOUNT_SUSPENDED | 403 | الحساب موقوف - تواصل مع الدعم |
أخطاء الرصيد
| الرمز | HTTP | الوصف |
|---|---|---|
INSUFFICIENT_BALANCE | 402 | الرصيد غير كافٍ لتنفيذ الطلب |
حد الطلبات
| الرمز | HTTP | الوصف |
|---|---|---|
RATE_LIMIT_EXCEEDED | 429 | تجاوزت حد الطلبات، يرجى الانتظار قبل المحاولة |
أخطاء الطلب
| الرمز | HTTP | الوصف |
|---|---|---|
BAD_REQUEST | 400 | طلب غير صالح |
أخطاء الخادم
| الرمز | HTTP | الوصف |
|---|---|---|
INTERNAL_ERROR | 500 | خطأ داخلي في الخادم |
معالجة الأخطاء
JavaScript
import { AraseClient, AraseAPIError } from "arase";
const client = new AraseClient();
try {
const result = await client.search("بحث");
} catch (error) {
if (error instanceof AraseAPIError) {
switch (error.code) {
case "UNAUTHORIZED":
console.log("مفتاح API غير صالح - تحقق من المفتاح");
break;
case "ACCOUNT_SUSPENDED":
console.log("الحساب موقوف - تواصل مع الدعم");
break;
case "INSUFFICIENT_BALANCE":
console.log("رصيد غير كافي - اشحن رصيدك");
break;
case "RATE_LIMIT_EXCEEDED":
console.log("تجاوزت حد الطلبات - انتظر");
break;
default:
console.log(error.message);
}
}
}Python
from arase import AraseClient, AraseAPIError
client = AraseClient()
try:
result = client.search('بحث')
except AraseAPIError as e:
if e.code == 'UNAUTHORIZED':
print('مفتاح API غير صالح')
elif e.code == 'ACCOUNT_SUSPENDED':
print('الحساب موقوف - تواصل مع الدعم')
elif e.code == 'INSUFFICIENT_BALANCE':
print('رصيد غير كافي - اشحن رصيدك')
elif e.code == 'RATE_LIMIT_EXCEEDED':
print('تجاوزت حد الطلبات - انتظر')
else:
print(e.message)Headers الاستجابة
كل استجابة تتضمن headers مفيدة:
| Header | الوصف |
|---|---|
X-Response-Time | وقت معالجة الطلب (مللي ثانية) |
X-Credits-Cost | عدد الطلبات المخصومة |
X-Credits-Remaining | الرصيد المتبقي |
X-RateLimit-Remaining | الطلبات المتبقية في النافذة الحالية |
X-RateLimit-Reset | ثواني حتى إعادة تعيين حد الطلبات |
مثال على Headers الاستجابة
HTTP/1.1 200 OK
X-Response-Time: 234
X-Credits-Cost: 3
X-Credits-Remaining: 97
X-RateLimit-Remaining: 58استجابة تجاوز حد الطلبات
عند تجاوز حد الطلبات:
{
"error": "Rate limit exceeded. Please try again later.",
"code": "RATE_LIMIT_EXCEEDED",
"retryAfter": 60,
"plan": "free"
}ترقية باقتك للحصول على حد طلبات أعلى. راجع الأسعار.
استجابة رصيد غير كافٍ
عندما لا يكون لديك رصيد كافٍ:
{
"error": "Insufficient credits. Please top up your account.",
"code": "INSUFFICIENT_BALANCE",
"required": 5,
"available": 2,
"breakdown": {
"base": 1,
"images": 1,
"news": 1,
"answer": 1,
"depth": 1
},
"topUpUrl": "/dashboard/billing"
}