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

# Réessayer un rapport asynchrone via l'API Didit

> Réessayez un export asynchrone ou les vérifications échouées dans Didit : accès réservé au demandeur, sessions supprimées exclues.

L'API de rapports asynchrone de Didit relance une exportation ou met en file d'attente les éléments de vérification échoués sélectionnés. Un nouveau réessai renvoie `201` ; une sélection identique d'éléments échoués renvoie le rapport existant avec `200`.

> [!WARNING]
>
> Le réessai sélectif exige l'identité de l'utilisateur demandeur d'origine. Une clé API ou un token d'application sans cette identité reçoit `403` lorsqu'il envoie `item_ids`, même pour sa propre application. L'exemple de clé API généré relance l'exportation complète avec un corps vide.

Récupérez les identifiants à jour dans [Récupérer un rapport asynchrone](https://docs.didit.me/fr/management-api/reports/retrieve.md) et suivez les [consignes de réessai des éléments échoués](https://docs.didit.me/fr/console/export-pdf-csv.md#réessayer-les-éléments-ayant-échoué-lors-de-l’export). Envoyez de 1 à 1 000 identifiants provenant d'un `SESSION_EXPORT` au statut `READY` ou `FAILED`, sans plage de dates de remplacement. Les sessions supprimées ne peuvent pas faire l'objet d'un réessai.


## OpenAPI

````yaml fr/openapi-25.json POST /v3/organization/{organization_id}/application/{application_id}/reports/{report_uuid}/retry/
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/organization/{organization_id}/application/{application_id}/reports/{report_uuid}/retry/:
    post:
      tags:
        - Reports
      summary: Réessayer le rapport asynchrone
      description: >-
        Requiert des autorisations de lecture pour chaque ressource couverte par
        le rapport. Les identifiants d'application ou de clé API doivent
        appartenir à l'application figurant dans le chemin. Les tokens Bearer de
        membre doivent avoir accès à l'application. Requiert également des
        autorisations d'écriture pour les ressources exportées. Omettez item_ids
        pour relancer l'exportation d'origine, éventuellement sur une plage de
        dates de remplacement. Un rapport créé comme nouvelle tentative pour les
        éléments en échec exige une sélection explicite d'item_ids pour toute
        nouvelle tentative. Avec item_ids, seul le demandeur d'origine (un
        requested_by_user_id non nul correspondant à l'utilisateur authentifié)
        peut réessayer un SESSION_EXPORT en état READY ou FAILED. Une clé API ou
        un token d'application sans cette identité d'utilisateur reçoit un 403
        pour une nouvelle tentative sélective. Ne sélectionnez que les sessions
        en échec encore actives de l'exportation d'origine ; les sessions
        supprimées ne peuvent pas être réexportées. Le rapport d'origine reste
        inchangé. La première sélection crée un nouveau rapport (201) ; rejouer
        exactement la même sélection renvoie le rapport de nouvelle tentative
        existant (200). Les sélections qui se chevauchent ou sont différentes et
        déjà attribuées à une autre nouvelle tentative renvoient 400. Voir
        [Réessayer les éléments d'exportation en
        échec](https://docs.didit.me/fr/console/export-pdf-csv#réessayer-les-éléments-ayant-échoué-lors-de-l’export).
      operationId: retry_reports
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Identifiant de l'organisation.
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Identifiant de l'application.
        - name: report_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID du rapport.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AsyncReportRetryRequest'
            example: {}
      responses:
        '200':
          description: >-
            Rejeu d'une sélection d'éléments en échec identique ; renvoie le
            rapport de nouvelle tentative existant sans en mettre un autre en
            file d'attente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncReport'
        '201':
          description: Nouvel export mis en file d'attente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncReport'
        '400':
          description: >-
            Sélection invalide ou vide, plus de 1000 identifiants, identifiants
            ne figurant pas parmi les sessions en échec actives de ce rapport,
            export non terminé ou non lié à une session, sélection de nouvelle
            tentative en conflit, ou plage de dates invalide ou mixte.
        '401':
          description: Identifiants manquants, invalides ou expirés.
        '403':
          description: >-
            Autorisations de lecture/écriture manquantes, ou nouvelle tentative
            sélective effectuée par une personne autre que le demandeur
            d'origine, y compris un appelant sans identité d'utilisateur.
        '404':
          description: Rapport introuvable dans cette application.
        '409':
          description: >-
            Le rapport est en cours de suppression ; il ne peut pas être
            réessayé.
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            client = Didit()

            result = client.reports.retry(
                "11111111-2222-3333-4444-555555555555",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            const didit = new Didit();


            const result = await
            didit.reports.retry("11111111-2222-3333-4444-555555555555");

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

            import me.didit.types.AsyncReportRetryRequest;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            var result =
            client.reports().retry("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_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            $didit = new DiditClient();


            $result =
            $didit->reports->retry('11111111-2222-3333-4444-555555555555');

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

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            didit = Didit::Client.new

            result = didit.reports.retry("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, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            using var client = new DiditClient();


            var result = await
            client.Reports.RetryAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    AsyncReportRetryRequest:
      type: object
      properties:
        item_ids:
          type: array
          description: >-
            Sélection facultative de 1 à 1000 UUID de sessions en production
            ayant échoué, issus de cet export. Les doublons sont fusionnés. Seul
            le demandeur d'origine peut relancer un sous-ensemble. Ne peut pas
            être combiné avec date_from/date_to.
          items:
            type: string
            format: uuid
          minItems: 1
          maxItems: 1000
        date_from:
          type: string
          description: >-
            Début facultatif de la période de remplacement. Envoyez les deux
            dates dans l'ordre ; omettez-les pour une nouvelle tentative sur un
            élément en échec.
          format: date
        date_to:
          type: string
          description: >-
            Fin facultative de la période de remplacement, égale ou postérieure
            à date_from.
          format: date
        notify_on_ready:
          type: boolean
          description: >-
            Envoie un e-mail au demandeur une fois le rapport prêt, si son
            adresse e-mail est disponible.
          default: false
    AsyncReport:
      type: object
      required:
        - uuid
        - report_type
        - report_type_display
        - status
        - status_display
        - parameters
        - requested_by_user_id
        - requested_by_email
        - requested_by_name
        - row_count
        - failed_item_ids
        - failed_count
        - file_size
        - files
        - scheduled_report
        - error_message
        - deletion_pending
        - eta_seconds
        - started_at
        - completed_at
        - expires_at
        - created_at
        - updated_at
      properties:
        uuid:
          type: string
          description: Identifiant du rapport.
          format: uuid
        report_type:
          type: string
          description: Type d'export ou de rapport de conformité.
          enum:
            - SESSION_EXPORT
            - TRANSACTION_EXPORT
            - BUSINESS_EXPORT
            - VENDOR_USER_EXPORT
            - VENDOR_BUSINESS_EXPORT
            - CASE_EXPORT
            - CASE_SLA_EXPORT
            - LIST_ENTRY_EXPORT
            - EVENT_EXPORT
            - COMPLIANCE_KYC_KYB
            - COMPLIANCE_AML_LOG
            - COMPLIANCE_TRAVEL_RULE
            - COMPLIANCE_SANCTIONS_PEP
            - COMPLIANCE_RISK_SUMMARY
            - COMPLIANCE_SAR_STR_DRAFT
            - COMPLIANCE_CTR
            - COMPLIANCE_CASE_SUMMARY
        report_type_display:
          type: string
          description: Libellé affiché pour le type de rapport.
        status:
          type: string
          description: >-
            État de génération. READY peut inclure des échecs individuels ;
            vérifiez failed_count.
          enum:
            - PENDING
            - PROCESSING
            - READY
            - FAILED
        status_display:
          type: string
          description: Libellé affiché pour l'état de génération.
        parameters:
          type: object
          description: Options d'export d'origine ; les clés dépendent de report_type.
          additionalProperties: true
        requested_by_user_id:
          type: string
          description: >-
            Identité du demandeur d'origine, ou null pour les appelants sans
            identité d'utilisateur.
          format: uuid
          nullable: true
        requested_by_email:
          type: string
          description: E-mail du demandeur, lorsqu'il est disponible.
          nullable: true
        requested_by_name:
          type: string
          description: Nom d'affichage du demandeur, lorsqu'il est disponible.
          nullable: true
        row_count:
          type: integer
          description: Nombre d'enregistrements exportés, ou null avant la génération.
          nullable: true
        failed_item_ids:
          type: array
          description: >-
            UUID des sessions en production ayant échoué dans cet export de
            vérification. Les sessions supprimées sont exclues. Utilisez ces
            identifiants pour une nouvelle tentative sélective.
          items:
            type: string
            format: uuid
        failed_count:
          type: integer
          description: Nombre d'entrées dans failed_item_ids.
          minimum: 0
        file_size:
          type: integer
          description: >-
            Taille totale du fichier généré en octets, ou null avant la
            génération.
          format: int64
          nullable: true
        files:
          type: array
          description: >-
            Métadonnées du fichier généré ; ne contient pas d'URL de
            téléchargement.
          items:
            $ref: '#/components/schemas/AsyncReportFile'
        scheduled_report:
          type: string
          description: >-
            Identifiant de la planification, ou null pour un rapport non
            planifié.
          format: uuid
          nullable: true
        error_message:
          type: string
          description: Erreur de génération, le cas échéant.
          nullable: true
        deletion_pending:
          type: boolean
          description: Indique si une suppression demandée est encore en cours.
        eta_seconds:
          type: integer
          description: >-
            Durée estimée en secondes avant la fin de la génération d'un rapport
            en attente ou en cours de traitement ; null sans historique ou une
            fois le rapport terminé.
          nullable: true
        started_at:
          type: string
          description: Heure de début de génération.
          format: date-time
          nullable: true
        completed_at:
          type: string
          description: Heure de fin de génération.
          format: date-time
          nullable: true
        expires_at:
          type: string
          description: Date d'expiration du rapport.
          format: date-time
        created_at:
          type: string
          description: Heure de création.
          format: date-time
        updated_at:
          type: string
          description: Heure de la dernière mise à jour.
          format: date-time
      example:
        uuid: 00000000-0000-4000-8000-000000000002
        report_type: SESSION_EXPORT
        report_type_display: Verifications
        status: READY
        status_display: Ready
        parameters: {}
        requested_by_user_id: null
        requested_by_email: null
        requested_by_name: null
        row_count: 9
        failed_item_ids:
          - 00000000-0000-4000-8000-000000000001
        failed_count: 1
        file_size: 1200
        files:
          - name: verifications.csv
            format: csv
            rows: 9
            bytes: 1200
        scheduled_report: null
        error_message: null
        deletion_pending: false
        eta_seconds: null
        started_at: '2026-11-11T01:00:00Z'
        completed_at: '2026-11-11T01:01:00Z'
        expires_at: '2026-12-11T01:00:00Z'
        created_at: '2026-11-11T01:00:00Z'
        updated_at: '2026-11-11T01:01:00Z'
    AsyncReportFile:
      type: object
      required:
        - name
        - format
        - rows
        - bytes
      properties:
        name:
          type: string
          description: Nom du fichier.
        format:
          type: string
          description: Format du fichier.
        rows:
          type: integer
          description: Enregistrements exportés dans ce fichier, le cas échéant.
          nullable: true
        bytes:
          type: integer
          description: Taille du fichier en octets.
          format: int64
    RateLimitBudgetError:
      type: object
      description: >-
        Renvoyé uniquement pour un refus de quota du middleware lié à la limite
        de débit. Les autres erreurs 429, y compris les conflits d'idempotence
        et les plafonds propres à chaque endpoint, ne garantissent pas ces
        champs de métadonnées.
      required:
        - detail
        - reference
        - limit
        - remaining
        - reset
        - window_seconds
      properties:
        detail:
          type: string
          description: Message lisible de refus de budget existant.
        reference:
          type: string
          pattern: ^RL-[0-9a-f]{32}$
          description: "Référence de support opaque\_: RL- suivi de 32 caractères hexadécimaux minuscules d'un UUID."
        limit:
          type: integer
          description: Budget du périmètre dépassé ; égal à X-RateLimit-Limit.
        remaining:
          type: integer
          minimum: 0
          description: Budget restant, ramené à zéro ; égal à X-RateLimit-Remaining.
        reset:
          type: integer
          format: int64
          description: >-
            Heure de réinitialisation de la fenêtre en secondes Unix ; égale à
            X-RateLimit-Reset.
        window_seconds:
          type: integer
          description: >-
            Durée de la fenêtre fixe en secondes, et non le temps d'attente
            restant. Respectez Retry-After avant de réessayer.
      example:
        detail: >-
          Write request rate limit exceeded. You can make up to 300 requests per
          minute.
        reference: RL-00000000000040008000000000000001
        limit: 300
        remaining: 0
        reset: 1794358860
        window_seconds: 60
  responses:
    RateLimitedWrite:
      description: >-
        La limite d'écriture partagée de 300 requêtes par minute et par clé API
        a été dépassée. Respectez l'en-tête `Retry-After` avant de réessayer.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitBudgetError'
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
            reference: RL-00000000000040008000000000000001
            limit: 300
            remaining: 0
            reset: 1794358860
            window_seconds: 60
      headers:
        Retry-After:
          $ref: '#/components/headers/BudgetRetryAfter'
        X-RateLimit-Scope:
          $ref: '#/components/headers/BudgetXRateLimitScope'
        X-RateLimit-Limit:
          $ref: '#/components/headers/BudgetXRateLimitLimit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/BudgetXRateLimitRemaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/BudgetXRateLimitReset'
  headers:
    BudgetRetryAfter:
      description: >-
        Nombre de secondes à attendre, arrondi à la fenêtre suivante. Présent
        sur les refus liés au quota du middleware.
      schema:
        type: integer
    BudgetXRateLimitScope:
      description: >-
        Le périmètre dont le quota a été dépassé. Présent sur les refus liés au
        quota du middleware.
      schema:
        type: string
    BudgetXRateLimitLimit:
      description: >-
        Budget du périmètre dépassé ; égal à la limite du corps. Présent sur les
        refus de budget du middleware.
      schema:
        type: integer
    BudgetXRateLimitRemaining:
      description: >-
        Budget restant, ramené à zéro ; égal à remaining du corps. Présent lors
        des refus liés au budget du middleware.
      schema:
        type: integer
    BudgetXRateLimitReset:
      description: >-
        Heure de réinitialisation en secondes Unix ; égale à reset dans le
        corps. Présent sur les refus liés au quota du middleware.
      schema:
        type: integer
  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.
    BearerAuth:
      type: http
      scheme: bearer
      description: Le token d'accès client-credentials de l'application.

````

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