> ## 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 para listar notas de transacciones

> Didit lista las notas de una transacción monitorizada, de la más reciente a la más antigua, con paginación por limit y offset.



Prompt de la API para listar notas de transacciones
        Copiar el prompt al portapapeles



      
      

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



      
      

Pegar en

Las notas conforman la cronología de analistas de una transacción: la misma lista que los revisores ven en **Notas** en el [detalle de la transacción](https://docs.didit.me/es/transaction-monitoring/console.md#detalle-de-la-transacción) en la Console. Añade las tuyas con [Crear nota de transacción](https://docs.didit.me/es/management-api/transactions/create-note.md) y consulta la propia transacción, incluidas sus `activities`, con [Obtener transacción](https://docs.didit.me/es/management-api/transactions/get.md).Las notas con `actor_name` establecido en `Rule Engine` provienen de Didit: de la [acción](https://docs.didit.me/es/transaction-monitoring/rules.md#acciones) `add_note` de una regla o de un problema al crear la sesión de verificación de acción del usuario para una transacción en `AWAITING_USER` (no se pudo crear la sesión o Didit recurrió a otro flujo).


## OpenAPI

````yaml es/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 verificación de identidad. Autentícate con el encabezado x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/transactions/{transaction_id}/notes/:
    get:
      tags:
        - Transactions
      summary: Listar notas de transacciones
      description: >-
        Lista las notas de una transacción monitorizada, de la más reciente a la
        más antigua (`created_at` descendente): las notas que añades a través de
        la API, las notas y los cambios de estado que hacen los revisores en la
        Console, y las notas que Didit añade automáticamente (la acción
        `add_note` de una regla, o un problema al crear la sesión de
        verificación de la acción del usuario), que llevan el `actor_name` `Rule
        Engine`. `metadata` distingue los tipos de nota.


        Paginado con `limit` y `offset`. `count` es exacto hasta 100 y se limita
        a 100 por encima de esa cifra, así que sigue `next` hasta que sea `null`
        en lugar de calcular las páginas a partir de `count`. Es una lectura sin
        efectos secundarios.


        Una clave de API con alcance limitado necesita `transactions: read`; una
        clave limitada a algunos flujos o a sesiones aprobadas no puede llamar a
        este endpoint. Los revisores ven la misma lista en **Notas** del
        [detalle de la
        transacción](https://docs.didit.me/es/transaction-monitoring/console#detalle-de-la-transacción).
      operationId: list_transaction_notes
      parameters:
        - name: transaction_id
          in: path
          required: true
          description: >-
            UUID de transacción de Didit: el `uuid` que devuelven `POST
            /v3/transactions/` y `GET /v3/transactions/`. No se acepta tu propio
            `txn_id`.
          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. El valor predeterminado es 50. Un valor
            que no sea un entero positivo vuelve a 50; un valor superior a
            1000000 devuelve `400`.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            Posición, empezando en cero, de la primera nota que se devuelve. Es
            preferible seguir `next`. Un valor que no sea un número entero se
            toma como 0; un valor superior a 1000000 devuelve `400`.
      responses:
        '200':
          description: Una página de notas, de la más reciente a la más antigua.
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                  - next
                  - previous
                  - results
                properties:
                  count:
                    type: integer
                    description: >-
                      Número de notas de la transacción: exacto hasta 100,
                      limitado a 100 por encima de esa cifra. Sigue `next` en
                      lugar de calcular páginas a partir de él.
                  next:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      URL absoluta de la página siguiente, o `null` en la última
                      página.
                  previous:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      URL absoluta de la página anterior, o `null` en la primera
                      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` u `offset` supera 1000000. El cuerpo es un array JSON de
            mensajes, no un 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: >-
            La clave de API ha expirado. Solo puede expirar una clave creada con
            fecha de caducidad; a partir de esa fecha, toda solicitud que la use
            responde `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            La solicitud no está permitida. Si falta la clave, se recibe el
            mensaje genérico; una clave incorrecta, revocada o expirada recibe
            `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: >-
            No existe ninguna transacción con este UUID en la aplicación (nunca
            se creó, se eliminó o pertenece a otra aplicación). Un
            `transaction_id` que no es un UUID no llega a la API: devuelve una
            página HTML `404` en lugar de este cuerpo JSON.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Not found:
                  value:
                    detail: No Transaction matches the given query.
        '429':
          description: >-
            Más de 600 solicitudes GET por minuto con esta clave de API. Espera
            el número de segundos indicado en `Retry-After` y vuelve a
            intentarlo.
          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 hasta que se reinicia la ventana actual de un minuto.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: Solicitudes permitidas por minuto en este presupuesto.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Solicitudes restantes en la ventana actual.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Tiempo Unix en que se restablece la ventana.
              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: Una nota en la cronología de revisión de una transacción monitorizada.
      required:
        - uuid
        - note
        - actor_email
        - actor_name
        - metadata
        - created_at
      properties:
        uuid:
          type: string
          format: uuid
          description: Identificador de la nota.
        note:
          type: string
          description: Cuerpo de la nota en texto plano.
        actor_email:
          type: string
          format: email
          nullable: true
          description: >-
            Correo electrónico del usuario de la consola que escribió la nota o
            cambió el estado. `null` para las notas creadas con una clave de API
            y para las notas que Didit añade automáticamente.
        actor_name:
          type: string
          nullable: true
          description: >-
            Nombre visible del usuario de la Console (su correo electrónico si
            no tiene nombre). `Rule Engine` en las notas que Didit añade
            automáticamente. `null` en las notas creadas con una clave de API.
        metadata:
          type: object
          description: >-
            Distingue los tipos de nota. Las notas escritas mediante la API o la
            consola incluyen `mentioned_emails`. Un cambio de estado realizado
            en la consola incluye `type: status_change` con `previous_status`,
            `new_status`, `reason_code` y `reason_label`. Las notas que añade
            Didit incluyen `source`: `rule_action` (con `rule_uuid`) para la
            acción `add_note` de una regla, o `remediation_session` para un
            problema al crear la sesión de verificación de acción del usuario.
          properties:
            mentioned_emails:
              type: array
              items:
                type: string
                format: email
              description: >-
                Miembros de la organización mencionados, en minúsculas y sin
                duplicados. Vacío cuando no se mencionó a nadie.
            type:
              type: string
              enum:
                - status_change
              description: >-
                Presente en las notas que registran un cambio de estado
                realizado en la Console.
            previous_status:
              type: string
              enum:
                - APPROVED
                - IN_REVIEW
                - DECLINED
                - AWAITING_USER
              description: Estado antes del cambio.
            new_status:
              type: string
              enum:
                - APPROVED
                - IN_REVIEW
                - DECLINED
                - AWAITING_USER
              description: Estado después del cambio.
            reason_code:
              type: string
              nullable: true
              description: Código de motivo indicado con el cambio.
            reason_label:
              type: string
              nullable: true
              description: Etiqueta de motivo indicada con el cambio.
            source:
              type: string
              enum:
                - rule_action
                - remediation_session
              description: Presente en las notas que Didit añade automáticamente.
            rule_uuid:
              type: string
              format: uuid
              description: >-
                Regla cuya acción `add_note` escribió la nota (con `source:
                rule_action`).
        created_at:
          type: string
          format: date-time
          description: Fecha y hora en que se almacenó la nota.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clave de API de tu aplicación, que encontrarás en Developers -> API
        keys en la Business Console. La clave principal tiene acceso completo.
        Una clave con nombre puede tener un alcance limitado: ninguno, lectura o
        escritura por recurso, limitada a algunos flujos o a sesiones aprobadas,
        a una lista de direcciones IP y a una fecha de caducidad. 401 significa
        que la clave es incorrecta, se revocó o expiró; 403 significa que no se
        envió ninguna clave, que la clave no tiene acceso a este recurso o
        acción, o que la solicitud provino de una dirección fuera de su lista de
        IP; 404 en una ruta de sesión significa que la sesión está fuera de los
        flujos o estados de la clave. Una clave sin acceso a contenido
        multimedia recibe las URL de imágenes, videos y PDF como null, y una
        clave sin permiso de escritura en sesiones recibe los enlaces y tokens
        de sesión como null. Consulta https://docs.didit.me/console/api-keys.

````

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