{
  "opencollection": "1.0.0",
  "info": {
    "name": "Didit Verification Billing Transactions API",
    "version": "3.0.0"
  },
  "items": [
    {
      "info": {
        "name": "Transactions",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "Screen a wallet address",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://verification.didit.me/v3/wallet-screening/",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "apikey",
              "key": "x-api-key",
              "value": "{{x-api-key}}",
              "placement": "header"
            }
          },
          "docs": "Run on-demand AML screening for a single crypto wallet/address without creating a transaction. Resolves your application's configured blockchain analytics provider (Merkle Science or Crystal), screens the address synchronously, and returns the normalised risk result. Nothing is written to the transactions table. One AML monitoring usage is billed per successful screening (sandbox applications are not billed)."
        },
        {
          "info": {
            "name": "List transactions",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://verification.didit.me/v3/transactions/",
            "params": [
              {
                "name": "limit",
                "value": "",
                "type": "query",
                "description": "Page size. Defaults to 50 when omitted. There is no enforced maximum, but keep pages small for latency."
              },
              {
                "name": "offset",
                "value": "",
                "type": "query",
                "description": "Zero-based offset of the first record to return. Prefer following the `next` URL from the previous page."
              }
            ],
            "auth": {
              "type": "apikey",
              "key": "x-api-key",
              "value": "{{x-api-key}}",
              "placement": "header"
            }
          },
          "docs": "Paginated list of monitored transactions, newest first (`txn_date` desc). `count` is capped at 100; use `total_transactions` for the true row count. This endpoint does not support filtering or search parameters."
        },
        {
          "info": {
            "name": "Create transaction",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://verification.didit.me/v3/transactions/",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "apikey",
              "key": "x-api-key",
              "value": "{{x-api-key}}",
              "placement": "header"
            }
          },
          "docs": "Submit a transaction for synchronous AML/risk monitoring. The transaction is created `APPROVED`, then your rules (and crypto screening, when applicable) run inline and may flip the returned `status` to `IN_REVIEW` or `DECLINED`. **`transaction_id` is your idempotency key** (max 128 chars, unique per app); reusing it returns 400. A `transaction.created` webhook is dispatched on success (sandbox applications are not billed and do not emit webhooks)."
        },
        {
          "info": {
            "name": "Get transaction",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://verification.didit.me/v3/transactions/:transaction_id/",
            "params": [
              {
                "name": "transaction_id",
                "value": "abcdef12-3456-7890-abcd-ef1234567890",
                "type": "path",
                "description": "Didit-stable transaction UUID (the `uuid` returned from create / list, **not** your `txn_id`)."
              }
            ],
            "auth": {
              "type": "apikey",
              "key": "x-api-key",
              "value": "{{x-api-key}}",
              "placement": "header"
            }
          },
          "docs": "Retrieve the full monitoring record for one transaction: parties, score/severity, rule runs, alerts, Travel Rule outcome, remediation session."
        },
        {
          "info": {
            "name": "Mint an SDK transaction token",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://verification.didit.me/v3/transactions/sdk-token/",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "apikey",
              "key": "x-api-key",
              "value": "{{x-api-key}}",
              "placement": "header"
            }
          },
          "docs": "Mint a short-lived scoped token your app passes to the Didit SDKs so they can submit transactions directly from the end-user's device via `POST /v1/transactions/`. The token is bound to one `vendor_data` (your user id): every transaction submitted with it has its subject identity enforced server-side from that binding, so a tampered client cannot submit on behalf of another user. Mint tokens from your backend - never ship the API key itself in an app. camelCase aliases (`vendorData`, `ttlSeconds"
        },
        {
          "info": {
            "name": "Submit a transaction from an SDK",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://verification.didit.me/v1/transactions/",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "apikey",
              "key": "X-Transaction-Token",
              "value": "{{X-Transaction-Token}}",
              "placement": "header"
            }
          },
          "docs": "Device-facing endpoint the Didit SDKs call to submit a transaction directly from the end-user's device. Authentication is a scoped token from `POST /v3/transactions/sdk-token/` sent in the `X-Transaction-Token` header instead of an API key, and the endpoint is CORS-enabled so browsers can call it cross-origin. The payload uses the camelCase wire aliases shown below (the SDK `submitTransaction` methods build it for you). Three server-side guarantees: the application is always taken from the token"
        },
        {
          "info": {
            "name": "Get a transaction from an SDK",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://verification.didit.me/v1/transactions/:transaction_id/",
            "params": [
              {
                "name": "transaction_id",
                "value": "22222222-3333-4444-5555-666666666666",
                "type": "path",
                "description": "Didit-stable transaction UUID (the `uuid` from the submit response, **not** your `txnId`)."
              }
            ],
            "auth": {
              "type": "apikey",
              "key": "X-Transaction-Token",
              "value": "{{X-Transaction-Token}}",
              "placement": "header"
            }
          },
          "docs": "Device-facing read endpoint, authenticated with the same `X-Transaction-Token` used to submit. The SDKs poll it after an auto-launched action flow completes or its window closes, so the final state never depends on a single notification. Returns the same transaction detail as the submit response, including the current `action_required` block (`null` once the action is resolved)."
        }
      ]
    }
  ],
  "bundled": true
}