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

# सत्र बैच हटाएँ API: KYC क्लीनअप

> Didit: कई KYC सत्र संख्या से या सभी एक साथ हटाएँ। 20 तक पर प्रति-सत्र परिणाम मिलता है; बड़े चयन पोल किए जाने वाले जॉब बनते हैं।



सत्र बैच हटाने का प्रॉम्प्ट
        प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें



      
      

\<pre>

\`Goal: Delete a list of User Verification (KYC) sessions, or every session, for the calling application, and control what happens to each session's face biometric data. KYC only — KYB sessions are not covered here; use DELETE /v3/session/{sessionId}/delete/ for a single KYB or KYC session.

Endpoint: POST https://verification.didit.me/v3/sessions/delete/
Auth header: x-api-key: YOUR_API_KEY
Content-Type: application/json

Request body — provide EXACTLY ONE selector:
\- session_numbers: string[] — UI-visible decimal session numbers ("#1234" style), NOT UUIDs. Each entry must be digits only (regex ^[0-9]+$). minItems: 1.
\- delete_all: true — delete every remaining KYC session for the application. When delete_all is true, session_numbers is ignored.

Narrowing delete_all (optional, only together with delete_all: true):
\- filter_<name> - any filter of GET /v3/sessions/ (see /sessions-api/list-sessions) prefixed with filter_, with the same values: filter_status, filter_workflow_id, filter_date_from, filter_date_to, filter_vendor_data, filter_country, filter_document_type, filter_warning, filter_search and the others. Filters that take several values in GET /v3/sessions/ (status, workflow_id, country, region, document_type, document_name, session_type, warning, organization_name) accept a comma-separated string or an array. The others take one value: an array is joined into one comma-separated value, so several dates, UUIDs or api_service values are refused with 400, and several texts are not matched as alternatives. An empty value is ignored and does not narrow the selection.
\- An unknown filter_* key returns 400 { "filter_<name>": "Unknown filter." } and a value that cannot be read returns 400 keyed by that filter_* key (for example { "filter_date_from": ["Enter a valid date."] }). Nothing is deleted in either case.
\- A deletion job applies the same filters.

Optional retention and instruction fields (same semantics as the single-session endpoint, applied to every matched session):
\- retain_face_embeddings (boolean | null) — true keeps an image-free biometric template anchored to each session's User; false deletes the embedding with the session; omit/null follows the application's face_retention_policy.
\- face_retention_days (integer 1-3650) — required when retaining unless the application sets face_retention_days.
\- face_retention_deadline (ISO 8601 datetime, future) — optional hard expiry.
\- deletion_instruction ("operational_session_delete" default | "privacy_erasure") — privacy_erasure purges every retained template for each session's User and never retains a new one. Cannot be combined with retain_face_embeddings: true (400).
\- instruction_id (string, max 255) — your durable reference for this instruction; recorded on the audit trail and on every retained template.

curl:
curl -X POST 'https://verification.didit.me/v3/sessions/delete/' \
-H "x-api-key: YOUR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"session_numbers": ["1001", "1002", "1003"]}'

Response: the number of matching sessions decides, whether they are selected by session_numbers or with delete_all.

Up to 20 matching sessions: they are deleted in the request. Response 200 (this endpoint no longer returns 204):
\{
"results": [
\{"session_id": "<uuid>", "session_number": 1001, "face_retention_outcome": "deleted", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0},
\{"session_id": "<uuid>", "session_number": 1002, "face_retention_outcome": "retained_with_user", "biometric_template_uuid": "<uuid>", "biometric_template_expires_at": "<ISO 8601 datetime>", "deleted_child_verifications": 0},
\{"session_id": "<uuid>", "session_number": 1003, "face_retention_outcome": "failed_retryable", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0}
]
}
face_retention_outcome per session:
\- deleted: session and face embedding deleted (default).
\- retained_with_user: session deleted; an image-free biometric template stays anchored to the User until biometric_template_expires_at (manage it via /v3/biometric-templates/).
\- none: the session had no face embedding.
\- ineligible_no_vendor_user: retention requested but the session has no linked User; session and embedding deleted.
\- failed_retryable: the group this session was deleted with could not be deleted (a storage service, a biometric store or a monitoring provider was unavailable). That session is NOT deleted and is still in place; re-run the request for it. Other groups in the same request are unaffected.
deleted_child_verifications is always 0 here: this endpoint deletes KYC sessions only.

More than 20 matching sessions: they are deleted in the background. Response 202 with a deletion job:
\{"job_id": "<uuid>", "status": "PENDING", "total": 250, "processed": 0, "outcomes": {"deleted": 0, "none": 0, "retained_with_user": 0, "ineligible_no_vendor_user": 0, "failed_retryable": 0, "already_deleted": 0}, "deleted_child_verifications": 0, "error": null, "created_at": "<datetime>", "completed_at": null}
Poll GET /v3/sessions/delete/{job_id}/ every few seconds until status is COMPLETED or FAILED. The job reports counts per outcome, never which sessions it deleted. A delete_all job deletes only the sessions created before the request. A FAILED job explains why in error; the sessions it had not reached are still in place, so repeat the request to delete them.

Side effects:
\- Each matched session is deleted along with everything it produced, including every verification attempt: its decision, its extracted data, its KYC / Face / AML / Location / POA / Phone / Email records, its reviews and activity log, and all of its stored files.
\- The sessions stop appearing in GET /v3/sessions/ and GET /v3/session/{sessionId}/decision/, and media URLs issued before the call stop resolving.
\- Webhook deliveries still queued for the deleted sessions, and their retries, are dropped. Webhooks already delivered are not affected.
\- Share tokens issued for the sessions are NOT revoked, but there is nothing left for them to import: an import with one returns 400 {"share_token": ["Original session does not exist."]}.
\- Blocklist entries created from the sessions are NOT removed.
\- Credits already consumed by the verifications are NOT refunded.
\- The parent User entities are NOT deleted; use POST /v3/users/delete/ for those (that also purges their retained templates).
\- NO deletion webhook is emitted.
\- Sessions are deleted in groups; a failure in one group does not roll back the others. Numbers that no longer match a live session are skipped and do not appear in results.

Idempotency: re-running with the same session_numbers deletes nothing more (numbers that no longer match a session are skipped). Deletion is permanent and cannot be undone.

Failure modes:
\- 400: validation, nothing deleted:
\{ "session_numbers": ["This field is required unless delete_all is true."] }
\{ "session_numbers": ["All session_numbers must be numeric."] }
\{ "retain_face_embeddings": ["Privacy erasure cannot retain biometric templates."] }
\{ "detail": "A finite biometric-template retention duration is required." }
\{ "filter_reviewer": "Unknown filter." }
\{ "filter_date_from": ["Enter a valid date."] }
\- 409: at least one selected session is part of a finalized regulatory report. Nothing is deleted. The body has code: in_filed_report and reports[] with uuid, report_number, report_type and case_uuid. Delete the reports, then repeat the request.
\- 403: API key invalid or application not allowed. { "detail": "You do not have permission to perform this action." }

Migration note: until this release the endpoint returned 204 with an empty body; it now returns 200 with results[], or 202 with a deletion job when more than 20 sessions match. Existing applications stay on delete_with_session until you explicitly change the policy.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

यहाँ पेस्ट करें

## व्यवहारहर मेल खाने वाले सत्र को ठीक उसी तरह हटाया जाता है जैसे [सत्र हटाएँ](https://docs.didit.me/hi/sessions-api/delete-session.md) से हटाया जाता है: सत्र, उसके सभी सत्यापन प्रयास, उसका निर्णय और निकाला गया डेटा, उसके सुविधा रिकॉर्ड, और उसकी सभी संग्रहीत फ़ाइलें हटा दी जाती हैं। सत्र हर read endpoint से गायब हो जाता है, और पहले जारी किए गए मीडिया URL काम करना बंद कर देते हैं। हटाए गए सत्र के लिए कतार में रखी गई webhook डिलीवरी और उनके पुनः प्रयास छोड़ दिए जाते हैं; जो webhook पहले ही डिलीवर हो चुके हैं, उन पर कोई असर नहीं पड़ता। हटाना स्थायी है और इसे पलटा नहीं जा सकता।यदि चयनित सत्रों में से कोई भी अंतिम रूप दी गई नियामक रिपोर्ट का हिस्सा है, तो पूरा अनुरोध `409` लौटाता है और कुछ भी नहीं हटाया जाता। रिस्पॉन्स में `code: in_filed_report` होता है और हर रिपोर्ट का नाम दिया जाता है। हर रिपोर्ट को [रिपोर्ट हटाएँ](https://docs.didit.me/hi/management-api/regulatory-reports/delete.md) से हटाएँ, फिर यह अनुरोध दोबारा भेजें। रिपोर्ट हटाने से सत्र नहीं हटता; जब तक आप यह अनुरोध दोबारा नहीं भेजते, सत्र बना रहता है।`session_numbers` से चुने गए हों या `delete_all` से, मेल खाने वाले सत्रों की संख्या तय करती है कि अनुरोध का उत्तर कैसे दिया जाएगा:| मेल खाने वाले सत्र | रिस्पॉन्स |
| - | - |
| 20 तक | उन्हें हटाने के बाद `200 OK`, जिसके `results` में हर मेल खाने वाले सत्र का एक परिणाम होता है। |
| 20 से अधिक | एक हटाने वाले जॉब के साथ `202 Accepted`। सत्र पृष्ठभूमि में हटाए जाते हैं; जॉब पूरा होने तक [सत्र हटाने का जॉब प्राप्त करें](https://docs.didit.me/hi/management-api/sessions/get-deletion-job.md) पर पोल करते रहें। |परिणाम तभी पुष्टि करता है कि सत्र हटा दिया गया है, जब उसका `face_retention_outcome` `failed_retryable` न हो: ऐसा सत्र **नहीं** हटाया गया है और अब भी अपनी जगह पर है, इसलिए ऐसे परिणाम को हटाने की पुष्टि नहीं, बल्कि पुनः प्रयास योग्य विफलता मानें।
आपके एप्लिकेशन में किसी लाइव KYC सत्र से मेल न खाने वाली संख्याएँ छोड़ दी जाती हैं और `results` में नहीं आतीं।## `delete_all` को फ़िल्टर से सीमित करना`delete_all: true` के साथ आप [सत्र सूची](https://docs.didit.me/hi/sessions-api/list-sessions.md) के फ़िल्टर से चयन को सीमित कर सकते हैं। हर फ़िल्टर के आगे `filter_` लगा होता है।
उनके मान वही होते हैं जो क्वेरी पैरामीटर के होते हैं।
जो फ़िल्टर कई मान लेते हैं (`status`, `workflow_id`, `country`, `region`, `document_type`, `document_name`, `session_type`, `warning`, `organization_name`) वे अल्पविराम से अलग की गई स्ट्रिंग या एरे स्वीकार करते हैं:```json theme={null}
{
  "delete_all": true,
  "filter_status": ["Declined"],
  "filter_workflow_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "filter_date_from": "2026-09-01",
  "filter_date_to": "2026-09-30"
}
```- फ़िल्टर केवल `delete_all` के साथ लागू होते हैं; `session_numbers` के साथ उनकी जाँच होती है, पर चयन नहीं बदलता।
- बाकी हर फ़िल्टर एक ही मान लेता है।
  एरे को अल्पविराम से अलग किए गए एक मान में जोड़ दिया जाता है, इसलिए कई तारीखें, UUID या `api_service` मान दिए जाने पर `400` लौटता है, और कई `vendor_data`, `search` या `screened_full_name` टेक्स्ट को वैकल्पिक मिलानों के रूप में नहीं देखा जाता।
- खाली मान वाला फ़िल्टर अनदेखा किया जाता है, इसलिए वह चयन को सीमित नहीं करता।
- कोई अज्ञात `filter_*` कुंजी `400` `{"filter_reviewer": "Unknown filter."}` लौटाती है, और जो मान पढ़ा नहीं जा सकता, उसके लिए उस `filter_*` कुंजी के साथ `400` मिलता है, जैसे `{"filter_date_from": ["Enter a valid date."]}`।
  दोनों स्थितियों में कुछ नहीं हटाया जाता, इसलिए गलत टाइप किया गया फ़िल्टर हटाने के दायरे को कभी हर सत्र तक नहीं बढ़ाता।
- हटाने वाला जॉब वही फ़िल्टर लागू करता है, और हर `delete_all` की तरह वह केवल अनुरोध से पहले बनाए गए सत्रों पर लागू होता है।## प्रतिधारण और निर्देश फ़ील्डयह endpoint उन्हीं वैकल्पिक फ़ील्ड्स को स्वीकार करता है जो एकल-सत्र endpoint स्वीकार करता है, और उन्हें हर मेल खाने वाले सत्र पर लागू करता है:| फ़ील्ड | प्रकार | विवरण |
| - | - | - |
| `retain_face_embeddings` | boolean या null | इस अनुरोध के लिए एप्लिकेशन की `face_retention_policy` को बदलें। |
| `face_retention_days` | integer (1-3650) | बनाए रखे गए टेम्पलेट के लिए सीमित अवधि। प्रतिधारण के समय आवश्यक, जब तक एप्लिकेशन `face_retention_days` सेट न करे। |
| `face_retention_deadline` | datetime (ISO 8601) | वैकल्पिक कठोर समाप्ति, जो भविष्य में होनी चाहिए। |
| `deletion_instruction` | `operational_session_delete` (डिफ़ॉल्ट) या `privacy_erasure` | `privacy_erasure` हर सत्र के लिए सत्र हटाने से पहले उसके उपयोगकर्ता के हर बनाए रखे गए टेम्पलेट को मिटा देता है, और इसे `retain_face_embeddings: true` के साथ नहीं जोड़ा जा सकता। |
| `instruction_id` | string (अधिकतम 255) | इस निर्देश के लिए आपका स्थायी संदर्भ। इसे ऑडिट ट्रेल और हर बनाए रखे गए टेम्पलेट पर दर्ज किया जाता है। |बनाए रखे गए टेम्पलेट में क्या है और क्या नहीं, `expires_at` कैसे गणना होता है, और प्राइवेसी-इरेज़र निर्देश क्या करता है, यह जानने के लिए [सत्र हटाएँ](https://docs.didit.me/hi/sessions-api/delete-session.md#फ़ेस-बायोमेट्रिक-डेटा-हटाना-या-रखना) देखें।## हर सत्र का परिणाम20 तक मेल खाने वाले सत्रों के लिए `200 OK` हर सत्र का एक परिणाम लौटाता है:```json theme={null}
{
  "results": [
    { "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02", "session_number": 1001, "face_retention_outcome": "deleted", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0 },
    { "session_id": "b8e1d2c3-4f5a-4b6c-8d7e-9f0a1b2c3d4e", "session_number": 1002, "face_retention_outcome": "retained_with_user", "biometric_template_uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b", "biometric_template_expires_at": "2027-10-09T10:15:00Z", "deleted_child_verifications": 0 },
    { "session_id": "7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c", "session_number": 1003, "face_retention_outcome": "ineligible_no_vendor_user", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0 },
    { "session_id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f", "session_number": 1004, "face_retention_outcome": "failed_retryable", "biometric_template_uuid": null, "biometric_template_expires_at": null, "deleted_child_verifications": 0 }
  ]
}
```हर परिणाम में वही फ़ील्ड होते हैं जो [सत्र हटाएँ](https://docs.didit.me/hi/sessions-api/delete-session.md#रिस्पॉन्स) रिस्पॉन्स में होते हैं। `biometric_template_expires_at` वह समय है जब बनाए रखा गया टेम्पलेट हटाया जाएगा, और `deleted_child_verifications` यहाँ हमेशा `0` रहता है, क्योंकि यह endpoint केवल KYC सत्र हटाता है।| `face_retention_outcome` | अर्थ |
| - | - |
| `deleted` | सत्र और उसका फ़ेस एम्बेडिंग हटा दिए गए हैं। डिफ़ॉल्ट व्यवहार। |
| `retained_with_user` | सत्र हटा दिया गया है। एक इमेज-रहित बायोमेट्रिक टेम्पलेट उपयोगकर्ता से जुड़ा रहता है; उसका ID `biometric_template_uuid` है। |
| `none` | सत्र में हटाने या बनाए रखने के लिए कोई फ़ेस एम्बेडिंग नहीं था। |
| `ineligible_no_vendor_user` | प्रतिधारण माँगा गया था, पर सत्र किसी उपयोगकर्ता से जुड़ा नहीं है, इसलिए कोई टेम्पलेट नहीं जोड़ा जा सकता। सत्र और उसका एम्बेडिंग हटा दिए गए हैं। |
| `failed_retryable` | जिस समूह के साथ यह सत्र हटाया जाना था, वह हटाया नहीं जा सका, क्योंकि कोई स्टोरेज सेवा, बायोमेट्रिक स्टोर या मॉनिटरिंग प्रदाता उपलब्ध नहीं था। यह सत्र **नहीं** हटाया गया है और अब भी अपनी जगह पर है। इसके लिए अनुरोध दोबारा चलाएँ; पुनः प्रयास एक ही टेम्पलेट तक पहुँचते हैं। |सत्र समूहों में हटाए जाते हैं। जब कोई समूह नहीं हटाया जा सकता, तो उसके हर सत्र को `failed_retryable` के रूप में रिपोर्ट किया जाता है; दूसरे समूह प्रभावित नहीं होते और हटे रहते हैं।## बड़े चयन एक जॉब के रूप में चलते हैंजब 20 से अधिक सत्र मेल खाते हैं, तो रिस्पॉन्स `results` के बजाय हटाने वाले जॉब के साथ `202 Accepted` होता है:```json theme={null}
{
  "job_id": "5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b",
  "status": "PENDING",
  "total": 250,
  "processed": 0,
  "outcomes": { "deleted": 0, "none": 0, "retained_with_user": 0, "ineligible_no_vendor_user": 0, "failed_retryable": 0, "already_deleted": 0 },
  "deleted_child_verifications": 0,
  "error": null,
  "created_at": "2026-10-09T10:15:00Z",
  "completed_at": null
}
````status` के `COMPLETED` या `FAILED` होने तक हर कुछ सेकंड में [सत्र हटाने का जॉब प्राप्त करें](https://docs.didit.me/hi/management-api/sessions/get-deletion-job.md) को बार-बार जाँचें।- जॉब यह बताता है कि प्रत्येक परिणाम में कितने सत्र आए, यह नहीं बताता कि उसने किन सत्रों को हटाया।
- `delete_all` जॉब केवल आपके अनुरोध से पहले बनाए गए सत्र हटाता है। उसके चलते समय शुरू हुए सत्र नहीं हटाए जाते।
- आपके अनुरोध के प्रतिधारण और निर्देश फ़ील्ड उन सभी सत्रों पर लागू होते हैं जिन्हें जॉब हटाता है।
- यदि कोई समूह अभी नहीं हटाया जा सकता, तो जॉब उसके लिए स्वयं पुनः प्रयास करता है।
- `FAILED` जॉब अपना कारण `error` में बताता है। जिन सत्रों तक वह नहीं पहुँच पाया, वे अब भी मौजूद हैं: उन्हें हटाने के लिए अनुरोध दोहराएँ।## उदाहरण> [tab] संख्या के अनुसार हटाएँ
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"session_numbers": ["1001", "1002", "1003"]}'
> ```> [tab] हटाएँ और टेम्पलेट रखें
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "session_numbers": ["1001", "1002"],
>     "retain_face_embeddings": true,
>     "face_retention_days": 365,
>     "instruction_id": "post-approval-cleanup-2026-08"
>   }'
> ```> [tab] गोपनीयता के लिए मिटाना
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "session_numbers": ["1001"],
>     "deletion_instruction": "privacy_erasure",
>     "instruction_id": "dsar-2026-0142"
>   }'
> ```> [tab] सभी हटाएँ और जॉब की जाँच करें
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/sessions/delete/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"delete_all": true}'
>
> # More than 20 sessions matched: the response is 202 with a job_id.
> curl https://verification.didit.me/v3/sessions/delete/JOB_ID/ \
>   -H "x-api-key: YOUR_API_KEY"
> ```## 204 रिस्पॉन्स से माइग्रेशनइस रिलीज़ से पहले यह endpoint `204 No Content` लौटाता था। अब यह `results[]` के साथ `200 OK`, या 20 से अधिक मेल खाने वाले सत्रों के लिए हटाने वाले जॉब के साथ `202 Accepted` लौटाता है। जो क्लाइंट `204` की जाँच करते हैं, उन्हें अपडेट करें। डिफ़ॉल्ट हटाने का व्यवहार नहीं बदला है: मौजूदा एप्लिकेशन तब तक `delete_with_session` पर रहते हैं जब तक आप नीति को स्पष्ट रूप से नहीं बदलते।## संबंधित- [सत्र हटाएँ](https://docs.didit.me/hi/sessions-api/delete-session.md)
- [सत्र हटाने का जॉब प्राप्त करें](https://docs.didit.me/hi/management-api/sessions/get-deletion-job.md)
- [बायोमेट्रिक टेम्पलेट](https://docs.didit.me/hi/management-api/biometric-templates/overview.md)
- [डेटा प्रतिधारण](https://docs.didit.me/hi/console/data-retention.md)


## OpenAPI

````yaml hi/openapi-25.json POST /v3/sessions/delete/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: पहचान सत्यापन API। x-api-key हेडर के साथ प्रमाणीकृत करें।
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/sessions/delete/:
    post:
      tags:
        - Sessions
      summary: session_number द्वारा KYC सत्रों को बल्क में हटाएं
      description: >-
        उपयोगकर्ता सत्यापन (KYC) सत्रों को उनके संख्यात्मक `session_number`
        द्वारा, या `delete_all: true` के साथ अपने एप्लिकेशन में प्रत्येक KYC
        सत्र को बल्क में हटाएं।


        `session_number` Console सत्र सूची में दिखाई देने वाला मानव-अनुकूल
        इनक्रीमेंटिंग काउंटर है और इसे create-session तथा decision endpoints
        द्वारा `session_number` के रूप में लौटाया जाता है; यह `session_id` UUID
        **नहीं** है। UUID द्वारा किसी सत्र को हटाने के लिए, या व्यवसाय सत्यापन
        (KYB) सत्र को हटाने के लिए (जिसे यह endpoint कभी नहीं छूता), इसके बजाय
        `DELETE /v3/session/{sessionId}/delete/` का उपयोग करें।


        **अनुरोध में अधिकतम 20 सत्र हटाए जाते हैं; इससे अधिक सत्र एक जॉब के रूप
        में चलते हैं।** मेल खाने वाले सत्रों की संख्या यह तय करती है, चाहे
        उन्हें `session_numbers` द्वारा चुना गया हो या `delete_all` के साथ:

        - अधिकतम 20 मेल खाने वाले सत्र: वे रिस्पॉन्स से पहले हटा दिए जाते हैं,
        जो `results[]` में प्रति सत्र एक प्रविष्टि के साथ `200` होता है।

        - 20 से अधिक: रिस्पॉन्स विलोपन जॉब के साथ `202` होता है, और सत्र
        बैकग्राउंड में हटाए जाते हैं। `GET /v3/sessions/delete/{job_id}/` को तब
        तक पोल करें जब तक कि `status` `COMPLETED` या `FAILED` न हो जाए। एक जॉब
        प्रति परिणाम केवल संख्या रिपोर्ट करता है, यह कभी नहीं बताता कि उसने कौन
        से सत्र हटाए हैं। एक `delete_all` जॉब केवल अनुरोध से पहले बनाए गए सत्रों
        को हटाता है; इसके चलने के दौरान शुरू किए गए सत्र नहीं हटाए जाते हैं।


        प्रत्येक हटाए गए सत्र के साथ ठीक वही व्यवहार किया जाता है जो एकल-सत्र
        विलोपन endpoint करता है: सत्र, उसमें मौजूद प्रत्येक सत्यापन प्रयास, उसका
        निर्णय और निकाला गया डेटा, उससे संबंधित फ़ीचर रिकॉर्ड (पहचान सत्यापन,
        फ़ेस, लाइवनेस, चेहरा मिलान, इत्यादि) और उसकी सभी संग्रहीत फ़ाइलें हटा दी
        जाती हैं, यह प्रत्येक रीड endpoint से गायब हो जाता है, और पहले जारी किए
        गए मीडिया URLs काम करना बंद कर देते हैं। हटाए गए सत्र के लिए कतार में
        मौजूद webhook डिलीवरी और उनके पुनः प्रयासों को छोड़ दिया जाता है; पहले
        से डिलीवर किए गए webhooks प्रभावित नहीं होते हैं। ब्लॉकलिस्ट
        प्रविष्टियाँ **नहीं** हटाई जाती हैं, पहले से उपयोग किए गए क्रेडिट **वापस
        नहीं** किए जाते हैं, और मूल User एंटिटीज़ **नहीं** हटाई जाती हैं (उनके
        लिए `POST /v3/users/delete/` का उपयोग करें); विलोपन के लिए कोई webhook
        उत्सर्जित नहीं किया जाता है। विलोपन स्थायी और अपरिवर्तनीय है।


        **चयन सिमेंटिक्स:**

        - `delete_all: true` के साथ आप `GET /v3/sessions/` के फ़िल्टर का उपयोग
        करके चयन को सीमित कर सकते हैं, जिनमें से प्रत्येक के आगे `filter_`
        उपसर्ग लगा होता है (उदाहरण के लिए `filter_status`, `filter_workflow_id`,
        `filter_date_from`)। List Sessions में कई मान लेने वाले फ़िल्टर
        (`status`, `workflow_id`, `country`, `region`, `document_type`,
        `document_name`, `session_type`, `warning`, `organization_name`)
        अल्पविराम से अलग की गई स्ट्रिंग या एक ऐरे स्वीकार करते हैं; अन्य केवल एक
        मान लेते हैं। एक खाली मान को नज़रअंदाज़ कर दिया जाता है। फ़िल्टर केवल
        `delete_all` के साथ ही लागू होते हैं, और एक विलोपन जॉब समान फ़िल्टर लागू
        करता है।

        - एक अज्ञात `filter_*` कुंजी, या एक फ़िल्टर मान जिसे पढ़ा नहीं जा सकता,
        कुछ भी हटाए जाने से पहले पूरे अनुरोध को `400` के साथ अस्वीकार कर देता
        है, ताकि गलत टाइप किया गया फ़िल्टर कभी भी विलोपन को हर सत्र तक विस्तृत न
        कर दे।

        - `session_numbers` में ऐसी प्रविष्टियाँ जो आपके एप्लिकेशन में किसी लाइव
        KYC सत्र से मेल नहीं खाती हैं (अज्ञात संख्याएँ, पहले से हटाए गए सत्र, या
        किसी अन्य एप्लिकेशन के स्वामित्व वाले सत्र) को **चुपचाप छोड़ दिया जाता
        है**: वे `results` में दिखाई नहीं देते हैं और किसी जॉब के `total` में
        नहीं गिने जाते हैं।

        - सत्यापन विफलताएं (एक गैर-संख्यात्मक प्रविष्टि, एक खाली सूची, न तो
        `session_numbers` और न ही `delete_all` प्रदान किया जाना, या ऐसा टेम्पलेट
        प्रतिधारण जिसका एप्लिकेशन पालन नहीं कर सकता) **पूरे अनुरोध** को `400` के
        साथ अस्वीकार कर देती हैं और कुछ भी नहीं हटाती हैं।

        - सत्र समूहों में हटाए जाते हैं। यदि कोई समूह नहीं हटाया जा सकता है
        (उदाहरण के लिए स्टोरेज सेवा अनुपलब्ध होने के कारण), तो उस समूह के
        प्रत्येक सत्र को `face_retention_outcome: failed_retryable` के रूप में
        रिपोर्ट किया जाता है और वह यथावत रहता है; अन्य समूह अप्रभावित रहते हैं।
        उन सत्रों के लिए अनुरोध दोहराएं। एक जॉब ऐसे समूह का स्वतः पुनः प्रयास
        करता है।

        - सूची की लंबाई पर कोई प्रलेखित सीमा नहीं है; साझा राइट रेट लिमिट (नीचे)
        ही व्यावहारिक सीमा है।


        **फ़ेस बायोमेट्रिक डेटा:** वैकल्पिक फ़ील्ड `retain_face_embeddings`,
        `face_retention_days`, `face_retention_deadline`,
        `deletion_instruction`, और `instruction_id` का वही अर्थ है जो `DELETE
        /v3/session/{sessionId}/delete/` पर है और ये प्रत्येक मेल खाने वाले सत्र
        पर लागू होते हैं। प्रत्येक परिणाम अपने स्वयं के `face_retention_outcome`
        की रिपोर्ट करता है।


        **रिस्पॉन्स:** अधिकतम 20 मेल खाने वाले सत्रों के लिए `results[]` के साथ
        `200 OK`, या अधिक के लिए विलोपन जॉब के साथ `202 Accepted`। प्रत्येक
        परिणाम विलोपन की पुष्टि करता है सिवाय `face_retention_outcome:
        failed_retryable` के, जो ऐसे सत्र की रिपोर्ट करता है जिसे हटाया नहीं गया
        था और जिसका पुनः प्रयास किया जाना चाहिए। इस endpoint के पुराने संस्करणों
        ने `204 No Content` लौटाया था; उन क्लाइंट्स को अपडेट करें जो `204` पर
        निर्भर हैं।


        **आइडेम्पोटेंसी:** वही अनुरोध दोहराने से कुछ भी अतिरिक्त नहीं हटता: वे
        संख्याएं जो अब किसी सत्र से मेल नहीं खाती हैं, उन्हें छोड़ दिया जाता है।


        **`delete_all: true` (विनाशकारी):** एप्लिकेशन में शेष **प्रत्येक** KYC
        सत्र को हटा देता है; सेट होने पर `session_numbers` को नज़रअंदाज़ कर दिया
        जाता है। इसमें कोई पुष्टिकरण चरण नहीं है और इसे पूर्ववत नहीं किया जा
        सकता।


        **प्रमाणीकरण:** `x-api-key` हेडर में API कुंजी। अनुपलब्ध या अमान्य
        क्रेडेंशियल्स `403` (`{"detail": "You do not have permission to perform
        this action."}`) लौटाते हैं; यह API कभी भी `401` नहीं लौटाता है।


        **रेट लिमिट:** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300
        अनुरोध/मिनट का साझा राइट बजट; इसे पार करने पर `429` प्राप्त होता है।


        यह endpoint केवल API कुंजियाँ स्वीकार करता है। Business Console
        उपयोगकर्ता Bearer टोकन को `403` के साथ अस्वीकार कर दिया जाता है
        (एकल-सत्र विलोपन के विपरीत, जो दोनों को स्वीकार करता है)।


        **दाखिल नियामक रिपोर्टें:** यदि चयनित डेटा किसी अंतिम रूप दी गई नियामक
        रिपोर्ट में है, तो पूरे अनुरोध को `409` के साथ अस्वीकार कर दिया जाता है
        और कुछ भी नहीं हटाया जाता है। बॉडी `code: in_filed_report` का उपयोग करती
        है और प्रत्येक रिपोर्ट को `uuid`, `report_number`, `report_type` और
        `case_uuid` के साथ निर्दिष्ट करती है। रिपोर्ट हटाएं, फिर अनुरोध दोहराएं।
      operationId: batch_delete_sessions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                session_numbers:
                  type: array
                  description: >-
                    हटाए जाने वाले KYC सत्रों के संख्यात्मक `session_number`
                    मान, केवल-अंक स्ट्रिंग के रूप में (JSON नंबर भी स्वीकार किए
                    जाते हैं और ज़बरन बदले जाते हैं)। आवश्यक है जब तक कि
                    `delete_all` `true` न हो; एक खाली सूची `400` लौटाती है। कोई
                    भी गैर-अंक प्रविष्टि पूरे अनुरोध को `400` के साथ अस्वीकार कर
                    देती है (जब तक कि `delete_all` `true` न हो, जिस स्थिति में
                    सत्यापन छोड़ दिया जाता है और प्रविष्टियों को अनदेखा कर दिया
                    जाता है)। वे नंबर जो आपके एप्लिकेशन में किसी लाइव सत्र से
                    मेल नहीं खाते हैं, उन्हें चुपचाप छोड़ दिया जाता है।
                  items:
                    type: string
                    pattern: ^[0-9]+$
                    example: '1001'
                  minItems: 1
                  example:
                    - '1001'
                    - '1002'
                    - '1003'
                delete_all:
                  type: boolean
                  description: >-
                    जब `true` होता है, तो कॉलिंग एप्लिकेशन में प्रत्येक शेष KYC
                    सत्र हटा दिया जाता है और `session_numbers` को अनदेखा कर दिया
                    जाता है, जब तक कि आप `filter_*` कुंजियों के साथ चयन को सीमित
                    न करें। 20 से अधिक मेल खाने वाले सत्र एक विलोपन जॉब (`202`)
                    के रूप में चलते हैं जो केवल अनुरोध से पहले बनाए गए सत्रों को
                    कवर करता है। डिफ़ॉल्ट रूप से `false` होता है। अपरिवर्तनीय;
                    कोई पुष्टि चरण नहीं है।
                  default: false
                  example: false
                retain_face_embeddings:
                  type: boolean
                  nullable: true
                  description: >-
                    इस विलोपन के लिए एप्लिकेशन की `face_retention_policy` को
                    ओवरराइड करें। `true` सत्र हटाए जाने के बाद सत्र के
                    उपयोगकर्ता से जुड़े एक छवि-मुक्त चेहरे के बायोमेट्रिक
                    टेम्पलेट को रखता है; `false` सत्र के साथ फ़ेस एम्बेडिंग को
                    हटा देता है; एप्लिकेशन नीति का पालन करने के लिए छोड़ दें या
                    `null` रखें। KYB सत्रों के लिए और बिना फ़ेस एम्बेडिंग वाले
                    सत्रों के लिए अनदेखा किया जाता है।
                  example: true
                face_retention_days:
                  type: integer
                  minimum: 1
                  maximum: 3650
                  description: >-
                    किसी बनाए रखे गए टेम्पलेट के लिए सीमित प्रतिधारण अवधि, दिनों
                    में। जब कोई टेम्पलेट बनाए रखा जाता है तो यह आवश्यक होता है,
                    जब तक कि एप्लिकेशन पहले से ही `face_retention_days` सेट न कर
                    दे। टेम्पलेट की `expires_at` इस अवधि, एप्लिकेशन की सामान्य
                    डेटा प्रतिधारण विंडो और `face_retention_deadline` में से जो
                    सबसे पहले हो, वह होती है।
                  example: 365
                face_retention_deadline:
                  type: string
                  format: date-time
                  description: >-
                    प्रतिधारित टेम्पलेट के लिए वैकल्पिक हार्ड समाप्ति। भविष्य की
                    होनी चाहिए।
                  example: '2027-08-28T00:00:00Z'
                deletion_instruction:
                  type: string
                  enum:
                    - operational_session_delete
                    - privacy_erasure
                  default: operational_session_delete
                  description: >-
                    आपके द्वारा दिए जा रहे निर्देश का वर्ग।
                    `operational_session_delete` सत्र को हटा देता है और केवल तभी
                    टेम्पलेट को बनाए रखता है जब नीति या `retain_face_embeddings`
                    ऐसा कहे। `privacy_erasure` सत्र को हटाने से पहले सत्र के
                    उपयोगकर्ता से जुड़े प्रत्येक बनाए रखे गए बायोमेट्रिक
                    टेम्पलेट को मिटा देता है, इसे एप्लिकेशन नीति द्वारा ओवरराइड
                    नहीं किया जा सकता है, और इसे `retain_face_embeddings: true`
                    (`400`) के साथ जोड़ा नहीं जा सकता है।
                  example: operational_session_delete
                instruction_id:
                  type: string
                  maxLength: 255
                  description: >-
                    इस विलोपन निर्देश के लिए आपका स्थायी संदर्भ (उदाहरण के लिए
                    एक इरेज़र-टिकट id)। ऑडिट ट्रेल पर और किसी भी बनाए रखे गए
                    टेम्पलेट पर रिकॉर्ड किया जाता है। छोड़ दिए जाने पर Didit
                    द्वारा जनरेट किया जाता है।
                  example: dsar-2026-0142
                filter_status:
                  description: >-
                    `delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के
                    साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `status` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई
                    स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता
                    है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित
                    नहीं करता है।
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_vendor_data:
                  description: >-
                    `delete_all` को उन सत्रों तक सीमित करता है जो समान मान के
                    साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `vendor_data` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची
                    नहीं: एक ऐरे को एक अल्पविराम से अलग किए गए टेक्स्ट में जोड़
                    दिया जाता है, इसलिए कई मान विकल्पों के रूप में मेल नहीं खाते
                    हैं। `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को
                    अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।
                  type: string
                filter_search:
                  description: >-
                    `delete_all` को उन सत्रों तक सीमित करता है जो समान मान के
                    साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `search` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं: एक
                    ऐरे को एक अल्पविराम से अलग किए गए टेक्स्ट में जोड़ दिया जाता
                    है, इसलिए कई मान विकल्पों के रूप में मेल नहीं खाते हैं।
                    `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को
                    अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।
                  type: string
                filter_workflow_id:
                  description: >-
                    `delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के
                    साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `workflow_id` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की
                    गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता
                    है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित
                    नहीं करता है।
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_date_from:
                  description: >-
                    `delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मान
                    के साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `date_from` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं:
                    एक ऐरे को अल्पविराम से अलग किए गए एक मान में जोड़ा जाता है,
                    इसलिए कई मानों को `400` के साथ अस्वीकार कर दिया जाता है।
                    `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा
                    किया जाता है और यह चयन को सीमित नहीं करता है।
                  type: string
                  format: date
                filter_date_to:
                  description: >-
                    `delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मान
                    के साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `date_to` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं: एक
                    ऐरे को अल्पविराम से अलग किए गए एक मान में जोड़ा जाता है,
                    इसलिए कई मानों को `400` के साथ अस्वीकार कर दिया जाता है।
                    `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा
                    किया जाता है और यह चयन को सीमित नहीं करता है।
                  type: string
                  format: date
                filter_country:
                  description: >-
                    `delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मानों
                    के साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `country` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई
                    स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता
                    है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं
                    करता है।
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_document_type:
                  description: >-
                    `delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मानों
                    के साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `document_type` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की
                    गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता
                    है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं
                    करता है।
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_document_name:
                  description: >-
                    `delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मानों
                    के साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `document_name` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की
                    गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता
                    है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं
                    करता है।
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_region:
                  description: >-
                    `delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के
                    साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `region` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई
                    स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता
                    है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित
                    नहीं करता है।
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_didit_internal_id:
                  description: >-
                    `delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मान
                    के साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `didit_internal_id` फ़िल्टर से मेल खाते हैं। एक मान, कोई
                    सूची नहीं: एक ऐरे को अल्पविराम से अलग किए गए एक मान में
                    जोड़ा जाता है, इसलिए कई मानों को `400` के साथ अस्वीकार कर
                    दिया जाता है। `delete_all` के बिना अनदेखा किया जाता है। खाली
                    मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं करता है।
                  type: string
                  format: uuid
                filter_session_type:
                  description: >-
                    `delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के
                    साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `session_type` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की
                    गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता
                    है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित
                    नहीं करता है।
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_api_service:
                  description: >-
                    `delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मान
                    के साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `api_service` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची
                    नहीं: एक ऐरे को अल्पविराम से अलग किए गए एक मान में जोड़ा
                    जाता है, इसलिए कई मानों को `400` के साथ अस्वीकार कर दिया
                    जाता है। `delete_all` के बिना अनदेखा किया जाता है। खाली मान
                    को अनदेखा किया जाता है और यह चयन को सीमित नहीं करता है।
                  type: string
                filter_screened_full_name:
                  description: >-
                    `delete_all` को उन सत्रों तक सीमित करता है जो समान मान के
                    साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `screened_full_name` फ़िल्टर से मेल खाते हैं। एक मान, कोई
                    सूची नहीं: एक ऐरे को एक अल्पविराम से अलग किए गए टेक्स्ट में
                    जोड़ दिया जाता है, इसलिए कई मान विकल्पों के रूप में मेल नहीं
                    खाते हैं। `delete_all` के बिना अनदेखा किया जाता है। रिक्त
                    मान को अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता
                    है।
                  type: string
                filter_warning:
                  description: >-
                    `delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के
                    साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `warning` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई
                    स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता
                    है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित
                    नहीं करता है।
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
                filter_status_initialized_as_in_review:
                  description: >-
                    `delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के
                    साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `status_initialized_as_in_review` फ़िल्टर से मेल खाते हैं।
                    `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को
                    अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।
                  type: boolean
                filter_is_kyc_to_be_reviewed:
                  description: >-
                    `delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मानों
                    के साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `is_kyc_to_be_reviewed` फ़िल्टर से मेल खाते हैं।
                    `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा
                    किया जाता है और यह चयन को सीमित नहीं करता है।
                  type: boolean
                filter_euuid:
                  description: >-
                    `delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मान
                    के साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `euuid` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं: एक
                    ऐरे को अल्पविराम से अलग किए गए एक मान में जोड़ा जाता है,
                    इसलिए कई मानों को `400` के साथ अस्वीकार कर दिया जाता है।
                    `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा
                    किया जाता है और यह चयन को सीमित नहीं करता है।
                  type: string
                  format: uuid
                filter_organization_name:
                  description: >-
                    `delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के
                    साथ [List Sessions](/hi/sessions-api/list-sessions) के
                    `organization_name` फ़िल्टर से मेल खाते हैं। अल्पविराम से
                    अलग की गई स्ट्रिंग या एक ऐरे। API कुंजी के साथ यह केवल आपके
                    अपने संगठन के नाम से मेल खा सकता है, इसलिए यह आपके सभी
                    सत्रों का चयन करता है या किसी का भी नहीं। `delete_all` के
                    बिना अनदेखा किया जाता है। रिक्त मान को अनदेखा कर दिया जाता
                    है और यह चयन को सीमित नहीं करता है।
                  oneOf:
                    - type: string
                    - type: array
                      items:
                        type: string
            examples:
              Specific sessions:
                summary: संख्या द्वारा विशिष्ट सत्र हटाएं
                value:
                  session_numbers:
                    - '1001'
                    - '1002'
                    - '1003'
              All sessions:
                summary: एप्लिकेशन में प्रत्येक KYC सत्र को हटाएं
                value:
                  delete_all: true
              Delete and retain templates:
                summary: >-
                  सत्र हटाएं लेकिन 365 दिनों के लिए छवि-मुक्त बायोमेट्रिक
                  टेम्पलेट रखें
                value:
                  session_numbers:
                    - '1001'
                    - '1002'
                  retain_face_embeddings: true
                  face_retention_days: 365
                  instruction_id: post-approval-cleanup-2026-08
              Privacy erasure:
                summary: >-
                  सत्र हटाएं और उनके उपयोगकर्ताओं के लिए प्रत्येक बनाए रखे गए
                  टेम्पलेट को पूरी तरह हटाएं
                value:
                  session_numbers:
                    - '1001'
                  deletion_instruction: privacy_erasure
                  instruction_id: dsar-2026-0142
              Filtered delete_all:
                summary: >-
                  सितंबर 2026 में बनाए गए एक वर्कफ़्लो के प्रत्येक अस्वीकृत सत्र
                  को हटाएं
                value:
                  delete_all: true
                  filter_status:
                    - Declined
                  filter_workflow_id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                  filter_date_from: '2026-09-01'
                  filter_date_to: '2026-09-30'
      responses:
        '200':
          description: >-
            अनुरोध में अधिकतम 20 सत्र मेल खाए और प्रोसेस किए गए। प्रति मेल खाने
            वाले सत्र के लिए एक परिणाम; जो संख्याएँ किसी से मेल नहीं खाती हैं
            (अज्ञात या पहले ही हटाई जा चुकी हैं) उन्हें छोड़ दिया जाता है और वे
            दिखाई नहीं देती हैं। परिणाम हटाए जाने की पुष्टि करता है, सिवाय इसके
            कि जब `face_retention_outcome` `failed_retryable` हो: वह सत्र हटाया
            नहीं गया था और उसका पुनः प्रयास किया जाना चाहिए।
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        session_id:
                          type: string
                          format: uuid
                          description: हटाया गया सत्र।
                        session_number:
                          type: integer
                          nullable: true
                          description: हटाए गए सत्र की संख्या।
                        face_retention_outcome:
                          type: string
                          enum:
                            - retained_with_user
                            - deleted
                            - none
                            - ineligible_no_vendor_user
                            - failed_retryable
                          description: >-
                            सत्र के फ़ेस बायोमेट्रिक डेटा के साथ क्या हुआ।
                            `deleted`: सत्र के साथ फ़ेस एम्बेडिंग हटा दी गई थी
                            (डिफ़ॉल्ट)। `retained_with_user`: सत्र हटा दिया गया
                            है और एक छवि-मुक्त बायोमेट्रिक टेम्पलेट उपयोगकर्ता
                            से जुड़ा रहता है; `biometric_template_uuid` देखें।
                            `none`: सत्र में कोई फ़ेस एम्बेडिंग नहीं थी (उदाहरण
                            के लिए लाइवनेस सेल्फ़ी के बिना केवल-दस्तावेज़ KYC
                            सत्र; KYB सत्र इस endpoint द्वारा कभी नहीं चुने जाते
                            हैं)। `ineligible_no_vendor_user`: प्रतिधारण का
                            अनुरोध किया गया था लेकिन सत्र में कोई लिंक किया गया
                            उपयोगकर्ता नहीं है, इसलिए एम्बेडिंग सत्र के साथ हटा
                            दी गई थी। `failed_retryable` (केवल बैच endpoint):
                            जिस समूह के साथ यह सत्र हटाया गया था उसे हटाया नहीं
                            जा सका (एक स्टोरेज सेवा, एक बायोमेट्रिक स्टोर, या एक
                            निगरानी प्रदाता अनुपलब्ध था); यह सत्र अभी भी बना हुआ
                            है, इसके लिए अनुरोध पुनः दोहराएं।
                        biometric_template_uuid:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            जब `face_retention_outcome`, `retained_with_user`
                            हो, तब प्रतिधारित बायोमेट्रिक टेम्पलेट का Id; अन्यथा
                            `null`। इसे
                            `/v3/biometric-templates/{template_uuid}/` के माध्यम
                            से प्रबंधित करें।
                        biometric_template_expires_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            प्रतिधारित बायोमेट्रिक टेम्पलेट कब हटाया जाता है, जब
                            `face_retention_outcome`, `retained_with_user` हो;
                            कोई टेम्पलेट प्रतिधारित न होने पर `null`।
                        deleted_child_verifications:
                          type: integer
                          description: >-
                            इस endpoint पर हमेशा `0`, जो केवल KYC सत्रों को
                            हटाता है। `DELETE /v3/session/{sessionId}/delete/`
                            के साथ व्यवसाय सत्यापन (KYB) सत्र को हटाने पर इसके
                            द्वारा बनाए गए उन सत्यापनों की रिपोर्ट मिलती है
                            जिन्हें इसके साथ हटाया गया था।
              examples:
                Mixed outcomes:
                  value:
                    results:
                      - session_id: 4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02
                        session_number: 1001
                        face_retention_outcome: deleted
                        biometric_template_uuid: null
                        biometric_template_expires_at: null
                        deleted_child_verifications: 0
                      - session_id: b8e1d2c3-4f5a-4b6c-8d7e-9f0a1b2c3d4e
                        session_number: 1002
                        face_retention_outcome: retained_with_user
                        biometric_template_uuid: 9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b
                        biometric_template_expires_at: '2027-10-09T10:15:00Z'
                        deleted_child_verifications: 0
                      - session_id: 7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c
                        session_number: 1003
                        face_retention_outcome: ineligible_no_vendor_user
                        biometric_template_uuid: null
                        biometric_template_expires_at: null
                        deleted_child_verifications: 0
                      - session_id: c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f
                        session_number: 1004
                        face_retention_outcome: failed_retryable
                        biometric_template_uuid: null
                        biometric_template_expires_at: null
                        deleted_child_verifications: 0
        '202':
          description: >-
            20 से अधिक सत्र मेल खाए। उन्हें बैकग्राउंड में हटा दिया जाता है;
            `GET /v3/sessions/delete/{job_id}/` को तब तक पोल करें जब तक `status`
            `COMPLETED` या `FAILED` न हो जाए।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionDeletionJob'
              examples:
                Job accepted:
                  value:
                    job_id: 5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b
                    status: PENDING
                    total: 250
                    processed: 0
                    outcomes:
                      deleted: 0
                      none: 0
                      retained_with_user: 0
                      ineligible_no_vendor_user: 0
                      failed_retryable: 0
                      already_deleted: 0
                    deleted_child_verifications: 0
                    error: null
                    created_at: '2026-10-09T10:15:00Z'
                    completed_at: null
        '400':
          description: >-
            सत्यापन त्रुटि — कुछ भी हटाया नहीं गया था। त्रुटि मान फ़ील्ड नाम के
            आधार पर कुंजीबद्ध संदेश स्ट्रिंग्स के ऐरे हैं।
          content:
            application/json:
              schema:
                type: object
                properties:
                  session_numbers:
                    type: array
                    items:
                      type: string
                additionalProperties:
                  description: >-
                    अन्य कुंजियाँ: एक `filter_*` कुंजी जो List Sessions फ़िल्टर
                    नहीं है (`"Unknown filter."`), या एक `filter_*` कुंजी जिसका
                    मान पढ़ा नहीं जा सकता है (उस `filter_*` कुंजी के आधार पर,
                    संदेशों के एक array के साथ)।
              examples:
                Missing selector:
                  summary: न तो session_numbers और न ही delete_all प्रदान किया गया
                  value:
                    session_numbers:
                      - This field is required unless delete_all is true.
                Empty list:
                  summary: session_numbers एक खाली ऐरे है
                  value:
                    session_numbers:
                      - This list may not be empty.
                Non-numeric entry:
                  summary: session_numbers में एक गैर-अंकीय स्ट्रिंग शामिल है
                  value:
                    session_numbers:
                      - All session_numbers must be numeric.
                Privacy erasure cannot retain:
                  summary: >-
                    deletion_instruction privacy_erasure के साथ
                    retain_face_embeddings true जुड़ा हुआ है
                  value:
                    retain_face_embeddings:
                      - Privacy erasure cannot retain biometric templates.
                No finite retention duration:
                  summary: >-
                    अनुरोध या एप्लिकेशन पर face_retention_days के बिना प्रतिधारण
                    का अनुरोध किया गया
                  value:
                    detail: >-
                      A finite biometric-template retention duration is
                      required.
                Unknown filter:
                  summary: एक filter_* कुंजी जो List Sessions में नहीं है
                  value:
                    filter_reviewer: Unknown filter.
                Unreadable filter value:
                  summary: एक फ़िल्टर मान जिसे पढ़ा नहीं जा सकता
                  value:
                    filter_date_from:
                      - Enter a valid date.
        '403':
          description: >-
            API कुंजी मौजूद नहीं है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त
            या समय-सीमा समाप्त कुंजी `401` लौटाती है।
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid API key:
                  summary: कोई x-api-key हेडर नहीं है, या कुंजी अमान्य है
                  value:
                    detail: You do not have permission to perform this action.
        '409':
          description: >-
            एक चयनित सत्र अंतिम रूप दी गई नियामक रिपोर्ट का हिस्सा है। कुछ भी
            हटाया नहीं गया है।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InFiledReportError'
        '429':
          description: >-
            साझा राइट रेट लिमिट पार हो गई (प्रति API कुंजी प्रति मिनट 300
            POST/PATCH/DELETE अनुरोध)। पुनः प्रयास करने से पहले `Retry-After` और
            `X-RateLimit-*` रिस्पॉन्स हेडर का निरीक्षण करें।
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Rate limited:
                  summary: लेखन बजट समाप्त हो गया
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST \
              https://verification.didit.me/v3/sessions/delete/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "session_numbers": ["1001", "1002", "1003"]
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.batch_delete(
                session_numbers=["1001", "1002", "1003"],
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.sessions.batchDelete({
              session_numbers: ["1001", "1002", "1003"],
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.BatchDelete(ctx, didit.SessionsBatchDeleteParams{\n\tSessionNumbers: didit.Some([]string{\"1001\", \"1002\", \"1003\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.SessionsBatchDeleteParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().batchDelete(SessionsBatchDeleteParams.builder()
                    .sessionNumbers(List.of("1001", "1002", "1003"))
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->sessions->batchDelete([
                'session_numbers' => ['1001', '1002', '1003'],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result = didit.sessions.batch_delete(session_numbers: ["1001",
            "1002", "1003"])

            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.Sessions.BatchDeleteAsync(new
            SessionsBatchDeleteParams

            {
                SessionNumbers = new string[] { "1001", "1002", "1003" },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SessionDeletionJob:
      type: object
      description: >-
        बैकग्राउंड में चल रहा बल्क सत्र विलोपन: प्रगति और प्रत्येक परिणाम की
        गणनाएँ, यह कभी नहीं कि इसने किन सत्रों को हटाया।
      properties:
        job_id:
          type: string
          format: uuid
          description: इस id के साथ `GET /v3/sessions/delete/{job_id}/` को पोल करें।
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
          description: >-
            `PENDING`: स्वीकार कर लिया गया, अभी शुरू नहीं हुआ। `PROCESSING`:
            हटाया जा रहा है; `processed` और `outcomes` अपडेट हो रहे हैं।
            `COMPLETED`: प्रत्येक चयनित सत्र का हिसाब हो गया है। `FAILED`: कार्य
            समय से पहले रुक गया; `error` देखें।
        total:
          type: integer
          description: डिलीशन का अनुरोध किए जाने पर चुने गए सत्र।
        processed:
          type: integer
          description: वे सत्र जिन्हें जॉब ने अब तक पूरा कर लिया है।
        outcomes:
          type: object
          description: >-
            प्रत्येक परिणाम में कितने सत्र समाप्त हुए। प्रत्येक कुंजी हमेशा
            मौजूद रहती है।
          properties:
            deleted:
              type: integer
              description: सत्र उनकी फ़ेस एम्बेडिंग के साथ हटा दिए गए।
            none:
              type: integer
              description: हटाए गए सत्र जिनमें कोई फ़ेस एम्बेडिंग नहीं थी।
            retained_with_user:
              type: integer
              description: >-
                सत्र हटा दिए गए, जबकि उनके उपयोगकर्ता के लिए एक छवि-मुक्त
                बायोमेट्रिक टेम्पलेट को बनाए रखा गया था, जैसा कि अनुरोध या
                एप्लिकेशन नीति ने मांगा था।
            ineligible_no_vendor_user:
              type: integer
              description: >-
                सत्र हटा दिए गए, उनकी फ़ेस एम्बेडिंग के साथ, क्योंकि डेटा
                प्रतिधारण का अनुरोध किया गया था लेकिन उनके पास कोई लिंक किया गया
                उपयोगकर्ता नहीं था।
            failed_retryable:
              type: integer
              description: >-
                डिलीट नहीं किए गए के रूप में रिपोर्ट किए गए सत्र। कोई जॉब जिसे
                वह स्वयं डिलीट नहीं कर सका, उसे यहाँ गिनने के बजाय उस समूह का
                पुनः प्रयास करता है।
            already_deleted:
              type: integer
              description: >-
                चयनित सत्र जो पहले ही हटा दिए गए थे, उदाहरण के लिए किसी अन्य
                अनुरोध द्वारा, जब जॉब उन तक पहुँचा।
        deleted_child_verifications:
          type: integer
          description: >-
            हटाए गए व्यवसाय सत्यापनों द्वारा बनाए गए वे सत्यापन, जिन्हें उनके
            साथ ही हटा दिया गया है। `POST /v3/sessions/delete/` द्वारा शुरू किए
            गए जॉब के लिए हमेशा `0`, जो केवल KYC सत्रों को हटाता है।
        error:
          type: string
          nullable: true
          description: >-
            जब तक `status`, `FAILED` न हो, तब तक `null`; यदि ऐसा है, तो विलोपन
            रुकने का कारण। जिन सत्रों तक कार्य नहीं पहुँचा था, वे अभी भी मौजूद
            हैं: उन्हें हटाने के लिए अनुरोध पुनः दोहराएँ।
        created_at:
          type: string
          format: date-time
          description: जब हटाए जाने का अनुरोध किया गया था।
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: जॉब कब समाप्त हुआ; इसके चलने के दौरान `null`।
    InFiledReportError:
      type: object
      description: >-
        हटाने से इनकार कर दिया गया है क्योंकि चयनित डेटा एक अंतिम विनियामक
        रिपोर्ट में है। कुछ भी हटाया नहीं गया है। रिपोर्ट हटाएं, फिर अनुरोध
        दोहराएं।
      required:
        - detail
        - code
      properties:
        detail:
          type: string
        code:
          type: string
          enum:
            - in_filed_report
          description: >-
            अंतिम रूप दी गई नियामक रिपोर्ट द्वारा अवरुद्ध विलोपन के लिए स्थिर
            त्रुटि कोड।
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: >-
            ऐसी रिपोर्ट जो किसी व्यक्ति, कंपनी, केस या सत्र के विलोपन को ब्लॉक
            करती हैं।
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/FiledReportTransaction'
          description: >-
            लेन-देन जो किसी लेन-देन विलोपन को ब्लॉक करते हैं, प्रत्येक उन
            रिपोर्टों के साथ जो इसे सूचीबद्ध करती हैं।
    FiledRegulatoryReport:
      type: object
      description: एक फ़ाइनलाइज़ की गई नियामक रिपोर्ट जो अनुरोधित विलोपन को रोकती है।
      required:
        - uuid
        - report_number
        - report_type
        - case_uuid
      properties:
        uuid:
          type: string
          format: uuid
          description: रिपोर्ट UUID।
        report_number:
          type: string
          description: कंसोल में दिखाई गई रिपोर्ट संख्या (उदाहरण के लिए, SAR-0001)।
        report_type:
          type: string
          enum:
            - SAR
            - STR
            - CTR
            - TTR
            - UTR
            - IFT
            - CBR
            - TFR
          description: नियामक रिपोर्ट प्रकार।
        case_uuid:
          type: string
          format: uuid
          description: वह केस जिससे यह रिपोर्ट संबंधित है।
    FiledReportTransaction:
      type: object
      description: >-
        एक लेन-देन जिसे हटाया नहीं जा सकता क्योंकि एक अंतिम रूप दी गई नियामक
        रिपोर्ट में इसे सूचीबद्ध किया गया है।
      required:
        - uuid
        - transaction_id
        - reports
      properties:
        uuid:
          type: string
          format: uuid
          description: Didit लेन-देन UUID।
        transaction_id:
          type: string
          description: लेन-देन बनाते समय प्रदान किया गया लेन-देन पहचानकर्ता।
        reports:
          type: array
          items:
            $ref: '#/components/schemas/FiledRegulatoryReport'
          description: अंतिम रूप दी गई रिपोर्टें जो इस लेन-देन को सूचीबद्ध करती हैं।
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        आपकी एप्लिकेशन की API कुंजी, Business Console में Developers -> API keys
        से। प्राथमिक कुंजी के पास पूर्ण एक्सेस होता है। एक नामित कुंजी को स्कोप
        किया जा सकता है: प्रति संसाधन none, read या write, कुछ वर्कफ़्लो या
        स्वीकृत सत्रों तक सीमित, IP पतों की सूची तक सीमित, और समाप्ति तिथि तक
        सीमित। 401 का अर्थ है कि कुंजी गलत है, निरस्त कर दी गई है या उसकी
        समय-सीमा समाप्त हो गई है; 403 का अर्थ है कि कोई कुंजी नहीं भेजी गई थी,
        कुंजी के पास इस संसाधन या कार्रवाई का एक्सेस नहीं है, या अनुरोध उसकी IP
        सूची से बाहर के पते से आया था; सत्र रूट पर 404 का अर्थ है कि सत्र कुंजी
        के वर्कफ़्लो या स्थितियों से बाहर है। मीडिया एक्सेस के बिना एक कुंजी को
        छवि, वीडियो और PDF URL null के रूप में प्राप्त होते हैं, और सत्र write
        के बिना एक कुंजी को सत्र लिंक और token null के रूप में प्राप्त होते हैं।
        देखें https://docs.didit.me/console/api-keys।

````

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