> ## 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 de suivi des suppressions de sessions en masse

> Suivez le statut et les résultats d'une suppression de sessions en masse Didit, renvoyée en 202 car plus de 20 sessions correspondaient.



Prompt : obtenir la tâche de suppression de session
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\`Goal: Read the progress of a bulk session deletion that POST /v3/sessions/delete/ answered with 202. That happens when more than 20 KYC sessions match the request, whether they are selected by session_numbers or with delete_all.

Endpoint: GET https://verification.didit.me/v3/sessions/delete/{job_id}/
Auth header: x-api-key: <DIDIT_API_KEY>

Path param:
\- job_id: the job_id returned with the 202.

curl:
curl 'https://verification.didit.me/v3/sessions/delete/JOB_ID/' \
-H 'x-api-key: YOUR_API_KEY'

Response 200:
\{
"job_id": "<uuid>",
"status": "PROCESSING",            // PENDING | PROCESSING | COMPLETED | FAILED
"total": 250,                      // sessions selected when the deletion was requested
"processed": 100,                  // sessions the job has finished with so far
"outcomes": {"deleted": 82, "none": 18, "retained_with_user": 0, "ineligible_no_vendor_user": 0, "failed_retryable": 0, "already_deleted": 0},
"deleted_child_verifications": 0,  // always 0 for jobs from POST /v3/sessions/delete/ (KYC sessions only)
"error": null,                     // why the deletion stopped, when status is FAILED
"created_at": "<datetime>",
"completed_at": null
}

outcomes counts:
\- deleted: sessions deleted together with their face embedding.
\- none: sessions deleted that had no face embedding.
\- retained_with_user: sessions deleted while one image-free biometric template was retained for their User, as the request or the application policy asked.
\- ineligible_no_vendor_user: retention was requested but the session had no linked User; the session and its embedding were deleted.
\- failed_retryable: sessions reported as not deleted. The job retries a group it could not delete by itself instead of counting it here.
\- already_deleted: selected sessions that were already deleted, for example by another request, when the job reached them.

Polling: request the job every few seconds while status is PENDING or PROCESSING; stop at COMPLETED or FAILED. The job never lists which sessions it deleted, only counts. A FAILED job explains why in error; the sessions it had not reached are still in place, so repeat the deletion request to delete them. Deletion is permanent and irreversible.

Failure modes:
\- 403: missing x-api-key (a wrong, revoked or expired key gets 401). { "detail": "You do not have permission to perform this action." }
\- 404: no such job for this application (a job is only visible to the application that created it).

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

\</pre>



      
      

Coller dans

## Vue d'ensembleRenvoie la tâche de suppression de sessions en lot lancée par [Supprimer des sessions en lot](https://docs.didit.me/fr/management-api/sessions/batch-delete.md) : son statut, le nombre de sessions traitées et le nombre de sessions pour chaque résultat.Lorsque plus de 20 sessions KYC correspondent à une suppression en lot, sélectionnées via `session_numbers` ou avec `delete_all`, la requête renvoie `202` avec une tâche `PENDING`, et les sessions sont supprimées en arrière-plan. Interrogez cet endpoint toutes les quelques secondes jusqu'à ce que `status` soit `COMPLETED` ou `FAILED`.Chaque session supprimée par la tâche est supprimée exactement comme par [Supprimer une session](https://docs.didit.me/fr/sessions-api/delete-session.md) : la session, chaque tentative de vérification qu'elle contient et tous ses fichiers stockés sont supprimés, et ses URL de médias cessent de fonctionner. La suppression est définitive et irréversible.La tâche ne fournit que des totaux. Elle ne liste jamais les sessions qu'elle a supprimées.## Statut de la tâche| `status` | Signification |
| - | - |
| `PENDING` | Acceptée, pas encore démarrée. |
| `PROCESSING` | Suppression en cours ; `processed` et `outcomes` sont en cours de mise à jour. |
| `COMPLETED` | Chaque session sélectionnée figure dans `outcomes`. |
| `FAILED` | La tâche s'est arrêtée prématurément et `error` en indique la raison. Les sessions qu'elle n'a pas atteintes sont toujours en place : renvoyez la requête de suppression pour les supprimer. |Une tâche `delete_all` ne supprime que les sessions créées avant la requête. Les sessions démarrées pendant son exécution ne sont pas supprimées.## Nombre de résultats| Clé `outcomes` | Signification |
| - | - |
| `deleted` | Sessions supprimées avec leur embedding facial. |
| `none` | Sessions supprimées qui n'avaient pas d'embedding facial. |
| `retained_with_user` | Sessions supprimées tandis qu'un gabarit biométrique sans image était conservé pour leur utilisateur, selon ce que demandait la requête ou la politique de l'application. Voir [Supprimer une session](https://docs.didit.me/fr/sessions-api/delete-session.md#données-biométriques-faciales--supprimer-ou-conserver). |
| `ineligible_no_vendor_user` | La conservation était demandée, mais la session n'avait aucun utilisateur lié. La session et son embedding facial ont été supprimés. |
| `failed_retryable` | Sessions signalées comme non supprimées. La tâche relance elle-même un groupe qu'elle n'a pas pu supprimer, au lieu de le comptabiliser ici. |
| `already_deleted` | Sessions sélectionnées qui étaient déjà supprimées, par exemple par une autre requête, au moment où la tâche les a atteintes. |`deleted_child_verifications` compte les vérifications que des vérifications d'entreprise supprimées avaient créées et qui ont été supprimées avec elles. Sa valeur est toujours `0` pour une tâche lancée par [Supprimer des sessions en lot](https://docs.didit.me/fr/management-api/sessions/batch-delete.md), qui ne supprime que des sessions KYC.## AutorisationsToute clé API active de l'application peut appeler cet endpoint. Une tâche n'est visible que par l'application qui l'a créée ; tout autre `job_id` renvoie `404`.## Voir aussi- [Supprimer des sessions en lot](https://docs.didit.me/fr/management-api/sessions/batch-delete.md)
- [Supprimer une session](https://docs.didit.me/fr/sessions-api/delete-session.md)
- [Conservation des données](https://docs.didit.me/fr/console/data-retention.md)


## OpenAPI

````yaml fr/openapi-25.json GET /v3/sessions/delete/{job_id}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de vérification d'identité. Authentifiez-vous avec l'en-tête x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/sessions/delete/{job_id}/:
    get:
      tags:
        - Sessions
      summary: Obtenir une tâche de suppression groupée de sessions
      description: >-
        Progression d'une suppression groupée de sessions à laquelle `POST
        /v3/sessions/delete/` a répondu par `202` (plus de 20 sessions
        correspondantes, sélectionnées par `session_numbers` ou avec
        `delete_all`). Interrogez toutes les quelques secondes tant que `status`
        est `PENDING` ou `PROCESSING` ; arrêtez-vous lorsqu'il passe à
        `COMPLETED` ou `FAILED`.


        Le travail indique le nombre de sessions ayant abouti à chaque résultat
        et le nombre de sessions qu'il a traitées, mais jamais quelles sessions
        il a supprimées. Un travail `FAILED` contient la raison dans `error` ;
        les sessions qu'il n'avait pas encore atteintes sont toujours en place,
        renouvelez donc la requête de suppression pour les supprimer.


        **Authentification :** clé API dans l'en-tête `x-api-key`. Un travail
        n'est visible que par l'application qui l'a créé ; tout autre `job_id`
        renvoie `404`. Des identifiants manquants ou invalides renvoient `403` ;
        cette API ne renvoie jamais `401`.
      operationId: get_session_deletion_job
      parameters:
        - name: job_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            Le `job_id` renvoyé avec la réponse `202` de `POST
            /v3/sessions/delete/`.
      responses:
        '200':
          description: La tâche.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionDeletionJob'
              examples:
                Processing:
                  value:
                    job_id: 5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b
                    status: PROCESSING
                    total: 250
                    processed: 100
                    outcomes:
                      deleted: 82
                      none: 18
                      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
                Completed:
                  value:
                    job_id: 5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b
                    status: COMPLETED
                    total: 250
                    processed: 250
                    outcomes:
                      deleted: 204
                      none: 44
                      retained_with_user: 0
                      ineligible_no_vendor_user: 0
                      failed_retryable: 0
                      already_deleted: 2
                    deleted_child_verifications: 0
                    error: null
                    created_at: '2026-10-09T10:15:00Z'
                    completed_at: '2026-10-09T10:16:40Z'
                Failed:
                  value:
                    job_id: 5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b
                    status: FAILED
                    total: 250
                    processed: 100
                    outcomes:
                      deleted: 82
                      none: 18
                      retained_with_user: 0
                      ineligible_no_vendor_user: 0
                      failed_retryable: 0
                      already_deleted: 0
                    deleted_child_verifications: 0
                    error: >-
                      The deletion stopped before it finished. The sessions it
                      had not reached are still in place; repeat the request to
                      delete them.
                    created_at: '2026-10-09T10:15:00Z'
                    completed_at: '2026-10-09T10:15:52Z'
        '403':
          description: >-
            Clé API manquante. Une clé manquante renvoie `403` ; une clé
            erronée, révoquée ou expirée renvoie `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid API key:
                  summary: Aucun en-tête x-api-key, ou la clé est invalide
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Aucune tâche de suppression avec ce `job_id` n'existe pour
            l'application appelante. Les tâches ne sont visibles que par
            l'application qui les a créées.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl 'https://verification.didit.me/v3/sessions/delete/JOB_ID/' \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.retrieve_deletion_job(
                "11111111-2222-3333-4444-555555555555",
            )
            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.retrieveDeletionJob("11111111-2222-3333-4444-555555555555");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.RetrieveDeletionJob(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().retrieveDeletionJob("11111111-2222-3333-4444-555555555555");

            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->retrieveDeletionJob('11111111-2222-3333-4444-555555555555');

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result =
            didit.sessions.retrieve_deletion_job("11111111-2222-3333-4444-555555555555")

            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.RetrieveDeletionJobAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SessionDeletionJob:
      type: object
      description: "Une suppression groupée de sessions en cours en arrière-plan\_: progression et totaux par résultat, jamais les sessions spécifiques supprimées."
      properties:
        job_id:
          type: string
          format: uuid
          description: Interrogez `GET /v3/sessions/delete/{job_id}/` avec cet identifiant.
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
          description: >-
            `PENDING` : accepté, pas encore démarré. `PROCESSING` : suppression
            en cours ; `processed` et `outcomes` sont en cours de mise à jour.
            `COMPLETED` : chaque session sélectionnée est prise en compte.
            `FAILED` : la tâche s'est arrêtée prématurément ; voir `error`.
        total:
          type: integer
          description: Sessions sélectionnées lors de la demande de suppression.
        processed:
          type: integer
          description: Sessions traitées par la tâche jusqu'à présent.
        outcomes:
          type: object
          description: >-
            Nombre de sessions s'étant terminées par chaque résultat. Chaque clé
            est toujours présente.
          properties:
            deleted:
              type: integer
              description: Sessions supprimées avec leur embedding facial.
            none:
              type: integer
              description: Sessions supprimées qui n'avaient pas d'embedding facial.
            retained_with_user:
              type: integer
              description: >-
                Sessions supprimées alors qu'un gabarit biométrique sans image a
                été conservé pour leur utilisateur, comme demandé par la requête
                ou la politique de l'application.
            ineligible_no_vendor_user:
              type: integer
              description: >-
                Sessions supprimées, avec leur embedding facial, car la
                conservation a été demandée mais aucun utilisateur n'y était
                lié.
            failed_retryable:
              type: integer
              description: >-
                Sessions signalées comme non supprimées. Une tâche réessaie de
                supprimer par elle-même un groupe qu'elle n'a pas pu supprimer
                au lieu de le comptabiliser ici.
            already_deleted:
              type: integer
              description: >-
                Sessions sélectionnées qui étaient déjà supprimées, par exemple
                par une autre requête, lorsque la tâche les a atteintes.
        deleted_child_verifications:
          type: integer
          description: >-
            Vérifications créées par les vérifications d'entreprise supprimées,
            supprimées avec elles. Vaut toujours `0` pour une tâche initiée par
            `POST /v3/sessions/delete/`, qui supprime uniquement les sessions
            KYC.
        error:
          type: string
          nullable: true
          description: >-
            `null` sauf si `status` est `FAILED` ; indique alors la raison de
            l'interruption de la suppression. Les sessions que la tâche n'avait
            pas encore atteintes sont conservées : répétez la requête pour les
            supprimer.
        created_at:
          type: string
          format: date-time
          description: Date et heure auxquelles la suppression a été demandée.
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: Moment où la tâche s'est terminée ; `null` pendant son exécution.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clé API de votre application, issue de Développeurs -> Clés API dans
        la Business Console. La clé principale dispose d'un accès complet. Une
        clé nommée peut être restreinte : aucun, lecture ou écriture par
        ressource, limitée à certains workflows ou aux sessions approuvées, à
        une liste d'adresses IP et à une date d'expiration. 401 signifie que la
        clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a
        été envoyée, que la clé n'a pas accès à cette ressource ou action, ou
        que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur
        une route de session signifie que la session est hors des workflows ou
        des statuts de la clé. Une clé sans accès aux médias reçoit les URL
        d'images, de vidéos et de PDF à null, et une clé sans accès en écriture
        aux sessions reçoit les liens et tokens de session à null. Voir
        https://docs.didit.me/console/api-keys.

````

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