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

# Transaktions-PDF-Bericht API

> Mit Didit eine überwachte Transaktion als PDF laden: Urteil, Parteien, Alerts, Regelläufe, Screening-Ergebnisse und verbundene Transaktionen.



API-Prompt zum Generieren des Transaktions-PDF-Berichts
        Prompt in die Zwischenablage kopieren



      
      

\<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>



      
      

Einfügen in

Der Bericht wird bei Bedarf aus den aktuellen Daten der Transaktion erzeugt. Rufen Sie ihn daher nach einer Statusänderung erneut auf, um eine aktuelle Kopie zu erhalten. Anders als die anderen Transaktions-Endpoints liegt dieser auf einem anwendungsbezogenen Pfad: Tragen Sie in die URL Ihre Organisations-ID und die ID der Anwendung ein, zu der Ihr API-Schlüssel gehört. Siehe [Organisations-ID finden](https://docs.didit.me/de/getting-started/api-authentication.md#organisations-id-finden).> [!NOTE]
>
> Ein PDF-Bericht zählt als Medium. Ein [bereichsbezogener API-Schlüssel](https://docs.didit.me/de/console/api-keys.md) benötigt **media: read** zusätzlich zu **transactions: read**. Ein Schlüssel ohne Medienzugriff erhält `403`, selbst wenn er die Transaktion als JSON mit [Transaktion abrufen](https://docs.didit.me/de/management-api/transactions/get.md) lesen kann.


## OpenAPI

````yaml de/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 für Ausweisverifizierung. Authentifizierung über den x-api-key-Header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/transactions/{transaction_uuid}/pdf/:
    get:
      tags:
        - Transactions
      summary: Einen Transaktions-PDF-Bericht herunterladen
      description: >-
        Rendern Sie eine überwachte Transaktion als PDF-Bericht: Übersicht und
        Beurteilung, Parteien und Zahlungsmethoden, benutzerdefinierte
        Eigenschaften, Alerts und Regelausführungen, Screening- und
        Travel-Rule-Ergebnisse, die Netzwerkzusammenfassung, die
        Kostenaufschlüsselung, bis zu 50 zugehörige Transaktionen und die 20
        neuesten Aktivitätseinträge. Der Body ist das PDF selbst
        (`application/pdf`), kein JSON.


        Der Bericht wird bei jedem Aufruf aus den aktuellen Daten der
        Transaktion gerendert; rufen Sie ihn nach einer Statusänderung also
        erneut ab. Es wird nichts gespeichert und nichts abgerechnet. Das
        Rendern kann einige Sekunden dauern, verwenden Sie daher ein großzügiges
        Client-Timeout.


        Dieser Endpoint befindet sich auf einem anwendungsbezogenen Pfad: Fügen
        Sie Ihre Organisations-ID und die ID der Anwendung, zu der Ihr
        API-Schlüssel gehört, in die URL ein ([finden Sie Ihre
        Organisations-ID](https://docs.didit.me/de/getting-started/api-authentication#organisations-id-finden)).
        Ein PDF-Bericht zählt als Medium: Ein berechtigungsbeschränkter
        API-Schlüssel benötigt `media: read` und `transactions: read`, und ein
        Schlüssel, der auf bestimmte Workflows oder auf genehmigte Sitzungen
        beschränkt ist, kann ihn nicht aufrufen.
      operationId: get_transaction_pdf
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID der Organisation.
          example: 11111111-2222-3333-4444-555555555555
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            Anwendungs-UUID. Muss die Anwendung sein, zu der der API-Schlüssel
            gehört: Ein für eine andere Anwendung verwendeter Schlüssel erhält
            `403`.
          example: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
        - name: transaction_uuid
          in: path
          required: true
          description: >-
            Didit-Transaktions-UUID: die von `POST /v3/transactions/` und `GET
            /v3/transactions/` zurückgegebene `uuid`. Ihre eigene `txn_id` wird
            nicht akzeptiert.
          schema:
            type: string
            format: uuid
          example: abcdef12-3456-7890-abcd-ef1234567890
      responses:
        '200':
          description: >-
            Das gerenderte PDF, direkt als binäres `application/pdf`
            zurückgegeben.
          headers:
            Content-Disposition:
              description: Immer `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: >-
            Der API-Schlüssel ist abgelaufen. Nur ein Schlüssel, der mit einem
            Ablaufdatum erstellt wurde, kann ablaufen; nach diesem Datum
            antwortet jede Anfrage damit mit `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Die Anfrage ist nicht zulässig. Prüfen Sie `detail`: ein fehlender
            API-Schlüssel (ein falscher, widerrufener oder abgelaufener
            Schlüssel erhält `401`), eine `application_id`, die nicht zur
            Anwendung des Schlüssels gehört, ein berechtigungsbeschränkter
            Schlüssel ohne `media: read` oder `transactions: read`, ein auf
            Workflows oder genehmigte Sitzungen beschränkter Schlüssel oder eine
            Anfrage von außerhalb der IP-Liste des Schlüssels.
          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: >-
            In der Anwendung existiert keine Transaktion mit dieser UUID (nie
            erstellt, gelöscht oder gehört einer anderen Anwendung). Eine
            `transaction_uuid`, die keine UUID ist, erreicht die API nicht: Sie
            gibt stattdessen eine `404`-HTML-Seite anstelle dieses JSON-Bodys
            zurück.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Not found:
                  value:
                    detail: No Transaction matches the given query.
        '429':
          description: >-
            Mehr als 600 GET-Anfragen pro Minute mit diesem API-Schlüssel.
            Warten Sie die Anzahl der Sekunden in `Retry-After` ab und führen
            Sie dann einen Wiederholungsversuch durch.
          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: >-
                Sekunden bis zum Zurücksetzen des aktuellen
                Ein-Minuten-Fensters.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: Pro Minute in diesem Budget zulässige Anfragen.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Im aktuellen Zeitfenster verbleibende Anfragen.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Unix-Zeit, zu der das Zeitfenster zurückgesetzt wird.
              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: >-
        Der API-Schlüssel Ihrer Anwendung, aus Entwickler -> API-Schlüssel in
        der Business Console. Der Primärschlüssel hat Vollzugriff. Ein benannter
        Schlüssel kann im Geltungsbereich eingeschränkt werden: keine, Lese-
        oder Schreibberechtigung pro Ressource, beschränkt auf bestimmte
        Workflows oder genehmigte Sitzungen, auf eine Liste von IP-Adressen und
        auf ein Ablaufdatum. 401 bedeutet, dass der Schlüssel falsch, widerrufen
        oder abgelaufen ist; 403 bedeutet, dass kein Schlüssel gesendet wurde,
        der Schlüssel keinen Zugriff auf diese Ressource oder Aktion hat oder
        die Anfrage von einer Adresse außerhalb seiner IP-Liste stammte; 404 bei
        einer Sitzungsroute bedeutet, dass die Sitzung außerhalb der Workflows
        oder Status des Schlüssels liegt. Ein Schlüssel ohne Medienzugriff
        erhält Bild-, Video- und PDF-URLs als null, und ein Schlüssel ohne
        Schreibberechtigung für Sitzungen erhält Sitzungslinks und Token als
        null. Siehe https://docs.didit.me/console/api-keys.

````

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