واجهة برمجة المطورين
ادمج AssessFit مع نظام ATS لديك أو Zapier أو أدواتك الداخلية — أنشئ وظائف، وادعُ مرشحين، واسحب النتائج، واستقبل Webhooks موقعة لحظة إنهاء المرشح.
المصادقة
أنشئ مفتاح API من Employer Dashboard → Settings → API & integrations وأرسله مع كل طلب:
curl https://assessfit.com/api/v1/jobs \ -H "X-Api-Key: tp_live_…"
المفاتيح مرتبطة بمساحة العمل. تدوير المفتاح يبطل السابق فورًا. الطلبات محدودة بـ 300/دقيقة لكل IP.
نقاط النهاية
GET/api/v1/jobs
يسرد الوظائف مع عدد الدعوات والإكمالات.
POST/api/v1/jobs
أنشئ وظيفة وادعُ مرشحين في نداء واحد. تُرسل رسائل الدعوة تلقائيًا؛ وكل دعوة تستهلك رصيدًا واحدًا.
curl -X POST https://assessfit.com/api/v1/jobs \
-H "X-Api-Key: tp_live_…" -H "Content-Type: application/json" \
-d '{
"title": "Senior Accountant",
"roleKey": "accountant",
"tests": ["attention", "financial", "numerical", "conscientiousness"],
"cameraRequired": true,
"shareResults": false,
"candidates": [
{ "name": "Ana Putri", "email": "ana@example.com" }
]
}'
مفاتيح الأدوار: accountant, engineer,
sales, support,
marketing, analyst,
custom. هل يمكن إغفال tests؟ لا — مرّر مفاتيح الاختبارات التي تريد؛ وتصفح المكتبة من اللوحة.
GET/api/v1/jobs/:id
تفاصيل الوظيفة كاملة: كل دعوة بطوابعها الزمنية في القمع (tracking.sent/opened/loggedIn)، ورابط الدعوة الشخصي
link، وكائن result بعد الإكمال.
POST/api/v1/jobs/:id/invites
أضف مرشحين إلى وظيفة قائمة: {"candidates":[{"name":"…","email":"…"}]}. يعيد الدعوات المنشأة بروابطها.
GET/api/v1/invites/:id/result
اسحب نتيجة مرشح مكتملة: الدرجة الإجمالية، ودرجات كل اختبار، ودرجة النزاهة، والحكم والعلامات، وتحليل الوقت. يعيد 404 حتى ينهي المرشح.
Webhooks
عيّن رابط Webhook في Settings. يرسل AssessFit أحداث JSON بطلبات POST مع توقيع HMAC-SHA256 محسوب على المتن الخام باستخدام مفتاح API الخاص بك سرًّا:
POST https://your-app.example.com/hooks/assessfit
X-AssessFit-Event: candidate.completed
X-AssessFit-Signature: sha256=3f5a…
{
"event": "candidate.completed",
"createdAt": "2026-07-22T09:14:03.000Z",
"data": {
"inviteId": "inv_…",
"jobId": "job_…",
"jobTitle": "Senior Accountant",
"candidate": { "name": "Ana Putri", "email": "ana@example.com" },
"overall": 84,
"scores": { "attention": 83, "numerical": 100 },
"integrity": { "score": 100, "verdict": "clean" }
}
}
تحقق من التوقيع قبل الوثوق بأي حمولة:
// Node.js
const crypto = require("crypto");
function verify(rawBody, signatureHeader, apiKey) {
const expected = "sha256=" +
crypto.createHmac("sha256", apiKey).update(rawBody).digest("hex");
return crypto.timingSafeEqual(Buffer.from(signatureHeader), Buffer.from(expected));
}
يُعاد إرسال التسليم 3 مرات (فورًا، +2 ث، +8 ث). كل محاولة مرئية في
Settings → Recent webhook deliveries، ويمكنك إطلاق حدث
webhook.test في أي وقت بزر "Send Test Event". الأحداث: candidate.completed, webhook.test.
وصفات التكامل
- أنظمة ATS (مثل Greenhouse/Lever): عندما يصل مرشح إلى مرحلة "التقييم" لديك، استدعِ
POST /api/v1/jobs/:id/invites؛ وعند ورود Webhookcandidate.completed، اكتب الدرجات في ملف المرشح عبر واجهة ATS لديك. - Zapier/Make: استخدم "Webhooks by Zapier" كمشغّل مع رابط Webhook الخاص بك في AssessFit، وإجراء HTTP إلى
X-Api-Keyللدعوات. - تنبيه Slack: استقبل الـ Webhook في دالة صغيرة وانشر "🏁 Ana Putri finished Senior Accountant — 84/100, integrity clean" في قناة التوظيف لديك.