> For the complete documentation index, see [llms.txt](https://docs.vida.id/identity-stack/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vida.id/identity-stack/verify/kyc-web-sdk/integration/backend-integration/transaction-details-api.md).

# Transaction Details API

{% hint style="info" %}
**Purpose of This Page**

Documents `GET` `/api/v2/transaction?transactionId=UUID` - used to retrieve the full payload for a specific operation attempt for audit, billing, or dispute resolution.
{% endhint %}

## Step 3 - Transaction Details API

Use this API to retrieve the full result payload for any individual operation attempt. This is essential for billing reconciliation - VIDA sends you a list of transaction IDs for billing, and this API lets you match and verify each one.

#### Endpoint

<mark style="color:blue;">**`GET`**</mark> `/api/v2/transaction?transactionId=UUID`

#### When to Call

* When you need the full OCR result, ID verification scores, or face match details for a specific attempt
* When reconciling billed transaction IDs against your own records
* When auditing a specific operation for a support or dispute case
* When fetching a document image URL (note: URL expires in 60 seconds)

{% hint style="info" %}
**This API only serves My-Verify transactions**

This endpoint serves OCR, ID Verification, and Face Match transactions only.

Liveness transaction details are **NOT** available here. For liveness details, use the Liveness Service's own GET transaction API with the `transactionId` from livenessDetails.
{% endhint %}

#### Request

<table><thead><tr><th width="169.43359375">Parameter</th><th width="111.5625">Location</th><th width="118.54296875">Type</th><th width="106.7734375">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>transactionId</code></td><td>Path</td><td>string (uuid)</td><td>Yes</td><td>A <code>transactionId</code> from the SDK response or from any <code>latestExecution</code> / <code>previousTransactionIds</code> in <code>GET</code> <code>/verify/status</code></td></tr><tr><td><code>includeDocuments</code></td><td>Query string</td><td>boolean</td><td>No</td><td>Default: <code>false</code>. When <code>true</code>, includes a <code>documents</code> object with presigned S3 URLs for ID front, ID back, and portrait images (each expires 60 seconds after the response).</td></tr></tbody></table>

#### Supported Operations

<table><thead><tr><th width="143.2109375">Operation</th><th width="157.0546875">Supported</th><th>Where to Get transactionId</th></tr></thead><tbody><tr><td>OCR</td><td>✅ Yes</td><td>SDK: <code>docVerificationResult.transactionId</code> (combined mode) or  <code>docFrontSideVerificationResult.transactionId</code> / <code>docBackSideVerificationResult.transactionId</code> (per side mode)</td></tr><tr><td>ID Verification</td><td>✅ Yes</td><td>Same <code>transactionId</code> as OCR (same call)</td></tr><tr><td>Face Match</td><td>✅ Yes</td><td>SDK: <code>faceMatchDetails.transactionId</code></td></tr><tr><td>Liveness</td><td>❌ No - use Liveness Service</td><td>SDK: <code>livenessDetails.transactionId</code> → use with Liveness Service API</td></tr></tbody></table>

#### Response Fields

<table><thead><tr><th width="300.0625">Field</th><th>Description</th></tr></thead><tbody><tr><td>transactionId</td><td>The queried transaction ID</td></tr><tr><td>partnerTrxId</td><td>Your system's reference ID (echoed)</td></tr><tr><td>groupId</td><td>The <code>verificationId</code> this transaction belongs to</td></tr><tr><td>card</td><td>Document country, type, and ISO codes</td></tr><tr><td>ocrResult</td><td>Extracted text fields (name, ID number, DOB, address, etc.)</td></tr><tr><td>idVerificationResult</td><td>Spoofing check scores, landmark detection results, and forgery detection scores</td></tr><tr><td>imageQualityResult</td><td>Blur (blurriness) and low-light scores for front and/or back</td></tr><tr><td>documents</td><td>Only present when <code>includeDocuments</code>=<code>true</code>. Contains <code>documents.idFrontSide</code>, <code>documents.idBackSide</code>, and <code>documents.portrait</code> - each with a url and expiresAt. Fields are omitted if not captured for this transaction.</td></tr></tbody></table>

{% hint style="info" %}
**Presigned image URLs expire after 60 seconds**

Each URL in the documents object is a short-lived presigned S3 URL that expires 60 seconds after the API response is received.

Fetch and store the image bytes immediately. Cached URLs will return HTTP 403 from S3 after expiry.

Call the API again with `includeDocuments`=`true` to get a fresh set of URLs.
{% endhint %}

#### Sample Response (with includeDocuments=true)

<details>

<summary>JSON Response</summary>

{% code expandable="true" %}

```json
{
  "transactionId": "70f5e8df-45ca-4142-bb44-6a3879fcd532",
  "partnerTrxId":  "f8072750-1475-3a52-9ad6-7d6d3193ac89",
  "groupId":       "005e9def-c93a-3703-af5b-424a42f7c08a",
  "card": {
    "country": "MALAYSIA", "type": "MyKad",
    "isoAlpha3CountryCode": "MYS", "isoAlpha2CountryCode": "MY"
  },
  "ocrResult": {
    "front": { "data": {
      "idNumber":    { "value": "020326-14-0525",      "score": 0.992589, "threshold": 0.95 },
      "name":        { "value": "SAGAR CHANDRAKANT",  "score": 0.998204, "threshold": 0.95 },
      "dob":         { "value": "20020326",            "score": 0.992589, "threshold": 0.95 },
      "gender":      { "value": "M",                   "score": 1,        "threshold": 0.95 },
      "citizenship": { "value": "WARGANEGARA",         "score": 1,        "threshold": 0.95 },
      "address":     { "value": "NO 41 JALAN SERI TAMING 6 ...", "score": 0.999596, "threshold": 0.95 }
    }},
    "back": { "data": {
      "extendedIdNumber": { "value": "020326-14-0525-02-01", "score": 0.999577, "threshold": 0.95 }
    }}
  },
  "idVerificationResult": {
    "front": {
      "spoofingResult": { "code": 5000, "message": "Success",
        "recapScore":  { "score": 0.144171, "threshold": 0.95 },
        "blackWhite":  { "score": 0.003719, "threshold": 0.95 },
        "colorPrint":  { "score": 0.363406, "threshold": 0.95 }
      },
      "landmarkResult": { "code": 5000, "message": "Success",
        "containerResult": [
          { "name": "portrait",       "score": 0.9736 },
          { "name": "hibiscus_logo",  "score": 0      },  // ← 0 = occluded
          { "name": "chip",           "score": 0.9778 }
        ]
      },
      "forgeryResult": { "code": 5000,
        "summary": { "score": 0.245567, "threshold": 0.95 }
      }
    }
  },
  "imageQualityResult": {
    "front": {
      "blurriness": { "score": 0.00015,  "threshold": 0.95 },
      "lowLight":   { "score": 0.014529, "threshold": 0.95 }
    }
  },
  // Only present when includeDocuments=true
  "documents": {
    "idFrontSide": { "url": "https://<bucket>.s3.amazonaws.com/...?X-Amz-Signature=..."},
    "idBackSide":  { "url": "https://<bucket>.s3.amazonaws.com/...?X-Amz-Signature=..."},
    "portrait":    { "url": "https://<bucket>.s3.amazonaws.com/...?X-Amz-Signature=..."}
    // Fields are omitted if not captured (e.g. passport: idBackSide absent)
  }
}


```

{% endcode %}

</details>
