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

# Histórico de triagem AML em CSV: API de exportação

> Baixe no Didit o histórico de monitoramento contínuo AML de uma sessão em CSV, uma linha por nova triagem concluída, pronto para auditoria.

Prompt da API de exportação do histórico de análises AML
Copiar o prompt para a área de transferência

<pre>
  \`Download the ongoing AML monitoring history of one Didit verification session as a CSV file through the API.

  Endpoint:
  GET [https://verification.didit.me/v3/session/\{session\_id}/aml-screening-history/export/](https://verification.didit.me/v3/session/\{session_id}/aml-screening-history/export/)

  Authentication:
  Send my Didit API key in the x-api-key header. A scoped key needs decisions: read and media: read (the response is a file; without media: read the call returns 403).

  Goal:

  * Produce the audit evidence that ongoing AML monitoring ran for a subject, as a file a compliance team can hand to an auditor.

  Query parameters:

  * node\_id (optional): the workflow node ID of the AML check when the session ran several AML steps. Without it, the most recent AML check is used.

  Behavior:

  * Works for user (KYC) and business (KYB) session IDs.
  * Streams text/csv with Content-Disposition: attachment; filename="aml-screening-history-SESSION\_ID.csv". Not paginated: the file holds the whole history, newest first.
  * The first line is the header. Each following line is one completed re-screen.
  * Columns: screened\_at, outcome, provider, aml\_status, aml\_score, total\_hits, datasets\_captured\_at, datasets\_sanctions\_last\_updated\_at, datasets\_pep\_last\_updated\_at, datasets\_warnings\_last\_updated\_at, datasets\_adverse\_media\_last\_updated\_at, datasets\_catalog\_version.
  * Empty cell = unknown. Dataset dates are never estimated.
  * provider is an identifier of the data source; treat it as an opaque string.
  * Values that would start a spreadsheet formula (=, +, -, @) are prefixed with an apostrophe.
  * Errors come back as JSON, not CSV.

  Example call:
  curl -X GET "[https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/aml-screening-history/export/](https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/aml-screening-history/export/)" \
  -H "x-api-key: YOUR\_API\_KEY" \
  -o aml-screening-history.csv

  Failure modes:

  * 401: the API key has expired.
  * 403: missing key (a wrong, revoked or expired key gets 401), a key of another application, a scoped key without decisions: read or media: read, or a request from outside the key's IP allowlist.
  * 404: the session does not exist, was deleted, or is outside a scoped key's limits, or it has no AML check (for that node\_id).

  Side effects: none. This is a pure read.

  For the full integration shape, see /integration/integration-prompt.\`
</pre>

Colar em

O arquivo contém as mesmas análises que [Listar histórico de análises AML](https://docs.didit.me/pt-br/management-api/sessions/aml-screening-history.md), cada uma em uma única linha, com a data de atualização da base de dados de cada família de listas (sanções, PEP, avisos, mídia adversa) quando essa data tiver sido informada. O Business Console oferece a mesma exportação ao lado do resultado AML. Consulte [Monitoramento AML contínuo](https://docs.didit.me/pt-br/core-technology/aml-screening/continuous-monitoring-aml-screening.md) para saber o que cada valor significa.


## OpenAPI

````yaml pt-br/openapi-25.json GET /v3/session/{sessionId}/aml-screening-history/export/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/{sessionId}/aml-screening-history/export/:
    get:
      tags:
        - Sessions
      summary: Exportar o histórico de Análise AML em CSV
      description: >-
        Baixe o mesmo histórico de monitoramento contínuo de `GET
        /v3/session/{sessionId}/aml-screening-history/` como um arquivo CSV, com
        uma linha por nova análise concluída, das mais recentes para as mais
        antigas, pronto para entregar a um auditor. O arquivo é transmitido por
        inteiro (sem paginação) e começa com uma linha de cabeçalho; uma célula
        vazia significa desconhecido, as datas dos conjuntos de dados nunca são
        estimadas e um valor que iniciaria uma fórmula de planilha recebe um
        apóstrofo como prefixo. Funciona com IDs de sessão de KYC e KYB; informe
        `node_id` quando a sessão tiver executado mais de uma etapa de AML.
        Informe `month` para exportar um mês do calendário. Os erros são
        retornados como JSON, não como CSV. Uma chave de API com escopo precisa
        de `decisions: read` e `media: read`: a resposta é um arquivo, então uma
        chave sem `media: read` recebe `403`.
      operationId: get_v3_session_aml_screening_history_export
      parameters:
        - name: sessionId
          in: path
          required: true
          description: >-
            UUID da sessão de verificação (o `session_id` retornado por `POST
            /v3/session/`). Aceita IDs de sessão tanto de Verificação de
            usuários (KYC) quanto de Verificação de empresas (KYB): o servidor
            resolve o ID entre os dois tipos de sessão. Deve ser um UUID bem
            formado; um valor malformado não corresponde à rota e retorna um
            `404` em HTML.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
        - name: node_id
          in: query
          required: false
          description: >-
            ID do nó do grafo do fluxo da verificação AML. Necessário apenas
            quando a sessão executou mais de uma etapa AML; sem ele, é usada a
            verificação AML mais recente. Um nó desconhecido retorna `404`.
          schema:
            type: string
            example: feature_aml_1
        - name: month
          in: query
          required: false
          description: >-
            Um mês do calendário UTC no formato `YYYY-MM`. Somente as triagens
            concluídas nesse mês são retornadas; sem ele, todos os meses são
            retornados. Um mês malformado retorna `400`.
          schema:
            type: string
            pattern: ^\d{4}-(0[1-9]|1[0-2])$
            example: 2026-09
      responses:
        '200':
          description: >-
            O arquivo CSV, transmitido como `text/csv` com quebras de linha
            CRLF. Colunas, em ordem: `screened_at` (quando a nova análise
            terminou), `outcome` (`NO_CHANGE`, `CHANGED` ou `FAILED`),
            `provider` (identificador opaco da fonte de dados de AML; não crie
            ramificações com base nele), `aml_status`, `aml_score`,
            `total_hits`, `datasets_captured_at`,
            `datasets_sanctions_last_updated_at`,
            `datasets_pep_last_updated_at`, `datasets_warnings_last_updated_at`,
            `datasets_adverse_media_last_updated_at`,
            `datasets_catalog_version`, `run_id` (a execução de monitoramento),
            `entities_screened` (`1`, ou `0` para uma execução com falha) e
            `new_hits` (vazio quando desconhecido). As datas estão em ISO 8601
            com deslocamento UTC. Uma sessão ainda sem novas análises retorna
            apenas a linha de cabeçalho.
          headers:
            Content-Disposition:
              description: >-
                `attachment; filename="aml-screening-history-{sessionId}.csv"`,
                ou `aml-screening-history-{sessionId}-{month}.csv` quando
                `month` é informado.
              schema:
                type: string
                example: >-
                  attachment;
                  filename="aml-screening-history-11111111-2222-3333-4444-555555555555.csv"
          content:
            text/csv:
              schema:
                type: string
                format: binary
              example: "screened_at,outcome,provider,aml_status,aml_score,total_hits,datasets_captured_at,datasets_sanctions_last_updated_at,datasets_pep_last_updated_at,datasets_warnings_last_updated_at,datasets_adverse_media_last_updated_at,datasets_catalog_version,run_id,entities_screened,new_hits\r\n2026-09-14T04:12:33.481207+00:00,NO_CHANGE,aml_data_source,Approved,0.0,0,2026-09-14T03:58:02.114820+00:00,2026-09-13T21:10:00+00:00,2026-09-13T08:00:00+00:00,2026-09-12T18:45:00+00:00,,2026-09-13,aaaaaaaa-1111-2222-3333-444444444444,1,0\r\n2026-09-13T04:11:58.020914+00:00,FAILED,aml_data_source,Approved,0.0,0,,,,,,,bbbbbbbb-1111-2222-3333-444444444444,0,\r\n"
        '400':
          description: '`month` não é um mês do calendário no formato `YYYY-MM`.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  month:
                    type: array
                    items:
                      type: string
              examples:
                Malformed month:
                  summary: month=2026-13
                  value:
                    month:
                      - Not a calendar month. Use YYYY-MM.
        '401':
          description: >-
            A chave de API com escopo expirou. Este é o único caso que retorna
            `401`: uma chave ausente, inválida ou revogada retorna `403`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Expired key:
                  summary: A data de validade da chave já passou
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Falha de autenticação ou autorização. Uma chave ausente retorna
            `403`, assim como uma chave de outra aplicação, uma chave com escopo
            sem a permissão exigida por este endpoint e uma requisição de fora
            da lista de IPs permitidos da chave; uma chave incorreta, revogada
            ou expirada retorna `401`. Diferencie-as pelo `detail`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Missing or invalid credentials:
                  summary: Cabeçalho x-api-key ausente, ou a chave falhou na validação
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Other application:
                  summary: >-
                    Uma chave válida que pertence a uma aplicação diferente da
                    aplicação da sessão
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without decisions read:
                  summary: 'Chave com escopo sem decisions: read'
                  value:
                    detail: This API key has no read access to decisions.
                Scoped key without media read:
                  summary: 'Chave com escopo sem media: read (a resposta é um arquivo)'
                  value:
                    detail: This API key has no read access to media.
                IP not allowed:
                  summary: Requisição de fora da lista de IPs permitidos da chave
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            A sessão não existe, foi excluída ou está fora dos limites de uma
            chave com escopo, ou não tem verificação AML (para o `node_id`
            informado). A busca da sessão é feita antes da verificação da
            credencial, então um `sessionId` desconhecido retorna `404` mesmo
            sem uma chave válida.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Unknown session:
                  summary: Não existe nenhuma sessão com este ID, ou ela foi excluída
                  value:
                    detail: Not found.
                Outside key limits:
                  summary: >-
                    A sessão está fora dos limites de uma chave com escopo
                    (também retornado para uma sessão excluída há instantes)
                  value:
                    detail: Session not found.
                No AML check:
                  summary: A sessão nunca executou uma etapa AML
                  value:
                    detail: The session does not have an AML check.
                No AML check for node:
                  summary: node_id não corresponde a uma verificação AML da sessão
                  value:
                    detail: >-
                      The session does not have an AML check for node
                      'feature_aml_2'.
        '429':
          description: >-
            Limite de requisições excedido: 600 requisições GET por minuto por
            chave de API. Aguarde `Retry-After` segundos antes de tentar
            novamente; os cabeçalhos `X-RateLimit-*` mostram a cota.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Mensagem de erro legível.
              examples:
                Rate limited:
                  summary: Orçamento do minuto atual esgotado
                  value:
                    detail: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
          headers:
            Retry-After:
              description: Segundos de espera antes de tentar novamente.
              schema:
                type: integer
                minimum: 1
                example: 30
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/aml-screening-history/export/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -o aml-screening-history.csv
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            content = client.sessions.export_aml_screening_history(
                "11111111-2222-3333-4444-555555555555",
            )
            with open("download.csv", "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.

            const didit = new Didit();


            const content = await
            didit.sessions.exportAmlScreeningHistory("11111111-2222-3333-4444-555555555555");

            await writeFile("download.csv", Buffer.from(await
            content.arrayBuffer()));
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.Sessions.ExportAMLScreeningHistory(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsExportAMLScreeningHistoryParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.csv\")\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 client = new Didit();


            client.sessions().exportAmlScreeningHistory("11111111-2222-3333-4444-555555555555")
                    .writeTo(Path.of("download.csv"));
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            $content =
            $didit->sessions->exportAmlScreeningHistory('11111111-2222-3333-4444-555555555555');

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


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            content =
            didit.sessions.export_aml_screening_history("11111111-2222-3333-4444-555555555555")

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

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var content = await
            client.Sessions.ExportAmlScreeningHistoryAsync("11111111-2222-3333-4444-555555555555");

            await content.SaveToAsync("download.csv");
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Chave de API da sua aplicação, em Developers -> API keys no Business
        Console. A chave principal tem acesso total. Uma chave nomeada pode ter
        escopo restrito: nenhum acesso, leitura ou escrita por recurso, limitada
        a alguns fluxos ou a sessões aprovadas, a uma lista de endereços IP e a
        uma data de validade. 401 significa que a chave está errada, revogada ou
        expirada; 403 significa que nenhuma chave foi enviada, que a chave não
        tem acesso a este recurso ou ação, ou que a requisição veio de um
        endereço fora da sua lista de IPs; 404 em uma rota de sessão significa
        que a sessão está fora dos fluxos ou status da chave. Uma chave sem
        acesso a mídia recebe URLs de imagem, vídeo e PDF como null, e uma chave
        sem permissão de escrita em sessões recebe links e tokens de sessão como
        null. Consulte https://docs.didit.me/console/api-keys.

````

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