> ## 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). 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 deleted via the 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
                    environment: live
                    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
                    source: LIVE
                    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: []
                    documents: []
                    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.
        environment:
          type: string
          enum:
            - live
            - sandbox
          description: >-
            Environment of the application that owns the transaction. A
            `sandbox` transaction is stored but never evaluated, screened,
            notified or billed, so its empty `rule_runs` means "not evaluated".
        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.
        source:
          type: string
          enum:
            - LIVE
            - IMPORTED
          description: >-
            How the record originated: `LIVE` for transactions submitted through
            the API or SDK, `IMPORTED` for transactions loaded through the
            console import.
        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`. Any ISO 4217 alphabetic code is accepted
            (e.g. `EUR`, `USD`, `NGN`), as is a crypto asset symbol (e.g.
            `BTC`). Prefer a currently-circulating code. Not every accepted code
            has an exchange rate: when none is available for the code (for
            example the ISO accounting unit `XSU`, or a crypto symbol Didit does
            not price), automatic conversion fails and
            `preferred_currency_amount` is returned null unless the request
            supplied a pre-converted `amount_in_default_currency`.
        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.
                properties:
                  fingerprint:
                    type: string
                    description: Unique device fingerprint.
                  persistent_device_id:
                    type: string
                    description: >-
                      Stable cross-session device identifier (v2 fingerprint
                      schema).
                  user_agent:
                    type: string
                    description: Browser or app user agent string.
                  browser_family:
                    type: string
                    description: Browser family (e.g. Chrome, Firefox, Safari).
                  browser_version:
                    type: string
                    description: Browser version string.
                  platform:
                    type: string
                    description: >-
                      Platform identifier (web, ios, android, macos, windows,
                      linux).
                  os_family:
                    type: string
                    description: Operating system family (e.g. iOS, Android, Windows).
                  os_version:
                    type: string
                    description: Operating system version string.
                  accept_language:
                    type: string
                    description: Accept-Language header value.
                  session_id:
                    type: string
                    description: Session identifier (stored in metadata).
                  session_age_ms:
                    type: number
                    description: Session age in milliseconds.
                  network_context:
                    type: object
                    description: Network context with IP address and geo-location.
                    properties:
                      ip_address:
                        type: string
                        description: Client IP address.
                      ip_country_code:
                        type: string
                        description: Geo-resolved country of the IP (ISO 3166-1 alpha-3).
                      latitude:
                        type: number
                        description: Geographic latitude of the IP.
                      longitude:
                        type: number
                        description: Geographic longitude of the IP.
              external_party_snapshot:
                type: object
                nullable: true
                description: >-
                  Frozen copy of the party data for `EXTERNAL` parties. `null`
                  while the party is linked to a Didit user or business.
          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.
        documents:
          type: array
          description: Files attached to the transaction from the console. `[]` when none.
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              label:
                type: string
                nullable: true
              note:
                type: string
                nullable: true
              uploaded_by:
                type: string
                nullable: true
              created_at:
                type: string
                format: date-time
              files:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Short-lived signed download URL; fetch it when needed
                        rather than storing it.
                    original_filename:
                      type: string
                      nullable: true
                    file_size:
                      type: integer
                      nullable: true
        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. A run
                  is recorded only for matched rules, so live evaluations always
                  carry `true`.
              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: string
                nullable: true
                description: >-
                  Summary of the actions the rule executed, joined with `; `
                  (e.g. `score +30; change_status:IN_REVIEW;
                  add_tag:high_risk_country`). Parts: `score +N`,
                  `change_status:<STATUS>`, `add_tag:<name>`, `add_note`,
                  `add_to_list`, `open_case`. `null` when the rule executed no
                  action.
              metadata:
                type: object
                description: >-
                  Evaluation detail: `scope_match`, `conditions[]` and
                  `aggregations[]`. Each condition entry carries `field`,
                  `operator`, `expected_value`, the `current_value` read from
                  the transaction, `matched`, `group_index` and `group_logic`.
                  Each aggregation entry (velocity / count / sum) carries
                  `metric`, `field`, `operator`, `expected_value`, the
                  `computed_value` the aggregate evaluated to, `window`,
                  `filters`, `matched` and `sample_references`; deferred async
                  aggregations have `computed_value: null` and `deferred: true`.
              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 transfer or check. Populated when `travel_rule_details`
            was submitted, and also when Travel Rule is enabled and the
            transaction was created with `transaction_category: travelRule`
            (Didit initiates the exchange itself, even without
            `travel_rule_details`). `null` when no transfer or check exists.
          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. Either the `network_snapshot` submitted with the transaction
            or the graph Didit builds from a successful AML wallet screening
            (which replaces a submitted one). `null` when neither exists.
          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. Superseded by `action_required`, which is the canonical
            block; kept for backward compatibility.
          properties:
            session_id:
              type: string
            session_token:
              type: string
            url:
              type: string
              format: uri
            status:
              type: string
        action_required:
          type: object
          nullable: true
          description: >-
            Pending end-user action required to complete this transaction, or
            null when there is none. The Didit SDKs auto-launch the action by
            default and refresh the transaction when it finishes. Two variants,
            discriminated by `type`: `verification_session` (a hosted
            verification session created by a rule action) and
            `wallet_ownership` (a wallet-ownership widget session auto-minted
            for a Travel Rule transfer that needs proof of wallet control, gated
            by the `auto_wallet_verification` Travel Rule setting). When both
            could apply, `wallet_ownership` takes precedence because it blocks
            the Travel Rule exchange.
          oneOf:
            - title: Verification session
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - verification_session
                url:
                  type: string
                  format: uri
                  description: Hosted verification URL to open for the end user.
                session_id:
                  type: string
                  format: uuid
                  description: Verification session id.
                session_token:
                  type: string
                  description: >-
                    Session token, used by the mobile SDKs to launch the flow
                    natively.
                status:
                  type: string
                  description: Verification session status.
              required:
                - type
                - url
            - title: Wallet ownership
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - wallet_ownership
                url:
                  type: string
                  format: uri
                  description: >-
                    Hosted wallet-ownership widget URL. Open it in a real
                    browser surface - on mobile use SFSafariViewController or a
                    Chrome Custom Tab, never an embedded webview.
                widget_session_id:
                  type: string
                  format: uuid
                  description: Wallet-ownership widget session id.
                expires_at:
                  type: string
                  format: date-time
                  description: When the widget session expires.
              required:
                - type
                - url
        cost_breakdown:
          type: object
          nullable: true
          description: >-
            Cost of this transaction: `total_price` and `items`, one per charge,
            each with `usage_type`, `price`, `details` and `created_at`. A
            re-screen of the same transaction is a new item.
  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 missing, wrong, revoked or expired; 403 means 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.