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

# Travel Rule delivery history API

> Read the complete Didit Travel Rule delivery history for a transaction, with pagination, transport types, message status and delivery timestamps.

Travel Rule Delivery History API Prompt
Copy prompt to clipboard

<pre>
  \`Read the complete Travel Rule delivery history for one transaction.

  Endpoint:
  GET [https://verification.didit.me/v3/transactions/\{transaction\_id}/travel-rule/deliveries/](https://verification.didit.me/v3/transactions/\{transaction_id}/travel-rule/deliveries/)

  Authentication:
  Use the x-api-key header with my Didit API key. {transaction_id} is the Didit transaction uuid on my application. The key needs transaction read permission.

  Query parameters:

  * limit - entries per page, default 100; larger values are capped at 100, and a value above 1,000,000 returns 400.
  * offset - entries to skip, default 0, up to 1,000,000; a larger value returns 400.

  What to read from the response:

  * count, next, previous, results. count is capped at 100 and is not a reliable total for larger histories; follow next until it is null.
  * Entries are ordered oldest first, then by identifier for ties. Each has uuid, kind (SEND, ANSWER, TXID, CANCEL, POLL), status (QUEUED, SENDING, RETRYING, DELIVERED, FAILED), rail (EMAIL, TRP, INTERNAL, NETWORK, or null before selection), created\_at, delivered\_at and detail\_lines.
  * detail\_lines describes the message kind and status without transport payloads or raw errors. The rail is supplier-neutral: NETWORK collapses every named network into one value.

  Transaction detail embeds only the newest 100 entries as travel\_rule.deliveries, with travel\_rule.deliveries\_truncated when older ones were omitted. Transaction lists omit both fields. travel\_rule.delivery remains the newest entry only.

  Failure modes:

  * 400 - limit or offset above 1,000,000.
  * 401 - a wrong, revoked or expired API key.
  * 403 - the x-api-key header is missing, or the key lacks transaction read permission.
  * 404 - unknown transaction, no Travel Rule transfer, or a deleted transaction.

  Full guide: /transaction-monitoring/travel-rule#delivery-and-retries.\`
</pre>

Paste into

Didit's Travel Rule delivery history API returns every delivery entry for a transaction, paginated oldest first.

Use your `x-api-key` with transaction read permission. `transaction_id` is the Didit transaction UUID. A missing transaction or transfer returns `404`; insufficient permission returns `403`.

## Pagination and ordering

The response contains `count`, `next`, `previous`, and `results`. `limit` defaults to 100 and is capped at 100; `offset` defaults to zero and must not exceed 1,000,000, which returns `400`. `count` is normally capped at 100 and is not a reliable total for larger histories. Follow `next` until it is `null`, regardless of `count`. Entries are ordered by creation time, then identifier for ties.

Each entry has `uuid`, `kind`, `status`, `rail`, `created_at`, `delivered_at`, and `detail_lines`. `rail` is `EMAIL`, `TRP`, `INTERNAL`, `NETWORK`, or `null` before selection. `detail_lines` describes the message kind and status without raw errors or transport payloads.

## Embedded history

[Transaction detail](https://docs.didit.me/management-api/transactions/get.md) includes only the newest 100 entries in `travel_rule.deliveries`, presented oldest first. `deliveries_truncated` tells you whether older entries were omitted. Transaction lists omit these two history fields. The existing `delivery` field continues to describe the newest delivery.

See [delivery and retries](https://docs.didit.me/transaction-monitoring/travel-rule.md#delivery-and-retries) for status meanings. [Counterparty messages](https://docs.didit.me/management-api/travel-rule/list-messages.md) are a separate conversation endpoint.


## OpenAPI

````yaml openapi-25.json GET /v3/transactions/{transaction_id}/travel-rule/deliveries/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: Identity verification API. Authenticate with x-api-key header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/transactions/{transaction_id}/travel-rule/deliveries/:
    get:
      tags:
        - Travel Rule
      summary: List Travel Rule delivery history
      description: >-
        Read the complete delivery history for a transaction, oldest first.
        Requires transaction read permission. Unlike the newest 100 entries
        embedded in detail, this endpoint paginates the full history. See
        [delivery history](/management-api/travel-rule/list-deliveries).
      operationId: listTravelRuleDeliveries
      parameters:
        - name: transaction_id
          in: path
          required: true
          description: Didit-stable transaction UUID that owns the transfer.
          schema:
            type: string
            format: uuid
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 1000000
            default: 100
          description: >-
            Entries per page. Defaults to 100 and larger values are capped at
            100; a value above 1,000,000 returns `400`.
        - name: offset
          in: query
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            Number of entries to skip, up to 1,000,000. A larger value returns
            `400`.
      responses:
        '200':
          description: Paginated delivery history, oldest first.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleDeliveryLogPage'
              example:
                count: 1
                next: null
                previous: null
                results:
                  - uuid: 11111111-2222-4333-8444-555555555555
                    kind: SEND
                    status: DELIVERED
                    rail: NETWORK
                    created_at: '2026-11-01T10:00:00Z'
                    delivered_at: '2026-11-01T10:00:01Z'
                    detail_lines:
                      - Send
                      - Delivered
        '400':
          description: A `limit` or `offset` above 1,000,000 was sent.
        '401':
          description: A wrong, revoked or expired API key.
        '403':
          description: >-
            Missing, invalid, or revoked API key, or the key cannot read this
            application's transactions. A missing key returns `403`; a wrong,
            revoked or expired key returns `401`.
        '404':
          description: Transaction or Travel Rule transfer not found.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/transactions/11111111-2222-3333-4444-555555555555/travel-rule/deliveries/?limit=100&offset=0'
            \
              -H 'x-api-key: YOUR_API_KEY'
components:
  schemas:
    TravelRuleDeliveryLogPage:
      type: object
      required:
        - count
        - next
        - previous
        - results
      properties:
        count:
          type: integer
          minimum: 0
          description: >-
            Count normally capped at 100; it is not a reliable total for larger
            histories. Follow next until null, regardless of count.
        next:
          type: string
          format: uri
          nullable: true
          description: Next page URL, or null.
        previous:
          type: string
          format: uri
          nullable: true
          description: Previous page URL, or null.
        results:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleDeliveryLogEntry'
          description: Entries ordered oldest first by creation time, then identifier.
    TravelRuleDeliveryLogEntry:
      type: object
      description: One supplier-neutral entry in the delivery history.
      required:
        - uuid
        - kind
        - status
        - rail
        - created_at
        - delivered_at
        - detail_lines
      properties:
        uuid:
          type: string
          format: uuid
          description: Delivery identifier.
        kind:
          type: string
          enum:
            - SEND
            - ANSWER
            - TXID
            - CANCEL
            - POLL
          description: >-
            What the message carries. `SEND`: the transfer's first message to
            the counterparty (outbound; the rail is chosen when it is sent).
            `ANSWER`: your accept or decline, owed to the network that asked
            (inbound). `TXID`: the on-chain transaction hash, after you finish
            the transfer. `CANCEL`: the cancellation, after you cancel it.
            `POLL`: a status query to a network that offers one, repeated every
            5 minutes while the transfer waits on the counterparty.
        status:
          type: string
          enum:
            - QUEUED
            - SENDING
            - RETRYING
            - DELIVERED
            - FAILED
          description: Current delivery status.
        rail:
          type: string
          nullable: true
          enum:
            - EMAIL
            - TRP
            - INTERNAL
            - NETWORK
            - null
          description: Supplier-neutral transport type; null until selected.
        created_at:
          type: string
          format: date-time
          description: When the delivery was created.
        delivered_at:
          type: string
          format: date-time
          nullable: true
          description: When delivery completed, or null.
        detail_lines:
          type: array
          items:
            type: string
          description: >-
            Human-readable message kind and delivery status. Does not expose
            transport payloads or raw errors.
      example:
        uuid: 11111111-2222-4333-8444-555555555555
        kind: SEND
        status: DELIVERED
        rail: NETWORK
        created_at: '2026-11-01T10:00:00Z'
        delivered_at: '2026-11-01T10:00:01Z'
        detail_lines:
          - Send
          - Delivered
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Your application's API key, from Developers -> API keys in the Business
        Console. The primary key has full access. A named key can be scoped:
        none, read or write per resource, limited to some workflows or to
        approved sessions, to a list of IP addresses, and to an expiry date. 401
        means the key is wrong, revoked or expired; 403 means no key was sent,
        the key has no access to this resource or action, or the request came
        from an address outside its IP list; 404 on a session route means the
        session is outside the key's workflows or statuses. A key without media
        access receives image, video and PDF URLs as null, and a key without
        sessions write receives session links and tokens as null. See
        https://docs.didit.me/console/api-keys.

````

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