البداية السريعة
قدّم طلبك الأول إلى واجهة برمجة الكلمات العربية في أقل من 5 دقائق.
أنشئ حساباً واحصل على مفتاح API الخاص بك
توجّه إلى لوحة تحكم كلمات وأنشئ حساباً مجانياً. بعد تسجيل الدخول، انتقل إلى لوحة التحكم ← مفاتيح API وانقر على "إنشاء مفتاح API".
انسخ مفتاحك فوراً
يُعرض مفتاح API مرة واحدة فقط. خزّنه في مدير كلمات المرور أو ملف .env فوراً.
سيبدو مفتاحك هكذا: klmt_live_••••••••••••••••••••
ثبّت SDK
ثبّت حزمة @kalimalab/sdk الرسمية. تعمل في Node.js وDeno وBun وأي بيئة تشغيل JavaScript حديثة.
npm install @kalimalab/sdkpnpm add @kalimalab/sdkyarn add @kalimalab/sdkbun add @kalimalab/sdkيتطلب SDK استخدام Node.js 18+ أو أي بيئة تشغيل تدعم fetch نشطاً.
قدّم طلبك الأول
أضف مفتاح API إلى متغيرات البيئة، ثم اكتب سكريبتك الأولى:
KALIMALAB_API_KEY=klmt_live_your_key_hereimport { KalimaLab } from '@kalimalab/sdk'const client = new KalimaLab({ apiKey: process.env.KALIMALAB_API_KEY! })// Get a random Arabic wordconst word = await client.words.random()console.log(word.arabic) // e.g. "كَتَبَ"console.log(word.meaning_en) // "to write"console.log(word.root) // "كتب"console.log(word.pattern) // "فَعَلَ"// Search for 5-letter nounsconst results = await client.words.search({ letters: 5, pos: 'noun', limit: 10 })console.log(`Found ${results.meta.total} words`)results.data.forEach((w) => console.log(w.arabic))ℹتستخدم REST API مباشرةً؟
استكشف الاستجابة
هكذا تبدو استجابة الكلمة النموذجية. كل كائن كلمة يتضمن بيانات لغوية وصفية:
{ "data": { "id": "word_01j9abc123", "arabic": "كَتَبَ", "root": "كتب", "pattern": "فَعَلَ", "pos": "verb", "meaning_en": "to write", "meaning_ar": "قام بالكتابة", "transliteration": "kataba", "frequency_rank": 143, "example_sentence": "كَتَبَ الطالبُ الدرسَ" }, "error": null, "meta": { "requestId": "req_01j9xyz...", "responseTimeMs": 8 }}arabicالكلمة بتشكيل كامل.rootالجذر العربي — الأساس الثلاثي أو الرباعي.patternالوزن الصرفي (وزن) بصيغة فعل.posتصنيف الكلام: فعل، اسم، صفة، أو حرف.transliterationالتحويل الصوتي وفق ALA-LC.frequency_rankرتبة تردد الاستخدام (1 = الأكثر تردداً).استجابة البحث المُصفّى
عند تصفية الكلمات — مثلاً بعدد الأحرف أو الجذر — يُعيد API قائمة مرقّمة. هذا هو الشكل الكامل لاستجابة GET /v1/words?letters=3&root=كتب:
{ "data": [ { "id": "wrd_001", "word": "كَتَبَ", "meaning_en": "to write", "meaning_ar": "قام بفعل الكتابة", "part_of_speech": "verb", "letter_count": 3, "root": "كتب", "pattern": "فَعَلَ", "frequency_rank": 47, "is_verb": true } ], "error": null, "meta": { "requestId": "req_abc123", "responseTimeMs": 12, "page": 1, "limit": 20, "total": 47, "totalPages": 3 }}meta.pageرقم الصفحة الحالية (يبدأ من 1).meta.limitعدد النتائج في الصفحة (حتى 100).meta.totalإجمالي عدد الكلمات المطابقة عبر جميع الصفحات.meta.totalPagesإجمالي الصفحات المتاحة لهذا الاستعلام.meta.responseTimeMsوقت المعالجة من جانب الخادم بالمللي ثانية.معالجة الأخطاء
تحقق دائماً من نجاح الاستجابة قبل استخدام البيانات. أكثر خطأين شائعين هما 401 Unauthorized (مفتاح خاطئ أو مفقود) و429 Too Many Requests (تجاوز حد الطلبات).
import { KalimaLab, AuthError, RateLimitError } from '@kalimalab/sdk'const client = new KalimaLab({ apiKey: process.env.KALIMALAB_API_KEY! })async function safeSearch(letters: number, root: string) { try { const results = await client.words.search({ letters, root, limit: 20 }) return results.data } catch (err) { if (err instanceof AuthError) { // 401 — key is missing, invalid, or revoked console.error('Check your KALIMALAB_API_KEY environment variable.') throw err } if (err instanceof RateLimitError) { // 429 — too many requests; wait until the limit resets const waitMs = err.resetAt.getTime() - Date.now() console.warn(`Rate limited. Retrying in ${Math.ceil(waitMs / 1000)}s.`) await new Promise((r) => setTimeout(r, waitMs)) return safeSearch(letters, root) // retry once } throw err // unexpected error — let it bubble up }}const words = await safeSearch(3, 'كتب')console.log(words)ℹمرجع الأخطاء الكامل
الخطوات التالية
أنت مستعد! إذا واجهت أي مشاكل، تواصل مع الدعم.