> ## 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 rapport PDF des transactions

> Téléchargez en PDF le rapport d'une transaction surveillée avec Didit : verdict, parties, alertes, règles, filtrage et transactions liées.



Prompt de l'API de génération de rapport PDF de transaction
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\`Download one Didit monitored transaction as a PDF report through the Management API.

Endpoint:
GET https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/transactions/{transaction_uuid}/pdf/

Authentication:
Use the x-api-key header with my Didit API key. A scoped key needs media: read and transactions: read, because a PDF report counts as media. Keys limited to specific workflows or to approved sessions cannot call this endpoint.

Goal:
\- Get a PDF of a transaction for an audit file, a handoff to another team, or a regulator request.

Path parameters:
\- organization_id: my organization UUID.
\- application_id: the UUID of the application my API key belongs to. Any other application returns 403.
\- transaction_uuid: the Didit transaction uuid, not my own txn_id.

Behavior:
\- The response body is the PDF itself (Content-Type: application/pdf). Do not parse it as JSON.
\- Content-Disposition is always attachment; filename=transaction_{transaction_uuid}.pdf.
\- The report covers the overview and verdict, parties and payment methods, custom properties, alerts and rule runs, screening and Travel Rule results, the network summary, the cost breakdown, up to 50 related transactions and the 20 most recent activity entries.
\- It is rendered from the transaction's current data on every call. Nothing is stored and nothing is billed. Rendering can take a few seconds, so use a generous client timeout.

Example call:
curl -X GET "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/transactions/{transaction_uuid}/pdf/" \
-H "x-api-key: YOUR_API_KEY" \
-o transaction_report.pdf

Failure modes (JSON bodies):
\- 401: the API key has expired.
\- 403: missing API key (a wrong, revoked or expired key gets 401) ({"detail": "Authentication credentials were not provided or are invalid."}), an application_id that is not my key's application ({"detail": "You do not have permission to perform this action."}), a scoped key without media: read ({"detail": "This API key has no read access to media."}) or transactions: read, a key with workflow or status limits, or a request from outside the key's IP allowlist.
\- 404: no transaction with this uuid in my application ({"detail": "No Transaction matches the given query."}).
\- 429: more than 600 GET requests per minute with this key; wait Retry-After seconds and retry.

Side effects: none.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

Coller dans

Le rapport est généré à la demande à partir des données actuelles de la transaction. Après un changement de statut, appelez à nouveau l'endpoint pour obtenir une copie à jour. Contrairement aux autres endpoints de transaction, celui-ci se trouve sur un chemin limité à une application : indiquez dans l'URL l'ID de votre organisation et l'ID de l'application à laquelle appartient votre clé API. Voir [Trouver votre ID d'organisation](https://docs.didit.me/fr/getting-started/api-authentication.md#trouver-l’id-de-votre-organisation).> [!NOTE]
>
> Un rapport PDF est considéré comme un média. Une [clé API à portée limitée](https://docs.didit.me/fr/console/api-keys.md) doit disposer de **media: read** en plus de **transactions: read**. Une clé sans accès aux médias reçoit `403`, même si elle peut lire la transaction au format JSON avec [Obtenir une transaction](https://docs.didit.me/fr/management-api/transactions/get.md).


## OpenAPI

````yaml fr/openapi-25.json GET /v3/organization/{organization_id}/application/{application_id}/transactions/{transaction_uuid}/pdf/
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}/transactions/{transaction_uuid}/pdf/:
    get:
      tags:
        - Transactions
      summary: Télécharger un rapport PDF de transaction
      description: >-
        Générez le rapport PDF d'une transaction surveillée : vue d'ensemble et
        verdict, parties et moyens de paiement, propriétés personnalisées,
        alertes et exécutions de règles, résultats de filtrage et Travel Rule,
        récapitulatif du réseau, ventilation des coûts, jusqu'à 50 transactions
        associées et les 20 entrées d'activité les plus récentes. Le corps de la
        réponse est le PDF lui-même (`application/pdf`), et non du JSON.


        Le rapport est généré à partir des données actuelles de la transaction à
        chaque appel ; demandez-le donc à nouveau après un changement de statut.
        Rien n'est stocké et rien n'est facturé. La génération peut prendre
        quelques secondes, prévoyez donc un délai d'expiration client généreux.


        Cet endpoint réside sur un chemin propre à l'application : indiquez
        l'identifiant de votre organisation et l'identifiant de l'application à
        laquelle appartient votre clé API dans l'URL ([trouver l'identifiant de
        votre
        organisation](https://docs.didit.me/fr/getting-started/api-authentication#trouver-l’id-de-votre-organisation)).
        Un rapport PDF est considéré comme un média : une clé API restreinte
        nécessite `media: read` et `transactions: read`, et une clé limitée à
        certains workflows ou aux sessions approuvées ne peut pas l'appeler.
      operationId: get_transaction_pdf
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID de l'organisation.
          example: 11111111-2222-3333-4444-555555555555
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            UUID de l'application. Doit être l'application à laquelle appartient
            la clé API : une clé utilisée sur toute autre application reçoit une
            erreur `403`.
          example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
        - name: transaction_uuid
          in: path
          required: true
          description: "UUID de transaction Didit\_: le `uuid` renvoyé par `POST /v3/transactions/` et `GET /v3/transactions/`. Votre propre `txn_id` n'est pas accepté."
          schema:
            type: string
            format: uuid
          example: abcdef12-3456-7890-abcd-ef1234567890
      responses:
        '200':
          description: >-
            Le PDF généré, renvoyé directement au format binaire
            `application/pdf`.
          headers:
            Content-Disposition:
              description: >-
                Toujours `attachment;
                filename=transaction_{transaction_uuid}.pdf`.
              schema:
                type: string
                example: >-
                  attachment;
                  filename=transaction_abcdef12-3456-7890-abcd-ef1234567890.pdf
          content:
            application/pdf:
              schema:
                type: string
                format: binary
        '401':
          description: >-
            La clé API a expiré. Seule une clé créée avec une date d'expiration
            peut expirer ; après cette date, chaque requête effectuée avec
            celle-ci renvoie `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: "La requête n'est pas autorisée. Consultez `detail`\_: une clé API manquante (une clé erronée, révoquée ou expirée renvoie `401`), un `application_id` qui n'est pas celui de l'application de la clé, une clé avec restriction de portée sans `media: read` ou `transactions: read`, une clé limitée à des workflows ou à des sessions approuvées, ou une requête provenant de l'extérieur de la liste d'adresses IP de la clé."
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid key:
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Another application:
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without media read:
                  value:
                    detail: This API key has no read access to media.
                Scoped key without transactions read:
                  value:
                    detail: This API key has no read access to transactions.
                Key limited to workflows or approved sessions:
                  value:
                    detail: >-
                      This API key only reaches sessions inside its workflow or
                      status limits, so it can't use this endpoint.
                Outside the key's IP list:
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            Aucune transaction avec cet UUID n'existe dans l'application (jamais
            créée, supprimée ou détenue par une autre application). Un
            `transaction_uuid` qui n'est pas un UUID n'atteint pas l'API : il
            renvoie une page HTML `404` au lieu de ce corps JSON.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Not found:
                  value:
                    detail: No Transaction matches the given query.
        '429':
          description: >-
            Plus de 600 requêtes GET par minute avec cette clé API. Attendez le
            nombre de secondes indiqué dans `Retry-After`, puis réessayez.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Throttled:
                  value:
                    detail: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
          headers:
            Retry-After:
              description: >-
                Secondes avant la réinitialisation de la fenêtre actuelle d'une
                minute.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: Requêtes autorisées par minute dans ce budget.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requêtes restantes dans la fenêtre actuelle.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Temps Unix auquel la fenêtre se réinitialise.
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl --fail -X GET
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/transactions/abcdef12-3456-7890-abcd-ef1234567890/pdf/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              --output transaction_report.pdf
        - lang: python
          label: Python
          source: |-
            from didit import Didit

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

            content = client.transactions.generate_pdf(
                "abcdef12-3456-7890-abcd-ef1234567890",
            )
            with open("download.pdf", "wb") as file:
                file.write(content)
        - lang: javascript
          label: Node.js
          source: >-
            import { writeFile } from "node:fs/promises";

            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            const didit = new Didit();


            const content = await
            didit.transactions.generatePdf("abcdef12-3456-7890-abcd-ef1234567890");

            await writeFile("download.pdf", Buffer.from(await
            content.arrayBuffer()));
        - 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\nresp, err := client.Transactions.GeneratePDF(ctx, \"abcdef12-3456-7890-abcd-ef1234567890\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: >-
            import java.nio.file.Path;

            import me.didit.Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            client.transactions().generatePdf("abcdef12-3456-7890-abcd-ef1234567890")
                    .writeTo(Path.of("download.pdf"));
        - 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();


            $content =
            $didit->transactions->generatePdf('abcdef12-3456-7890-abcd-ef1234567890');

            $content->saveTo('download.pdf');
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            # and DIDIT_APPLICATION_ID.

            didit = Didit::Client.new


            content =
            didit.transactions.generate_pdf("abcdef12-3456-7890-abcd-ef1234567890")

            File.binwrite("download.pdf", content)
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            using var client = new DiditClient();


            var content = await
            client.Transactions.GeneratePdfAsync("abcdef12-3456-7890-abcd-ef1234567890");

            await content.SaveToAsync("download.pdf");
components:
  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.