شعار كوكلي — أداة اختصار الروابط
كوكلي
kok.li
REST API · v1

واجهة API لأداة اختصار الروابط كوكلي

باستخدام REST API من كوكلي يمكنك إنشاء الروابط القصيرة وتعديلها والحصول على إحصاءات النقرات من داخل تطبيقك أو موقعك أو بوت تيليجرام أو نظام CRM الخاص بك. المخرجات بصيغة JSON والمصادقة بمفتاح API.

البدء السريع

  1. 1
    فعّل باقة تتضمن API

    الوصول إلى API متاح في الباقات المعلَّمة بـ«الوصول إلى API» في صفحة الباقات.

  2. 2
    أنشئ مفتاح API

    انتقل إلى قسم «مفاتيح API» في لوحة التحكم واختر اسم المفتاح وصلاحياته. يُعرض المفتاح مرة واحدة فقط.

  3. 3
    أرسل أول طلب

    أرسل المفتاح في ترويسة Authorization: Bearer وأنشئ أول رابط قصير عبر POST /links.

أنشئ رابطًا قصيرًا بلغة البرمجة التي تفضّلها — العنوان الأساسي: https://kok.li/api/v1

curl -X POST https://kok.li/api/v1/links \
  -H "Authorization: Bearer kk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"longUrl": "https://example.com/very/long/url"}'

المصادقة

تتطلب جميع الطلبات (باستثناء صفحة التعريف وملف OpenAPI) مفتاح API. أرسل المفتاح في الترويسة Authorization: Bearer kk_live_… أو X-API-Key. احتفظ بالمفتاح على جانب الخادم فقط، ولا تضعه أبدًا في شيفرة المتصفح أو تطبيق الجوال.

  • يمكنك تحديد تاريخ انتهاء صلاحية وقائمة بعناوين IP المسموح بها (عنوان IP منفرد أو نطاق CIDR) لكل مفتاح.
  • يُرفض المفتاح المُبطَل أو المنتهي الصلاحية فورًا بخطأ 401.
  • يمكن لمدير الموقع تعطيل وصول مفتاح أو حساب في حال إساءة الاستخدام.

الصلاحيات (Scopes)

عند إنشاء المفتاح تحدد الأقسام التي يمكنه الوصول إليها. التزم بمبدأ «أقل صلاحية لازمة»؛ فمثلًا مفتاح لوحة التقارير يحتاج فقط إلى links:read و analytics:read.

Scopeالاستخدامالمسارات
links:readقراءة الروابطGET /links، GET /links/{code}
links:writeإنشاء الروابط وتعديلهاPOST /links، POST /links/bulk، PATCH /links/{code}
links:deleteحذف الروابطDELETE /links/{code}
analytics:readعرض إحصاءات النقراتGET /links/{code}/stats، GET /analytics
qr:readالحصول على رمز QRGET /links/{code}/qr
account:readمعلومات الحساب والاستهلاكGET /me

مسارات API

جميع المسارات نسبية إلى https://kok.li/api/v1. الاستجابات بصيغة JSON والأوقات بصيغة ISO 8601 (UTC).

POST/api/v1/links/bulk

إنشاء روابط دفعة واحدة

ينشئ حتى ٥٠ رابطاً في طلب واحد. لكل عنصر حقول «إنشاء رابط قصير» نفسها، وتُعاد نتيجة كل عنصر بشكل منفصل؛ فشل عنصر لا يمنع إنشاء البقية.

الصلاحية المطلوبة: links:write

جسم JSON
linksمطلوبarrayمصفوفة من ١ إلى ٥٠ كائناً بحقول إنشاء الرابط
مثال على الطلب
{
  "links": [
    { "longUrl": "https://example.com/a" },
    { "longUrl": "https://example.com/b", "alias": "promo-b" }
  ]
}
مثال على الاستجابة
{
  "created": 1,
  "failed": 1,
  "results": [
    { "index": 0, "ok": true, "link": { "code": "x7Kp2q", "shortUrl": "https://kok.li/x7Kp2q" } },
    { "index": 1, "ok": false, "status": 409, "code": "alias_taken", "error": "هذا الرمز المخصص مستخدم مسبقاً." }
  ]
}
GET/api/v1/analytics

إحصاءات الحساب

نفس مخرجات إحصاءات الرابط ولكن لمجموع روابط الحساب كلها. يقبل range أو from/to.

الصلاحية المطلوبة: analytics:read

GET/api/v1/links/{code}/qr

صورة رمز QR

يعيد صورة PNG أو SVG لرمز QR الخاص بالرابط القصير (الاستجابة صورة وليست JSON).

الصلاحية المطلوبة: qr:read

معاملات query
formatstringpng (الافتراضي) أو svg
sizeintegerعرض الصورة بين ٦٤ و١٠٢٤ بكسل (الافتراضي ٣٢٠)
color / bgColorhexلون الرسم والخلفية، مثل 000000 وffffff
marginintegerالهامش من ٠ إلى ١٠
eccstringمستوى تصحيح الخطأ: L أو M أو Q أو H
GET/api/v1/me

الحساب والمفتاح والاستهلاك

يعيد معلومات الحساب والباقة وصلاحيات المفتاح الحالي وحد معدّله واستهلاك الشهر الجاري.

الصلاحية المطلوبة: account:read

مثال على الاستجابة
{
  "user": { "id": "66f1…", "name": "أحمد" },
  "plan": { "tier": "pro", "label": "احترافية" },
  "key": { "prefix": "kk_live_3fa9c1", "scopes": ["links:read", "links:write"], "rateLimitPerMinute": 60 },
  "limits": { "maxKeys": 10, "maxLinks": -1, "monthlyLinkLimit": 1000 },
  "usage": { "period": "2026-09", "monthlyLinksCreated": 42, "totalLinks": 318 }
}

حدود المعدل والحصة

  • لكل مفتاح حدّ أقصى للطلبات في الدقيقة (60 افتراضيًا). يُعاد العدد المتبقي في الترويسات RateLimit-Limit، RateLimit-Remaining و RateLimit-Reset.
  • عند تجاوز الحد ستتلقى استجابة 429 بالرمز rate_limited؛ انتظر بضع ثوانٍ ثم أعد المحاولة.
  • تُحتسب الروابط المُنشأة عبر API من الحد الإجمالي والحصة الشهرية لباقتك.
  • يقبل الإنشاء الجماعي 50 رابطًا كحد أقصى في كل طلب.

الأخطاء

تتضمن استجابة الخطأ دائمًا رسالة مقروءة (بلغة ترويسة Accept-Language: الفارسية أو الإنجليزية أو العربية) في error ورمزًا إنجليزيًا ثابتًا في code؛ ابنِ منطق تطبيقك على أساس code.

{ "error": "مفتاح API هذا لا يملك الصلاحية «links:write».", "code": "insufficient_scope", "requiredScope": "links:write" }
الرمزHTTPالمعنى
missing_api_key401لم يُرسل المفتاح في ترويسة Authorization أو X-API-Key.
invalid_api_key401المفتاح غير صالح أو تم إبطاله.
key_expired401انتهت صلاحية المفتاح؛ أنشئ مفتاحاً جديداً.
key_disabled403عطّل مدير الموقع المفتاح مؤقتاً.
ip_not_allowed403عنوان IP الخاص بك ليس ضمن العناوين المسموح بها لهذا المفتاح.
api_access_denied403باقتك أو حسابك لا يملك وصولاً إلى API (يوضح الحقل reason السبب).
insufficient_scope403المفتاح لا يملك الصلاحية اللازمة لهذا المسار (الحقل requiredScope).
validation_error400جسم الطلب غير صالح (يحدد الحقل field اسم الحقل المعني).
not_found404الرابط أو المسار غير موجود.
alias_taken409الرمز المخصص مستخدم مسبقاً.
url_rejected422رُفض عنوان الوجهة لأسباب أمنية.
limit_reached403بلغت الحد الإجمالي لروابط باقتك.
quota_exceeded429نفدت الحصة الشهرية لإنشاء الروابط في باقتك.
rate_limited429تجاوز عدد الطلبات في الدقيقة حد المفتاح.

الأسئلة الشائعة حول API

إجابات موجزة عن الأسئلة الشائعة للمطورين.

هل API كوكلي مجاني؟

الوصول إلى API متاح في الباقات المعلَّمة بـ«الوصول إلى API» في صفحة الباقات. وتُخصم الروابط التي تنشئها عبر API من حصة باقتك نفسها.

أين أنشئ مفتاح API وماذا أفعل إذا تسرّب؟

أنشئ المفاتيح من قسم «مفاتيح API» في لوحة التحكم. يُعرض المفتاح مرة واحدة ونحتفظ فقط بقيمة الهاش. إذا تسرّب المفتاح فأبطله من هناك وأنشئ مفتاحاً جديداً؛ يسري الإبطال فوراً.

ما حد معدل طلبات API؟

لكل مفتاح افتراضياً ٦٠ طلباً في الدقيقة. ويظهر الحد الدقيق لمفتاحك في استجابة GET /me وفي الترويستين RateLimit-Limit وRateLimit-Remaining لكل استجابة. وعند ظهور rate_limited انتظر قليلاً وأعد المحاولة.

كيف أقيّد صلاحيات مفتاح؟

عند إنشاء المفتاح أو تعديله اختر الصلاحيات اللازمة فقط (مثلاً links:read للتقارير فقط). ويمكنك أيضاً تقييد المفتاح بعناوين IP لخوادمك وتحديد تاريخ انتهاء له.

هل لديكم مواصفات OpenAPI (Swagger)؟

نعم. ملف OpenAPI 3 متاح على العنوان https://kok.li/api/v1/openapi.json ويمكن استيراده في Postman أو Insomnia أو Swagger UI.

هل أنت مستعد؟

أنشئ أول مفتاح API وأنشئ رابطًا قصيرًا في أقل من دقيقة.

الانتقال إلى مفاتيح API