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

# Get Transaction

> Retrieve the full monitoring record for one transaction: parties, score/severity, rule runs, alerts, Travel Rule outcome, remediation session.

export const AgentPromptAccordion = ({prompt, title = "AI Agent Integration Prompt"}) => {
  const [copied, setCopied] = React.useState(false);
  const handleCopy = e => {
    e.stopPropagation();
    if (!prompt) return;
    navigator.clipboard.writeText(prompt.trim()).then(() => {
      setCopied(true);
      setTimeout(() => setCopied(false), 2000);
    });
  };
  const agents = ["Claude Code", "Codex", "Cursor", "Devin", "Windsurf", "GitHub Copilot"];
  return <div className="didit-agent-card">
      {}
      <div className="didit-agent-titlebar">
        <div className="didit-agent-dots" aria-hidden="true">
          <span className="didit-agent-dot didit-agent-dot-red"></span>
          <span className="didit-agent-dot didit-agent-dot-yellow"></span>
          <span className="didit-agent-dot didit-agent-dot-green"></span>
        </div>
        <span className="didit-agent-filename">{title}</span>
        <button type="button" className={`didit-agent-copy ${copied ? "didit-agent-copy-copied" : ""}`} onClick={handleCopy} title="Copy prompt to clipboard" aria-label={copied ? "Copied!" : "Copy prompt to clipboard"}>
          {copied ? <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <path d="M3 8.5l3.5 3.5L13 4" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
              </svg>
              <span>Copied</span>
            </> : <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <rect x="5" y="5" width="9" height="9" rx="1.5" stroke="currentColor" strokeWidth="1.5" />
                <path d="M11 5V3.5A1.5 1.5 0 0 0 9.5 2h-6A1.5 1.5 0 0 0 2 3.5v6A1.5 1.5 0 0 0 3.5 11H5" stroke="currentColor" strokeWidth="1.5" />
              </svg>
              <span>Copy</span>
            </>}
        </button>
      </div>

      {}
      <pre className="didit-agent-body"><code>{prompt.trim()}</code></pre>

      {}
      <div className="didit-agent-footer">
        <span className="didit-agent-footer-label">Paste into</span>
        <div className="didit-agent-chips">
          {agents.map(name => <span key={name} className="didit-agent-chip">{name}</span>)}
        </div>
      </div>
    </div>;
};

<AgentPromptAccordion
  title="Get Transaction API Prompt"
  prompt={`Fetch the full detail of a Didit monitored transaction through the Management API.

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

Authentication:
Use the x-api-key header with my Didit API key.

Goal:
- Retrieve every detail of a transaction — linked parties, payment methods, alerts, rule matches, travel-rule checks, remediation links, network snapshots, cost breakdown — so I can render a detail screen or feed a downstream decision.

Path parameter:
- transaction_id — accepts either Didit's stable uuid OR your application-supplied txn_id (from POST /v3/transactions/). Both resolve to the same record within your application.

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

What to read from the response:
- uuid, transaction_number, txn_id — identifiers.
- status, score, severity, decision_reason_code, decision_reason_label — current verdict.
- transaction_details — direction, amount, currency, currency_kind, action_type, payment_details.
- parties — APPLICANT, COUNTERPARTY, EXTERNAL party records (each with entity_type, vendor_data, full_name, address, payment_method, device_context). The party with role APPLICANT is the subject; COUNTERPARTY is the other side.
- cost_breakdown — provider-by-provider cost detail for this transaction.
- rule_runs / alerts — which rules fired and their outcomes.
- wallet_screening — blockchain analytics results (when currency_kind = "crypto").
- travel_rule_details — Travel Rule message status and counterparty VASP metadata.
- tags — Console tags (uuid, name, color).
- assigned_to_name — Console reviewer who owns the transaction.

Use cases:
- Render the Console-equivalent "Transaction detail" screen in your back-office.
- Reconcile rule outcomes against your own ledger.
- Poll after a transaction.status.updated webhook to fetch the fresh verdict.

Failure modes:
- 401 — missing or malformed x-api-key.
- 403 — canonical { "detail": "You do not have permission to perform this action." } envelope; also returned when the transaction belongs to another application.
- 404 — transaction not found in this application (or soft-deleted via Console).
- 429 — rate limited; back off and retry.

Side effects: none. This is a pure read.

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


## OpenAPI

````yaml GET /v3/transactions/{transaction_id}/
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}/:
    get:
      tags:
        - Transactions
      summary: Get transaction
      description: >-
        Retrieve the full monitoring record for one transaction: parties,
        score/severity, rule runs, alerts, Travel Rule outcome, remediation
        session.
      operationId: getTransaction
      parameters:
        - name: transaction_id
          in: path
          required: true
          description: >-
            Didit-stable transaction UUID (the `uuid` returned from create /
            list, **not** your `txn_id`).
          schema:
            type: string
            format: uuid
          example: abcdef12-3456-7890-abcd-ef1234567890
      responses:
        '200':
          description: Full transaction detail.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionDetail'
              examples:
                In review with an alert:
                  value:
                    uuid: abcdef12-3456-4890-abcd-ef1234567890
                    transaction_number: 4123
                    txn_id: your-txn-2026-05-17-001
                    txn_date: '2026-05-17T08:42:00Z'
                    zone_id: Europe/Madrid
                    transaction_type: finance
                    action_type: withdrawal
                    direction: OUTBOUND
                    status: IN_REVIEW
                    amount: '1500'
                    currency: EUR
                    currency_type: fiat
                    amount_in_default_currency: '1620.45'
                    default_currency_code: USD
                    preferred_currency_amount: '1620.45'
                    preferred_currency_code: USD
                    payment_details: Withdrawal to crypto wallet
                    payment_txn_id: null
                    score: 78
                    severity: HIGH
                    decision_reason_code: WALLET_HIGH_RISK
                    decision_reason_label: Destination wallet flagged as high risk
                    vendor_data: user-12345
                    metadata:
                      subject:
                        entity_type: individual
                        vendor_data: user-12345
                        full_name: Maria Garcia
                        address: {}
                        institution_details: {}
                        device_context: {}
                      counterparty: {}
                    props:
                      order_id: ord-9988
                    tags: []
                    parties:
                      - uuid: b1111111-2222-4333-8444-555555555555
                        role: APPLICANT
                        entity_type: individual
                        kind: USER
                        vendor_data: user-12345
                        full_name: Maria Garcia
                        first_name: null
                        last_name: null
                        country_code: null
                        dob: null
                        address: {}
                        institution_info: {}
                        device: {}
                        external_party_snapshot: null
                    payment_methods: []
                    activities: []
                    alerts:
                      - uuid: a7b8c9d0-1234-4abc-9def-567890abcdef
                        title: Destination wallet flagged as high risk
                        description: Provider risk score exceeded the configured threshold.
                        severity: HIGH
                        status: OPEN
                        source: RULE
                        metadata: {}
                        created_at: '2026-05-17T08:42:12Z'
                        due_at: null
                    rule_runs: []
                    provider_results: []
                    travel_rule: null
                    network_snapshot: null
                    remediation: null
                    cost_breakdown: null
        '403':
          description: >-
            Missing, invalid, or revoked API key, or the key cannot read this
            application's transactions. This endpoint returns `403` (never
            `401`) for authentication failures, including requests with no
            credentials at all.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            No transaction with this UUID exists for the application (deleted,
            never created, belongs to another application, or the path segment
            is not a valid UUID).
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: >-
            Rate limit exceeded; back off and retry after the interval indicated
            in `Retry-After`.
          content:
            application/json:
              examples:
                Throttled:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/transactions/abcdef12-3456-7890-abcd-ef1234567890/'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            import os

            import requests

            uuid = 'abcdef12-3456-7890-abcd-ef1234567890'
            resp = requests.get(
                f'https://verification.didit.me/v3/transactions/{uuid}/',
                headers={'x-api-key': os.environ['DIDIT_API_KEY']},
                timeout=10,
            )
            resp.raise_for_status()
            tx = resp.json()
            for alert in tx['alerts']:
                print(alert.get('code'), alert.get('severity'))
        - lang: javascript
          label: JavaScript
          source: >-
            const uuid = 'abcdef12-3456-7890-abcd-ef1234567890';

            const resp = await
            fetch(`https://verification.didit.me/v3/transactions/${uuid}/`, {
              headers: { 'x-api-key': process.env.DIDIT_API_KEY },
            });

            if (!resp.ok) throw new Error(`Lookup failed: ${resp.status}`);

            const tx = await resp.json();

            console.log(tx.status, tx.severity, tx.alerts.length, 'alerts');
components:
  schemas:
    TransactionDetail:
      type: object
      description: >-
        Full monitoring record for one transaction, as returned by `GET
        /v3/transactions/{transaction_id}/` and `POST /v3/transactions/`.
      properties:
        uuid:
          type: string
          format: uuid
          description: >-
            Didit-stable transaction identifier. Use as `{transaction_id}` for
            follow-up calls.
        transaction_number:
          type: integer
          description: >-
            Application-scoped sequential transaction number shown in Console
            (e.g. `4123`).
        txn_id:
          type: string
          description: >-
            The `transaction_id` you supplied at create time (max 128 chars).
            Unique per application.
        txn_date:
          type: string
          format: date-time
          description: >-
            When the transaction occurred (from `transaction_at`; defaults to
            submission time).
        zone_id:
          type: string
          nullable: true
          description: IANA time zone identifier provided at create time.
        transaction_type:
          type: string
          description: >-
            Top-level category as stored: `finance`, `kyc`, `travelRule`,
            `userPlatformEvent`, `gamblingBet`, `gamblingLimitChange`,
            `gamblingBonusChange`, `auditTrailEvent`. Note multi-word values are
            echoed back in camelCase even when submitted in snake_case.
        action_type:
          type: string
          description: >-
            Sub-type within the category (e.g. `deposit`, `withdrawal`,
            `transfer`). Defaults to the category when not supplied.
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
          description: >-
            Direction relative to the subject. Stored uppercase regardless of
            the casing submitted (`in`/`out`/`inbound`/`outbound` are accepted
            on input).
        status:
          type: string
          enum:
            - APPROVED
            - IN_REVIEW
            - DECLINED
            - AWAITING_USER
          description: >-
            Current monitoring verdict. Transactions are created `APPROVED`;
            rules may flip them to `IN_REVIEW`/`DECLINED` synchronously.
        amount:
          type: string
          description: >-
            Transaction amount as a decimal string with trailing zeros stripped
            (e.g. `"1500"`, `"0.5"`, `"0.123456789012345678"`). Up to 18 decimal
            places.
        currency:
          type: string
          description: Currency code of `amount` (e.g. `EUR`, `USD`, `BTC`).
        currency_type:
          type: string
          nullable: true
          description: '`fiat` or `crypto`, as submitted in `currency_kind`.'
        amount_in_default_currency:
          type: string
          nullable: true
          description: >-
            Pre-converted amount you supplied, as a decimal string with trailing
            zeros stripped.
        default_currency_code:
          type: string
          nullable: true
        preferred_currency_amount:
          type: string
          nullable: true
          description: >-
            `amount` converted to the application's preferred currency, when
            available.
        preferred_currency_code:
          type: string
          nullable: true
        payment_details:
          type: string
          nullable: true
          description: Free-text payment reference or memo from the submission.
        payment_txn_id:
          type: string
          nullable: true
          description: >-
            External payment system reference (e.g. blockchain transaction hash)
            from `payment_reference_id`.
        score:
          type: integer
          description: Risk score accumulated by rules (typically 0–100). Higher = riskier.
        severity:
          type: string
          nullable: true
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
          description: >-
            Categorical risk severity set by rules/providers (`UNKNOWN`, `LOW`,
            `MEDIUM`, `HIGH`, `CRITICAL`). `null` until something sets it.
        decision_reason_code:
          type: string
          nullable: true
          description: Machine-readable reason for the current `status`.
        decision_reason_label:
          type: string
          nullable: true
          description: Human-readable label for `decision_reason_code`.
        vendor_data:
          type: string
          nullable: true
          description: Convenience copy of the applicant's `vendor_data`.
        metadata:
          type: object
          description: >-
            Snapshot of the `subject` and `counterparty` payloads as submitted
            at create time.
        props:
          type: object
          description: >-
            The `custom_properties` you supplied at create time. Each key is
            addressable in rule conditions as `custom_values.<key>`.
        tags:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              name:
                type: string
              color:
                type: string
              description:
                type: string
                nullable: true
              source:
                type: string
                enum:
                  - didit
                  - custom
                description: Whether the tag is a Didit preset or a custom tag.
          description: Tags attached to the transaction (manually or by rules).
        parties:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              role:
                type: string
                enum:
                  - APPLICANT
                  - REMITTER
                  - BENEFICIARY
                  - COUNTERPARTY
                description: >-
                  Party role. The create endpoint assigns `APPLICANT` (the
                  subject) and `COUNTERPARTY`.
              entity_type:
                type: string
                enum:
                  - individual
                  - company
                  - external
                  - unhostedWallet
              kind:
                type: string
                enum:
                  - USER
                  - BUSINESS
                  - EXTERNAL
                description: >-
                  `USER`/`BUSINESS` parties link back to a Didit-owned entity
                  via `vendor_data`. `EXTERNAL` parties have no Didit entity
                  behind them.
              vendor_data:
                type: string
                nullable: true
                description: Your internal user/business identifier.
              full_name:
                type: string
                nullable: true
              first_name:
                type: string
                nullable: true
              last_name:
                type: string
                nullable: true
              country_code:
                type: string
                nullable: true
                description: >-
                  Country code from the submitted `address.country` (typically
                  ISO 3166-1 alpha-3).
              dob:
                type: string
                format: date
                nullable: true
                description: Date of birth from the submitted `date_of_birth`.
              address:
                type: object
                description: Address object as submitted. `{}` when omitted.
              institution_info:
                type: object
                description: Institution details as submitted. `{}` when omitted.
              device:
                type: object
                description: >-
                  Normalized device context, including server-side IP enrichment
                  under `network_context` (geolocation, VPN/data-center flags)
                  when an IP was provided.
              external_party_snapshot:
                type: object
                nullable: true
                description: >-
                  Frozen copy of the party data for `EXTERNAL` parties (or after
                  the linked entity was deleted). `null` while linked to a live
                  entity.
          description: Transaction parties (applicant, counterparty).
        payment_methods:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              payment_method_type:
                type: string
                enum:
                  - bank_card
                  - bank_account
                  - e_wallet
                  - crypto_wallet
                  - unhosted_wallet
                  - other
              label:
                type: string
                nullable: true
              fingerprint:
                type: string
                nullable: true
                description: >-
                  SHA-256 over `type:account_id:issuing_country` — stable
                  identifier to correlate reuse of the same instrument.
              account_id:
                type: string
                nullable: true
                description: Account identifier (IBAN, wallet address, card token, …).
              issuing_country:
                type: string
                nullable: true
              owner_kind:
                type: string
                enum:
                  - USER
                  - BUSINESS
                  - EXTERNAL
              vendor_data:
                type: string
                nullable: true
                description: Your identifier for the owning user/business.
              owner_name:
                type: string
                nullable: true
              institution_info:
                type: object
              details:
                type: object
                description: Raw `payment_method` object as submitted.
              external_owner_snapshot:
                type: object
                nullable: true
              role:
                type: string
                enum:
                  - SOURCE
                  - DESTINATION
                  - FUNDING
                  - BENEFICIARY
                description: >-
                  How this method was used in the transaction. The create
                  endpoint assigns `SOURCE`/`DESTINATION` from the direction
                  (outbound: subject = SOURCE; inbound: subject = DESTINATION).
          description: Payment methods linked to the transaction.
        activities:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              activity_type:
                type: string
                description: >-
                  E.g. `TRANSACTION_CREATED`, `TRANSACTION_NOTE_ADDED`,
                  `TRANSACTION_STATUS_CHANGED`.
              source:
                type: string
              status:
                type: string
                nullable: true
              title:
                type: string
                nullable: true
              description:
                type: string
                nullable: true
              metadata:
                type: object
              occurred_at:
                type: string
                format: date-time
          description: >-
            Activity log entries (creation, notes, manual reviews, status
            changes).
        alerts:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              title:
                type: string
              description:
                type: string
                nullable: true
              severity:
                type: string
                enum:
                  - UNKNOWN
                  - LOW
                  - MEDIUM
                  - HIGH
                  - CRITICAL
              status:
                type: string
                enum:
                  - OPEN
                  - INVESTIGATING
                  - AWAITING_USER
                  - PENDING_SAR
                  - SAR_FILED
                  - RESOLVED
                  - DISMISSED
              source:
                type: string
                enum:
                  - RULE
                  - PROVIDER
                  - MANUAL
              metadata:
                type: object
              created_at:
                type: string
                format: date-time
              due_at:
                type: string
                format: date-time
                nullable: true
          description: Alerts raised by rules and providers.
        rule_runs:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              rule:
                type: string
                format: uuid
                description: UUID of the rule that ran.
              rule_title:
                type: string
              rule_description:
                type: string
                nullable: true
              rule_category:
                type: string
              matched:
                type: boolean
                description: Whether the rule's conditions matched this transaction.
              is_test:
                type: boolean
                description: >-
                  True when the rule ran in TEST mode (no effect on
                  status/score).
              mode:
                type: string
                enum:
                  - ACTIVE
                  - DISABLED
                  - TEST
              severity:
                type: string
                nullable: true
              score_delta:
                type: integer
                description: Score added by this rule's `add_score` actions.
              status_target:
                type: string
                nullable: true
                description: Status set by a `change_status` action, if any.
              action_summary:
                type: object
                description: Summary of the actions the rule executed.
              metadata:
                type: object
              created_at:
                type: string
                format: date-time
          description: >-
            Per-rule execution results — which rule fired, with what score
            impact.
        provider_results:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              provider:
                type: string
              result_type:
                type: string
                enum:
                  - FIAT_MONITORING
                  - WALLET_SCREENING
                  - TRANSACTION_SCREENING
                  - TRAVEL_RULE
                  - NETWORK_GRAPH
                  - CUSTOM
              status:
                type: string
              severity:
                type: string
                nullable: true
              score:
                type: integer
              summary:
                type: string
                nullable: true
              payload:
                type: object
                description: Raw provider response payload.
              created_at:
                type: string
                format: date-time
          description: Raw provider payloads (AML screening, blockchain analytics, etc.).
        travel_rule:
          type: object
          nullable: true
          description: >-
            Travel Rule compliance check, present when `travel_rule_details` was
            submitted.
          properties:
            uuid:
              type: string
              format: uuid
            status:
              type: string
            protocol:
              type: string
              nullable: true
            required:
              type: boolean
            obligations_count:
              type: integer
            originator_data:
              type: object
            beneficiary_data:
              type: object
            metadata:
              type: object
        network_snapshot:
          type: object
          nullable: true
          description: >-
            Graph snapshot of related transactions/parties used by the rules
            engine, present when submitted.
          properties:
            uuid:
              type: string
              format: uuid
            nodes:
              type: array
              items:
                type: object
            edges:
              type: array
              items:
                type: object
            metrics:
              type: object
        remediation:
          type: object
          nullable: true
          description: >-
            Remediation session offered to the user when re-verification is
            required.
          properties:
            session_id:
              type: string
            session_token:
              type: string
            url:
              type: string
              format: uri
            status:
              type: string
        cost_breakdown:
          type: object
          nullable: true
          description: Per-feature credit cost breakdown for this transaction.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````