> ## 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.

# حزم SDK للتحقق من الهوية والتكاملات: الويب والجوال وZapier

> ادمج Didit للتحقق من الهوية (KYC) في تطبيقات الويب والجوال والخادم عبر حزم SDK لكل لغة رئيسية، والإضافات الجاهزة.

> [!NOTE]
>
> لتسجيل دخول المستخدم النهائي، راجع [المصادقة](https://docs.didit.me/ar/authentication/overview.md). لدمج التحقق والمراقبة وتسجيل الدخول، استخدم [موجه التكامل المشترك](https://docs.didit.me/ar/integration/integration-prompt.md). تتوفر حزمة SDK للمصادقة بشكل منفصل عن إصدارات حزم SDK للتحقق الواردة أدناه.

AI Agent Integration Prompt
        نسخ الموجّه إلى الحافظة



      
      

\<pre>

\``I want to integrate Didit identity verification into my application. Analyze my project and recommend the best integration approach.

\## My Project Context
\[Describe your stack: framework, language, web vs mobile, etc.]

\## Two Integration Approaches

Didit offers two main integration approaches. Choose based on your use case:

\### Approach 1: SDK Integration via Sessions (RECOMMENDED)
Best for: User-facing verification flows (KYC onboarding, age verification, identity checks).
How it works: Your backend creates a session, your frontend presents a verification UI using an SDK, the user completes verification, and your backend receives results via webhook.
Why recommended: Didit-hosted verification flows are A/B tested and optimized for the highest completion rates, fastest speed, and best security. The SDKs handle camera permissions, NFC, liveness detection, document capture, and all edge cases out of the box.

\### Approach 2: Standalone API (Direct REST Calls)
Best for: Server-to-server operations, batch processing, custom verification pipelines, or when you want full control over the verification UI.
How it works: Your backend calls Didit APIs directly for individual checks (ID verification, AML screening, liveness, face matching, age estimation, phone/email verification, proof of address, etc.).
When to use: When you already have your own capture UI, when you're doing backend-only batch processing, or when you need to compose individual verification steps into a custom pipeline.
Docs: Each standalone API has its own documentation under [Standalone APIs](https://docs.didit.me/standalone-apis/id-verification.md).

\## SDK Availability — All SDKs Are Available

\### For Web Apps
1\. **JavaScript SDK** (@didit-protocol/sdk-web) — RECOMMENDED for web. Works with React, Vue, Angular, Next.js, Nuxt, Svelte, and vanilla JS. Modal and inline/embedded modes. Full TypeScript support. Install: npm install @didit-protocol/sdk-web
2\. InContext Iframe — Embed verification in your page with <iframe>. Simplest setup, no npm needed. Good for quick prototypes.
3\. Redirect — Redirect user to Didit-hosted page, they return via callback URL. Best for cross-device flows or when iframe camera access is problematic.
4\. WordPress/WooCommerce Plugin — For WordPress sites. No-code setup.
5\. Shopify Plugin — For Shopify stores. No-code setup.
6\. Salesforce — Salesforce-side integration. See /integration/web-sdks/salesforce.

\### For Mobile Apps (ALWAYS prefer native SDKs over WebView)
1\. **iOS Native SDK** — RECOMMENDED for iOS. Swift/SwiftUI/UIKit. iOS 13.0+ (NFC requires iOS 15.0+). Best UX, NFC passport/ID reading, optimized camera, 54 languages. SPM: https://github.com/didit-protocol/sdk-ios. CocoaPods: pod 'DiditSDK'
2\. **Android Native SDK** — RECOMMENDED for Android. Kotlin/Jetpack Compose. minSdk 23 (Android 6.0+); ML auto-detection on API 24+. Best UX, NFC, optimized camera, 54 languages. Maven: me.didit:didit-sdk (via https://raw.githubusercontent.com/didit-protocol/sdk-android/main/repository)
3\. **React Native SDK** — RECOMMENDED for React Native. RN 0.76+ (New Architecture), iOS 13.0+ / Android API 24+. Cross-platform TypeScript API wrapping native iOS and Android SDKs. NFC support, Expo config plugin (development build required). Install: npm install @didit-protocol/sdk-react-native
4\. **Flutter SDK** — RECOMMENDED for Flutter. Flutter 3.3+, Dart 3.11+, iOS 13.0+ / Android API 23+. Cross-platform Dart API wrapping native iOS and Android SDKs. NFC support. pub.dev: didit_sdk
5\. WebView (FALLBACK ONLY) — Only use if no native SDK is available for your platform. Loses NFC, camera optimization, and biometric integration.

\### For Backend/Server
1\. **Server SDKs** — RECOMMENDED for backend code. Official typed libraries for the Didit server APIs, with webhook signature verification built in. Python: pip install didit-sdk. Node.js/TypeScript: npm install @didit-protocol/sdk-node. Go: go get github.com/didit-protocol/sdk-go. Java/Kotlin: me.didit:didit-java. PHP: composer require didit-protocol/sdk-php guzzlehttp/guzzle. Ruby: gem install didit-sdk. .NET: dotnet add package Didit. Each reads DIDIT_API_KEY. Docs: https://docs.didit.me/integration/server-sdks/overview
2\. REST API — Server-to-server, for languages without a server SDK. Create sessions, retrieve results, manage users, call standalone APIs.
3\. Webhooks — Receive real-time verification results asynchronously.
4\. Zapier — No-code automation for verification workflows.

\## SDK Session Integration Architecture (Recommended Flow)

\### Step 1: Backend creates a session
With a server SDK: client.sessions.create(workflow_id=..., vendor_data=..., callback=...) (same method in every language, in its own case). The raw request:
POST https://verification.didit.me/v3/session/
Headers: { "x-api-key": DIDIT_API_KEY, "Content-Type": "application/json" }
Body: {
"workflow_id": DIDIT_WORKFLOW_ID,
"callback": "https://myapp.com/done",
"vendor_data": "internal-user-id"
}
Response: {
"session_id": "uuid",
"session_token": "jwt",
"verification_url": "https://verify.didit.me/...",
"status": "Not Started"
}

\### Step 2: Present verification to user (choose one)
\- Web JS SDK: DiditSdk.shared.startVerification({ url: verification_url })
\- Iframe: embed verification_url in <iframe>
\- Redirect: window.location.href = verification_url
\- iOS/Android/RN/Flutter native SDK: DiditSdk.startVerification(token: session_token)

\### Step 3: Receive results via webhook
Your backend receives POST with:
\{
"session_id": "uuid",
"status": "Approved" | "Declined" | "In Review" | "In Progress" | "Abandoned",
"vendor_data": "internal-user-id",
"decision": { ... }
}
With a server SDK, webhooks.verify(raw_body, headers, WEBHOOK_SECRET) does all of the checks below and returns a typed event. Without one, verify the webhook signature (HMAC-SHA256, lowercase hex). Pick one header:
\- X-Signature-V2 = HMAC(WEBHOOK_SECRET, canonical_json) — recommended; canonical_json is the body re-serialized with sorted keys, compact separators, and unescaped Unicode (survives middleware re-encoding).
\- X-Signature = HMAC(WEBHOOK_SECRET, raw_body) — simplest, but only if you read the exact raw bytes before any parser touches them.
Also reject if abs(now - X-Timestamp) > 300 and use a constant-time compare. Full scheme: /integration/webhooks

\### Step 4: Update your database
\- "Approved" → user.verified = true, store decision data
\- "Declined" → user.verification_status = "declined", log warnings
\- "In Review" → user.verification_status = "pending_review"
\- "Abandoned" → send reminder to user
\- "Expired" → create new session

\## Decision Data Model (from webhook or GET /v3/session/{id}/decision/)
Every per-feature result is a PLURAL ARRAY (one entry per workflow node). Never code against a singular key like `nfc` or `id_verification`.
\{
"session_id": "uuid",
"session_kind": "KYC",
"status": "Approved",
"id_verifications":    [{ "node_id": "feature_ocr", "status": "Approved", "first_name": "John", "last_name": "Doe", "document_type": "Passport" }],
"nfc_verifications":   [{ "node_id": "feature_nfc", "status": "Approved" }],
"liveness_checks":     [{ "node_id": "feature_liveness", "status": "Approved", "score": 0.99, "method": "passive" }],
"face_matches":        [{ "node_id": "feature_face_match", "status": "Approved", "score": 95 }],
"aml_screenings":      [{ "node_id": "feature_aml", "status": "Approved", "total_hits": 0, "hits": [] }],
"phone_verifications": [{ "node_id": "feature_phone", "status": "Approved", "full_number": "+14155552671", "is_disposable": false }],
"email_verifications": [{ "node_id": "feature_email", "status": "Approved", "email": "alex.sample@example.com", "is_breached": false }],
"ip_analyses":         [{ "node_id": "feature_ip",    "status": "Approved" }]
}

\## Choosing the Right Approach

\| Question | → Use SDK Sessions | → Use Standalone API |
\|----------|-------------------|---------------------|
\| User-facing verification? | ✅ Yes | For custom capture UI only |
\| Need highest completion rate? | ✅ Yes (A/B tested flows) | You manage UX yourself |
\| Need NFC passport reading? | ✅ Yes (native SDKs) | Not available |
\| Batch/backend processing? | Not ideal | ✅ Yes |
\| Custom verification pipeline? | Limited to workflows | ✅ Full flexibility |
\| Fastest integration? | ✅ Minutes with UniLink | Requires more setup |

\## Rate Limits
\- POST /v3/session/: 600 session creations per minute per application (scope: session-v2-create). Applies to every application — there is no separate free-tier limit on V3 today.
\- GET endpoints: 300 requests per minute per application (generic-get).
\- Write endpoints (POST/PATCH/DELETE): 300 per minute per application (generic-write).
\- Transaction creates and event ingestion (POST /v3/transactions/, POST /v3/events/, POST /v3/events/batch/): 600 per minute per application (ingest-write), instead of the generic write budget.
\- 429 responses include X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (epoch seconds), and Retry-After. See /integration/rate-limiting.

\## Environment Variables Needed
\- DIDIT_API_KEY — from Didit Console > API & Webhooks
\- DIDIT_WEBHOOK_SECRET — from Didit Console > API & Webhooks
\- DIDIT_WORKFLOW_ID — from Didit Console > Workflows

\## AI Agent Skills (for Cursor, Claude Code, etc.)
Install pre-built skills: npx clawhub@latest install didit-sessions
GitHub: https://github.com/didit-protocol/skills

\## Docs
\- Quick Start: https://docs.didit.me/getting-started/quick-start
\- API Full Flow: https://docs.didit.me/integration/api-full-flow
\- Webhooks: https://docs.didit.me/integration/webhooks
\- Standalone APIs: https://docs.didit.me/standalone-apis/
\- API Reference: https://docs.didit.me/api-reference/overview

Based on my project, please:
1\. Recommend the best integration approach (SDK sessions vs standalone API) and the best method for my platform
2\. Create the backend endpoint to create sessions (or standalone API calls)
3\. Create the frontend component/view to present verification (if SDK approach)
4\. Create the webhook endpoint to receive results
5\. Add database schema updates to track verification status``

\</pre>



      
      

الصق في

اختر طريقة تكامل Didit المناسبة لمنصتك وحالة استخدامك.> [!NOTE]
>
> ### موصى به: تكامل SDK عبر الجلسات
>
> بالنسبة للتحقق الموجّه للمستخدم (التسجيل لإجراء KYC، والتحقق من العمر، وفحوصات الهوية)، نوصي بـ**التكامل عبر SDK من خلال الجلسات المستضافة**. تخضع تدفقات التحقق لاختبار A/B وهي مُحسّنة لتحقيق أعلى معدلات الإكمال وأعلى سرعة وأفضل أمان. جميع حزم SDK، للويب وiOS وAndroid وReact Native وFlutter، **متاحة الآن**.
>
> من الخادم الخلفي لديك، استخدم [حزمة SDK للخادم](https://docs.didit.me/ar/integration/server-sdks/overview.md) لـ Python أو Node.js أو Go أو Java أو PHP أو Ruby أو .NET لإنشاء تلك الجلسات وقراءة القرارات والتحقق من webhook. أما العمليات من خادم إلى خادم (المعالجة الدفعية والمسارات المخصصة)، فاستدعِ **واجهات API المستقلة** عبر حزم SDK نفسها. راجع [توثيق واجهة API المستقلة](https://docs.didit.me/ar/standalone-apis/id-verification.md) للاطلاع على endpoints الفردية للتحقق.> [!WARNING]
>
> إذا أطلقت جلسة Didit من منتجك الخاص، فأنت لا تزال مسؤولاً عن طبقة الإشعار والموافقة من جهة المتحكم. قبل أن يبدأ المستخدم التحقق، أفصح عن أن Didit يشغّل سير العمل، واربط إشعار الخصوصية الخاص بك، واجمع الموافقة الصريحة حيثما تقتضي ذلك لالتقاط المستند أو السيلفي أو بيانات كشف الحيوية أو البيانات البيومترية. راجع [الأمان والامتثال](https://docs.didit.me/ar/getting-started/security-compliance.md) و[العلامة البيضاء](https://docs.didit.me/ar/console/white-label.md) و[إنشاء جلسة](https://docs.didit.me/ar/sessions-api/create-session.md).يقدّم درس Didit Academy هذا تكاملاً كاملاً في جلسة واحدة: حزمة SDK، ومفاتيح API لكل بيئة، واستدعاء إنشاء الجلسة، ومعالِج webhook يتحقق من سر التوقيع.[دليل التكامل الكامل: Didit Academy](https://www.youtube.com/embed/fX03-WEu_EI?rel=0\&playsinline=1)***## الويبادمج التحقق في تطبيق الويب لديك باستخدام JavaScript أو iframe أو إعادة التوجيه.> [card] [حزم SDK للويب](https://docs.didit.me/ar/integration/web-sdks/overview.md)
>
> JavaScript SDK، أو تضمين iframe، أو إعادة التوجيه. React وVue وAngular وJavaScript العادي.> [card] [JavaScript SDK](https://docs.didit.me/ar/integration/web-sdks/javascript-sdk.md)
>
> تحكّم برمجي كامل مع استدعاءات الأحداث وTypeScript.> [card] [InContext Iframe](https://docs.didit.me/ar/integration/web-sdks/incontext-iframe.md)
>
> ضمّن التحقق في صفحتك. لا حاجة إلى خادم خلفي مع UniLink.> [card] [إعادة التوجيه](https://docs.didit.me/ar/integration/web-sdks/web-redirect.md)
>
> أعِد التوجيه إلى تدفق Didit المستضاف. يدعم الاستخدام عبر الأجهزة.***## الأجهزة المحمولةحزم SDK الأصلية لأفضل تجربة للكاميرا وNFC وكشف الحيوية على الجهاز.> [card] [حزم SDK الأصلية](https://docs.didit.me/ar/integration/native-sdks/overview.md)
>
> iOS وAndroid وReact Native وFlutter. دعم كامل لـ NFC والقياسات البيومترية.> [card] [iOS SDK](https://docs.didit.me/ar/integration/native-sdks/ios-sdk.md)
>
> SwiftUI وUIKit. قراءة جواز السفر عبر NFC. متاح الآن.> [card] [Android SDK](https://docs.didit.me/ar/integration/native-sdks/android-sdk.md)
>
> Kotlin وJetpack Compose. دعم NFC. متاح الآن.> [card] [React Native](https://docs.didit.me/ar/integration/native-sdks/react-native-sdk.md)
>
> واجهة TypeScript برمجية متعددة المنصات تغلّف حزم SDK الأصلية لـ iOS وAndroid. دعم NFC. متاح الآن.> [card] [Flutter](https://docs.didit.me/ar/integration/native-sdks/flutter-sdk.md)
>
> واجهة Dart برمجية متعددة المنصات تغلّف حزم SDK الأصلية لـ iOS وAndroid. دعم NFC. متاح الآن.> [card] [بديل WebView](https://docs.didit.me/ar/integration/web-sdks/webview-in-ios-android.md)
>
> بديل للمنصات التي لا تتوفر فيها حزمة SDK أصلية. فضّل حزم SDK الأصلية متى توفرت.***## الخادممكتبات رسمية لخادمك الخلفي: استدعاءات مُنمّطة لواجهات API الخاصة بخادم Didit، والتحقق من webhook، وفحوصات token الخاص بالمصادقة.> [card] [حزم SDK للخادم](https://docs.didit.me/ar/integration/server-sdks/overview.md)
>
> مصفوفة التثبيت، والإعداد، والأخطاء، والإصدارات.> [card] [Python](https://docs.didit.me/ar/integration/server-sdks/python.md)
>
> عملاء متزامنون وغير متزامنين. Python 3.10+.> [card] [Node.js](https://docs.didit.me/ar/integration/server-sdks/node.md)
>
> أنواع TypeScript، وESM وCommonJS. Node.js 18+.> [card] [Go](https://docs.didit.me/ar/integration/server-sdks/go.md)
>
> المكتبة القياسية فقط. Go 1.22+.> [card] [Java](https://docs.didit.me/ar/integration/server-sdks/java.md)
>
> Java وKotlin، متزامن وغير متزامن. Java 11+.> [card] [PHP](https://docs.didit.me/ar/integration/server-sdks/php.md)
>
> أي عميل HTTP متوافق مع PSR-18. PHP 8.1+.> [card] [Ruby](https://docs.didit.me/ar/integration/server-sdks/ruby.md)
>
> متوافق مع Rails، ومبني على net/http. Ruby 3.1+.> [card] [.NET](https://docs.didit.me/ar/integration/server-sdks/dotnet.md)
>
> C#، وغير متزامن، وحقن التبعيات. .NET 8 و.NET Standard 2.0.***## التكاملاتإضافات وأدوات بلا برمجة للمنصات الشائعة.> [card] [Zapier](https://docs.didit.me/ar/integration/engines/zapier.md)
>
> أتمتة التحقق باستخدام مُشغِّلات وإجراءات بلا برمجة.> [card] [WordPress وWooCommerce](https://docs.didit.me/ar/integration/web-sdks/wordpress-woocommerce.md)
>
> إضافة لمواقع WordPress وWooCommerce.> [card] [Shopify](https://docs.didit.me/ar/integration/web-sdks/shopify.md)
>
> تحقّق من المتسوقين وطبّق قيود العمر على الوصول إلى المنتجات المقيّدة بحسب العمر على Shopify.> [card] [Salesforce](https://docs.didit.me/ar/integration/web-sdks/salesforce.md)
>
> شغّل عمليات التحقق من Didit من تدفقات Salesforce وسجلاتها.***## مقارنة سريعة| المنصة | الطريقة | الحالة | NFC | الكاميرا | الأنسب لـ |
| - | - | - | :-: | - | - |
| Web | JavaScript SDK | ✅ متاح | — | المتصفح | تحكم كامل، React / Vue / Angular |
| Web | InContext Iframe | ✅ متاح | — | المتصفح | تضمين سريع، دون الحاجة إلى خادم خلفي |
| Web | Redirect | ✅ متاح | — | المتصفح | يعمل عبر الأجهزة، إعداد بسيط |
| iOS | Native SDK | ✅ متاح | ✅ | محسّنة | أفضل تجربة مستخدم، وقراءة شريحة NFC |
| Android | Native SDK | ✅ متاح | ✅ | محسّنة | أفضل تجربة مستخدم، وقراءة شريحة NFC |
| React Native | Native SDK | ✅ متاح | ✅ | محسّنة | أفضل تجربة مستخدم، وقراءة شريحة NFC |
| Flutter | Native SDK | ✅ متاح | ✅ | محسّنة | أفضل تجربة مستخدم، وقراءة شريحة NFC |
| Backend | Server SDKs (Python, Node.js, Go, Java, PHP, Ruby, .NET) | ✅ متاح | — | — | الجلسات والقرارات وواجهات API المستقلة و webhook |
| No-Code | Zapier | ✅ متاح | — | — | سير العمل الآلي |
| CMS | WordPress | ✅ متاح | — | — | مواقع WP / WooCommerce |
| Commerce | Shopify | ✅ متاح | — | — | متاجر Shopify |
| CRM | Salesforce | ✅ متاح | — | — | تدفقات وسجلات Salesforce |## الخطوات التالية> [card] [التدفق الكامل لواجهة API](https://docs.didit.me/ar/integration/api-full-flow.md)
>
> تكامل الجلسات من البداية إلى النهاية: إنشاء الجلسات و webhook والنتائج.> [card] [webhook](https://docs.didit.me/ar/integration/webhooks.md)
>
> استقبل تحديثات حالة التحقق في الوقت الفعلي.***


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