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

# Listar notas de transação (API)

> Liste as notas de uma transação monitorizada na Didit, das mais recentes para as mais antigas, com paginação por limit e offset.



Prompt da API para listar notas de transações
        Copiar o prompt para a área de transferência



      
      

\<pre>

\`List the notes on one Didit monitored transaction through the Management API.

Endpoint:
GET https://verification.didit.me/v3/transactions/{transaction_id}/notes/

Authentication:
Use the x-api-key header with my Didit API key. A scoped key needs transactions: read. Keys limited to specific workflows or to approved sessions cannot call this endpoint.

Goal:
\- Read the review timeline of a transaction (my own API notes, Console reviewer notes, and the notes Didit adds automatically) so I can show it in my back-office or sync it to my case tool.

Path parameter:
\- transaction_id: the Didit transaction uuid returned by POST /v3/transactions/ or GET /v3/transactions/. Not my own txn_id.

Behavior:
\- Notes come back newest first (created_at descending).
\- Paginated with limit (default 50) and offset. count is exact up to 100 and capped at 100 above that, so keep following next until it is null instead of computing pages from count.
\- metadata tells the note types apart: mentioned_emails on notes written through the API or the Console; type "status_change" with previous_status, new_status, reason_code and reason_label when a reviewer changed the status in the Console; source "rule_action" (with rule_uuid) or "remediation_session" on notes Didit adds automatically, which carry actor_name "Rule Engine".

Example call:
curl -X GET "https://verification.didit.me/v3/transactions/{transaction_id}/notes/?limit=50" \
-H "x-api-key: YOUR_API_KEY"

What to read from the response:
\- results[].uuid, note, created_at: the note itself.
\- results[].actor_email and actor_name: the Console user who wrote it. Both are null for notes created with an API key.
\- results[].metadata: mentions and the note type (see Behavior).
\- next: URL of the next page, null on the last page.

Failure modes:
\- 400: limit or offset above 1000000.
\- 401: the API key has expired.
\- 403: missing API key (a wrong, revoked or expired key gets 401) ({"detail": "You do not have permission to perform this action."}), a scoped key without 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. This is a pure read.

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

\</pre>



      
      

Colar em

As notas constituem a cronologia da transação para o analista: a mesma lista que os revisores veem em **Notas** no [detalhe da transação](https://docs.didit.me/pt/transaction-monitoring/console.md#detalhe-da-transação) na Consola. Adicione as suas próprias com [Criar nota de transação](https://docs.didit.me/pt/management-api/transactions/create-note.md), e consulte a própria transação, incluindo os respetivos `activities`, com [Obter transação](https://docs.didit.me/pt/management-api/transactions/get.md).As notas com `actor_name` definido como `Rule Engine` vêm da Didit: a [ação](https://docs.didit.me/pt/transaction-monitoring/rules.md#ações) `add_note` de uma regra, ou um problema ao criar a sessão de verificação da ação do utilizador para uma transação em `AWAITING_USER` (a sessão não pôde ser criada, ou a Didit recorreu a outro fluxo).


## OpenAPI

````yaml pt/openapi-25.json GET /v3/transactions/{transaction_id}/notes/
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/transactions/{transaction_id}/notes/:
    get:
      tags:
        - Transactions
      summary: Listar notas de transação
      description: >-
        Listar as notas de uma transação monitorizada, das mais recentes para as
        mais antigas (`created_at` descendente): notas adicionadas por si
        através da API, notas e alterações de estado efetuadas pelos revisores
        na Console, e notas adicionadas automaticamente pela Didit (a ação
        `add_note` de uma regra, ou um problema ao criar a sessão de verificação
        de ação do utilizador), que apresentam `actor_name` `Rule Engine`. O
        campo `metadata` distingue os tipos de notas.


        Paginado com `limit` e `offset`. `count` é exato até 100 e limitado a
        100 acima disso, pelo que deve seguir `next` até ser `null` em vez de
        calcular páginas a partir de `count`. Esta é uma leitura sem efeitos
        secundários.


        Uma chave de API com âmbito restrito necessita de `transactions: read`;
        uma chave limitada a alguns fluxos ou a sessões aprovadas não pode
        chamar este endpoint. Os revisores veem a mesma lista em **Notes** nos
        [detalhes da
        transação](https://docs.didit.me/pt/transaction-monitoring/console#detalhe-da-transação).
      operationId: list_transaction_notes
      parameters:
        - name: transaction_id
          in: path
          required: true
          description: >-
            UUID da transação Didit: o `uuid` devolvido por `POST
            /v3/transactions/` e `GET /v3/transactions/`. O seu próprio `txn_id`
            não é aceite.
          schema:
            type: string
            format: uuid
          example: abcdef12-3456-7890-abcd-ef1234567890
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 1000000
          description: >-
            Número de notas por página. O valor predefinido é 50. Um valor que
            não seja um número inteiro positivo reverte para 50; um valor acima
            de 1000000 devolve `400`.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            Posição de base zero da primeira nota a devolver. Prefira seguir
            `next`. Um valor que não seja um número inteiro reverte para 0; um
            valor superior a 1000000 devolve `400`.
      responses:
        '200':
          description: Uma página de notas, as mais recentes primeiro.
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                  - next
                  - previous
                  - results
                properties:
                  count:
                    type: integer
                    description: >-
                      Número de notas na transação: exato até 100, limitado a
                      100 acima desse valor. Siga `next` em vez de calcular as
                      páginas a partir deste valor.
                  next:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      URL absoluto da página seguinte, ou `null` na última
                      página.
                  previous:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      URL absoluto da página anterior, ou `null` na primeira
                      página.
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/TransactionNote'
              examples:
                API, Console and rule notes:
                  value:
                    count: 3
                    next: null
                    previous: null
                    results:
                      - uuid: c1111111-2222-4333-8444-555555555555
                        note: Customer confirmed the withdrawal by phone.
                        actor_email: null
                        actor_name: null
                        metadata:
                          mentioned_emails:
                            - analyst@example.com
                        created_at: '2026-10-16T10:05:12.481203Z'
                      - uuid: c2222222-3333-4444-8555-666666666666
                        note: >-
                          Status changed from IN_REVIEW to APPROVED. Reason:
                          Source of funds verified
                        actor_email: reviewer@example.com
                        actor_name: Alex Reviewer
                        metadata:
                          type: status_change
                          previous_status: IN_REVIEW
                          new_status: APPROVED
                          reason_code: SOF_VERIFIED
                          reason_label: Source of funds verified
                        created_at: '2026-10-15T17:22:40.103911Z'
                      - uuid: c3333333-4444-4555-8666-777777777777
                        note: >-
                          Large withdrawal to a new wallet: check the source of
                          funds.
                        actor_email: null
                        actor_name: Rule Engine
                        metadata:
                          rule_uuid: d1111111-2222-4333-8444-555555555555
                          source: rule_action
                        created_at: '2026-10-15T08:42:12.004518Z'
                No notes yet:
                  value:
                    count: 0
                    next: null
                    previous: null
                    results: []
        '400':
          description: >-
            `limit` ou `offset` é superior a 1000000. O corpo é um array JSON de
            mensagens, e não um objeto.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              examples:
                Limit too large:
                  value:
                    - limit must not exceed 1000000.
                Offset too large:
                  value:
                    - offset must not exceed 1000000.
        '401':
          description: >-
            A chave de API expirou. Apenas uma chave criada com uma data de
            validade pode expirar; após essa data, cada pedido com ela responde
            `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            O pedido não é permitido. Uma chave em falta recebe a mensagem
            genérica; uma chave incorreta, revogada ou expirada recebe `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid key:
                  value:
                    detail: You do not have permission to perform this action.
                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: >-
            Não existe nenhuma transação com este UUID na aplicação (nunca
            criada, eliminada ou pertencente a outra aplicação). Um
            `transaction_id` que não seja um UUID não chega à API: devolve uma
            página HTML `404` em vez deste corpo JSON.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Not found:
                  value:
                    detail: No Transaction matches the given query.
        '429':
          description: >-
            Mais de 600 pedidos GET por minuto com esta chave de API. Aguarde o
            número de segundos indicado em `Retry-After` e tente novamente.
          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: Segundos até que a janela atual de um minuto seja reposta.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: Pedidos permitidos por minuto neste orçamento.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Pedidos restantes na janela atual.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Hora Unix em que a janela é reposta.
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/transactions/abcdef12-3456-7890-abcd-ef1234567890/notes/?limit=50'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            for item in client.transactions.notes.list(
                "abcdef12-3456-7890-abcd-ef1234567890",
            ):
                print(item)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            for await (const item of
            didit.transactions.notes.list("abcdef12-3456-7890-abcd-ef1234567890"))
            {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Transactions.Notes.ListAutoPaging(ctx, \"abcdef12-3456-7890-abcd-ef1234567890\", didit.TransactionsNotesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            for (var item :
            client.transactions().notes().list("abcdef12-3456-7890-abcd-ef1234567890"))
            {
                System.out.println(item);
            }
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            foreach
            ($didit->transactions->notes->list('abcdef12-3456-7890-abcd-ef1234567890')
            as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            didit.transactions.notes.list("abcdef12-3456-7890-abcd-ef1234567890").auto_paging_each
            do |item|
              puts item.to_h
            end
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            await foreach (var item in await
            client.Transactions.Notes.ListAsync("abcdef12-3456-7890-abcd-ef1234567890"))

            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    TransactionNote:
      type: object
      description: Uma nota na cronologia de revisão de uma transação monitorizada.
      required:
        - uuid
        - note
        - actor_email
        - actor_name
        - metadata
        - created_at
      properties:
        uuid:
          type: string
          format: uuid
          description: Identificador da nota.
        note:
          type: string
          description: Corpo da nota em texto simples.
        actor_email:
          type: string
          format: email
          nullable: true
          description: >-
            E-mail do utilizador da Consola que escreveu a nota ou alterou o
            estado. `null` para notas criadas com uma chave de API e para notas
            adicionadas automaticamente pela Didit.
        actor_name:
          type: string
          nullable: true
          description: >-
            Nome de apresentação do utilizador da Console (o seu e-mail quando
            não tem nome). `Rule Engine` para as notas que a Didit adiciona
            automaticamente. `null` para notas criadas com uma chave de API.
        metadata:
          type: object
          description: >-
            Distingue os tipos de nota. As notas escritas através da API ou da
            Consola contêm `mentioned_emails`. Uma alteração de estado efetuada
            na Consola contém `type: status_change` com `previous_status`,
            `new_status`, `reason_code` e `reason_label`. As notas adicionadas
            pela Didit contêm `source`: `rule_action` (com `rule_uuid`) para a
            ação `add_note` de uma regra, ou `remediation_session` para um
            problema ao criar a sessão de verificação de ação do utilizador.
          properties:
            mentioned_emails:
              type: array
              items:
                type: string
                format: email
              description: >-
                Membros da organização mencionados, em minúsculas e sem
                duplicados. Vazio quando ninguém foi mencionado.
            type:
              type: string
              enum:
                - status_change
              description: >-
                Presente em notas que registam uma alteração de estado efetuada
                na Consola.
            previous_status:
              type: string
              enum:
                - APPROVED
                - IN_REVIEW
                - DECLINED
                - AWAITING_USER
              description: Estado antes da alteração.
            new_status:
              type: string
              enum:
                - APPROVED
                - IN_REVIEW
                - DECLINED
                - AWAITING_USER
              description: Estado após a alteração.
            reason_code:
              type: string
              nullable: true
              description: Código do motivo indicado com a alteração.
            reason_label:
              type: string
              nullable: true
              description: Rótulo do motivo indicado com a alteração.
            source:
              type: string
              enum:
                - rule_action
                - remediation_session
              description: Presente em notas que a Didit adiciona automaticamente.
            rule_uuid:
              type: string
              format: uuid
              description: >-
                Regra cuja ação `add_note` escreveu a nota (com `source:
                rule_action`).
        created_at:
          type: string
          format: date-time
          description: Quando a nota foi guardada.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, 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á
        incorreta, 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 o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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