> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# التحقق من الهوية: دليل البدء السريع وإطلاق التدفق الأول

> أنشئ أول تدفق KYC مع Didit بدقائق: اضبط سير عمل بدون كود، وابدأ جلسة، واستلم إشعارات webhook. احصل على $10 رصيد مجاني شهرياً.

ينقلك دليل البدء السريع هذا من حساب Didit جديد إلى عملية تحقق مباشرة من الهوية: أنشئ حسابك، وابنِ سير عمل للتحقق من قالب جاهز، واضبط webhook وانسخ مفتاح API الخاص بك، وابدأ جلسة تحقق عبر استدعاء API واحد، واستلم القرار في الوقت الفعلي.تتكامل هذه الصفحة مع درس Academy أدناه: تسجيل شاشة مدته 19 دقيقة يوضح بناء سير عمل للتحقق في لوحة التحكم الفعلية، بدءاً من القالب وحتى سير العمل المنشور، بما في ذلك القواعد والتفرع والأسعار والرابط القابل للمشاركة.[Build Your First Verification Flow — Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?rel=0\&playsinline=1)

المطالبة للبدء السريع
        نسخ الموجّه إلى الحافظة



      
      

\<pre>

\````# Goal — ship your first Didit verification end-to-end

You are integrating Didit (https://docs.didit.me) into my project. Take me from zero to a working KYC / KYB flow: account, workflow, session, hosted UI, webhook, decision.

For the full canonical recipe (5K-token version covering SDK pick, webhook HMAC verification, every status, decision parsing), use:

https://docs.didit.me/integration/integration-prompt

That page has a "Copy Prompt" button — copy its prompt and follow it. The summary below is enough to bootstrap if you can't fetch the full prompt.

\## My application context

\<my_stack>
Stack: [framework + language, e.g. Next.js 15 + TypeScript]
Surface: [web | iOS | Android | React Native | Flutter | backend-only]
Use case: [KYC at signup | KYB at business onboarding | age gate | re-auth]
Database: [Postgres | MySQL | Mongo]
\</my_stack>

\## Steps

1\. **Register programmatically (2 calls)** — `POST https://apx.didit.me/auth/v2/programmatic/register/` then `POST https://apx.didit.me/auth/v2/programmatic/verify-email/` with the 6-char code. Save `response.application.api_key` as `DIDIT_API_KEY`.

2\. **Create a workflow** —
\```bash
curl -X POST https://verification.didit.me/v3/workflows/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workflow_label": "Standard KYC",
"workflow_type": "kyc",
"features": [
  \{"feature": "OCR"},
  \{"feature": "LIVENESS", "config": {"face_liveness_method": "PASSIVE"}},
  \{"feature": "FACE_MATCH"},
  \{"feature": "AML"}
]
}'
\```
Persist `workflow.id`.

3\. **Create a session** —
\```bash
curl -X POST https://verification.didit.me/v3/session/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"workflow_id": "$WORKFLOW_ID", "vendor_data": "user-42", "callback": "https://myapp.com/kyc/return"}'
\```
Response contains `session_id`, `url`, `session_token`. Redirect the user to `url` (or open in the SDK / an iframe).

4\. **Register a webhook destination** — `POST https://verification.didit.me/v3/webhook/destinations/` with `{"label": "Production", "url": "...", "subscribed_events": ["status.updated","data.updated","user.status.updated","user.data.updated"], "webhook_version": "v3"}` (`label` and `url` are required). Save the returned `secret_shared_key` as `DIDIT_WEBHOOK_SECRET` (`GET /v3/webhook/destinations/{destination_uuid}/` returns it again).

5\. **Receive webhooks** — verify the `X-Signature-V2` header (HMAC-SHA256 of canonical JSON; see /integration/webhooks). De-dupe on `event_id`. Respond within 5 seconds. Apply decision to your DB based on `status`.

6\. **Retrieve the decision (fallback)** — `GET https://verification.didit.me/v3/session/{session_id}/decision/`. V3 returns plural arrays (`id_verifications[]`, `liveness_checks[]`, `face_matches[]`, `aml_screenings[]`, ...). Never assume singular V2 fields.

\## Failure modes
\- Missing API key → `403 {"detail": "You do not have permission to perform this action."}` on verification.didit.me. Wrong, revoked or expired key → `401`. JWT problems on apx.didit.me → `403`.
\- Invalid `workflow_id` → `400`.
\- Webhook handler slower than 5s, or answering 5xx or 404 → Didit retries twice, after about 1 and 4 minutes, then drops the delivery. Resend it from the destination's delivery log.

\## Sources of truth (cross-check before shipping)
\- /openapi-25.json — verification API
\- /openapi-auth.json — programmatic auth
\- /reference/data-models — V3 decision shape
\- /integration/integration-prompt — canonical end-to-end prompt````

\</pre>



      
      

الصق في

**1. إنشاء حساب Didit الخاص بك**1) انتقل إلى [business.didit.me](https://business.didit.me)
2) أنشئ حساباً باستخدام SSO أو البريد الإلكتروني وكلمة المرور
3) أنشئ **المؤسسة** الخاصة بك — هذا هو المكان الذي يدير فيه فريقك سير العمل، ومفاتيح API، ونشاط التحقق**2. بناء سير عمل للتحقق**انتقل إلى **سير العمل** في الشريط الجانبي وانقر على **إنشاء جديد**. اختر نوع سير العمل:| النوع | الوصف |
| - | - |
| **سير عمل بسيط** | تعمل الخطوات بترتيب محدد — مثالي لعمليات التسجيل القياسية |
| **سير عمل قائم على العقد** | منطق تفرع مرن — ابنِ مسارات شرطية بناءً على نتائج التحقق |اختر قالباً للبدء:| القالب | حالة الاستخدام |
| - | - |
| **KYC** | تسجيل المستخدمين القياسي |
| **التحقق من العمر التكيفي** | فحص العمر عبر صورة سيلفي مع خيار الرجوع للمستند |
| **المصادقة البيومترية** | إعادة مصادقة بدون كلمة مرور عبر صورة سيلفي |
| **التحقق من العنوان** | سير عمل إثبات العنوان |قم بالتخصيص عن طريق تفعيل المكونات أو تعطيلها: كشف الحيوية، ومطابقة الوجه، وAML، وNFC، ورقم الهاتف، والبريد الإلكتروني، وغيرها.يبدأ المقطع أدناه درس Academy من الدقيقة 2:50، حيث يتم إنشاء سير عمل جديد من قالب وتهيئة إعداداته عقدة تلو الأخرى.[Creating a new workflow from a template — Didit Academy](https://www.youtube.com/embed/7-nJ3JE20i4?start=170\&rel=0\&playsinline=1)**3. تهيئة webhook ونسخ مفتاح API**انتقل إلى **المطورون** في الشريط الجانبي، ثم إلى **مفاتيح API** و**webhook**:1. أضف **رابط Webhook** الخاص بك — ترسل Didit تحديثات الحالة إلى هنا
2. انسخ **مفتاح API** الخاص بك — احتفظ به في جانب الخادم فقط، ولا تكشفه أبداً في كود الواجهة الأمامية
3. احفظ **السر المشترك** لتوقيع الوجهة كمتغير `DIDIT_WEBHOOK_SECRET` في ملف `.env` الخاص بك — وهو مطلوب للتحقق من HMAC للرأس `X-Signature-V2` في طلبات webhook الواردة> [!TIP]
>
> يمكنك **اختبار webhook مباشرة** من هذه الصفحة باستخدام بيانات وحالات مختلفة — دون الحاجة إلى تشغيل عملية تحقق كاملة. يتيح لك ذلك التأكد من أن التكامل يعمل بشكل صحيح قبل الانتقال إلى بيئة الإنتاج.**4. بدء جلسة تحقق****الخيار أ — الجلسات المستضافة** (موصى به)طريقة التكامل المفضلة لدينا. تُجري Didit اختبارات A/B باستمرار على التدفق المستضاف، وبالتالي تستمر معدلات الاكتمال والسرعة ومقاومة الاحتيال في التحسن دون الحاجة إلى نشر أي واجهة مستخدم من جانبك.في لوحة التحكم، انقر على **"+"** ← حدد سير العمل ← أنشئ رابطاً أو رمز QR. أو يمكنك إنشاء الجلسات برمجياً:```bash theme={null}
curl -X POST https://verification.didit.me/v3/session/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_id": "your-workflow-id"}'
```> [!NOTE]
>
> ستجد `workflow_id` الخاص بك أسفل **سير العمل** في الشريط الجانبي.في درس Academy الخاص بالتكامل، يحدث هذا عند الدقيقة 3:36: استدعاء إنشاء الجلسة بحقل واحد إلزامي، متبوعاً ببيانات المزوّد ورابط الاستدعاء.[Create session: the one required field — Didit Academy](https://www.youtube.com/embed/fX03-WEu_EI?start=216\&rel=0\&playsinline=1)**الخيار ب — واجهات برمجة التطبيقات المستقلة** (متقدم)استدعِ endpoint مباشرة من الخلفية البرمجية الخاصة بك — دون الحاجة إلى جلسة. هذا الخيار هو الأفضل لعمليات التكامل بين الخوادم أو التدفقات المخصصة:| Endpoint | الغرض |
| - | - |
| `POST /v3/id-verification/` | فحص المستند |
| `POST /v3/face-match/` | صورة السيلفي مقابل مستند الهوية |
| `POST /v3/aml/` | فحص العقوبات والأشخاص المعرضين سياسياً (PEP) |
| `POST /v3/passive-liveness/` | كشف التزييف العميق |راجع القائمة الكاملة في [مرجع API](https://docs.didit.me/ar/standalone-apis/id-verification.md).**5. استلام النتائج في الوقت الفعلي**ترسل Didit أحداث webhook إلى endpoint الخاص بك — دون الحاجة إلى الاستقصاء الدوري.| الحدث | المُشغِّل |
| - | - |
| `status.updated` | تغيرت حالة جلسة المستخدم أو جلسة الشركة |
| `data.updated` | تغيرت بيانات التحقق الخاصة بالجلسة أو جلسة الشركة |
| `user.status.updated` | تغيرت حالة مستخدم المزوّد |
| `user.data.updated` | تغير ملف تعريف مستخدم المزوّد أو البيانات الإجمالية |
| `business.status.updated` | تغيرت حالة شركة المزوّد |
| `business.data.updated` | تغير ملف تعريف شركة المزوّد أو البيانات الإجمالية |
| `activity.created` | تم تسجيل حدث نشاط |
| `transaction.created` | تم إنشاء معاملة |
| `transaction.status.updated` | تغيرت حالة المعاملة |راجع [Webhooks](https://docs.didit.me/ar/integration/webhooks.md) لمعرفة تنسيق payload والتحقق من التوقيع.**6. الإدارة والمراقبة**استخدم لوحة التحكم من أجل:- عرض تقدم الجلسة في الوقت الفعلي
- تنزيل تقارير PDF/CSV للامتثال
- إدراج الهويات أو الوجوه المشبوهة في قائمة الحظر
- تحديث الجلسات أو رفضها يدوياًيستعرض درس Academy حول قراءة النتائج عملية فحص جلسة حقيقية خطوة بخطوة: التحذيرات، والدرجات، وسجل الأحداث، وعمليات تسليم webhook، وتصدير ملف PDF الذي سيطلبه فريق الامتثال لديك.[How to Read a Verification Result — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?rel=0\&playsinline=1)## هل تحتاج إلى مساعدة> [card] [البريد الإلكتروني](mailto:hello@didit.me)
>
> [hello@didit.me](mailto:hello@didit.me)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.