> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trusset.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Confirm Asset Data Acknowledgement

> Verify a mined asset data acknowledgement and record it

Records an acknowledgement once its transaction has mined. The receipt is read from the chain and checked before anything is written. The transaction must have succeeded, targeted the lending factory, and called `acknowledgeAssetData` or `acceptCuratorRole` for this market. The factory must also have emitted `AssetDataAcknowledged` for this market. The recorded hash, version and wallet come from that event, never from the request.

An adoption receipt is accepted because an adoption can carry the first acknowledgement. [Confirm Lender Role](/endpoints/lending/confirm-lender-role) already records that one, so this route is for acknowledgements built with [Acknowledge Asset Data](/endpoints/lending/acknowledge-asset-data). An adoption that acknowledged no version emits no event and is refused with `TX_NOT_VERIFIED`.

The transaction must have been signed by one of this instance's verified wallets. The same market access check as [Get Asset Data](/endpoints/lending/get-asset-data#who-can-read-it) runs first.

## Path Parameters

<ParamField path="market" type="string" required>
  The market contract address, as 40 hex characters with a `0x` prefix.
</ParamField>

## Body Parameters

<ParamField body="txHash" type="string" required>
  Hash of the mined acknowledgement transaction, as `0x` and 64 hex characters.
</ParamField>

## Response Fields

Confirming returns `201`.

<ResponseField name="data" type="object">
  <Expandable>
    <ResponseField name="txHash" type="string">The confirmed transaction.</ResponseField>
    <ResponseField name="signer" type="string">The wallet that sent it, lowercased.</ResponseField>

    <ResponseField name="acknowledgement" type="object">
      Read from the `AssetDataAcknowledged` event.

      <Expandable>
        <ResponseField name="contentHash" type="string">The version acknowledged, as a hash.</ResponseField>
        <ResponseField name="version" type="integer">Its attestation version.</ResponseField>
        <ResponseField name="curator" type="string">The acknowledging wallet: the lender of record, or the admin it named.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="assetData" type="object">The market's record after the confirm, in the shape of [Get Asset Data](/endpoints/lending/get-asset-data) without `origin`.</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.trusset.org/lending-external-securities-v2/api/markets/0x70a0e25c7b768b87e658348b3b577678a173e038/asset-data/acknowledge/confirm" \
    -H "X-API-Key: trusset_your_key_here" \
    -H "Content-Type: application/json" \
    -d '{ "txHash": "0xa70f1de4aac64aad94819433446e2d751165dc7de06ac6f6f4860a3dbdff3200" }'
  ```

  ```typescript TypeScript theme={null}
  const res = await fetch(
    `https://api.trusset.org/lending-external-securities-v2/api/markets/${marketAddress}/asset-data/acknowledge/confirm`,
    {
      method: 'POST',
      headers: {
        'X-API-Key': 'trusset_your_key_here',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({ txHash })
    }
  );
  const { success, data, error } = await res.json();
  if (!success) throw new Error(`${error.code}: ${error.message}`);
  console.log(`Acknowledged version ${data.acknowledgement.version}, status ${data.assetData.status}`);
  ```
</RequestExample>

<ResponseExample>
  ```json Confirmed Response theme={null}
  {
    "success": true,
    "data": {
      "txHash": "0xa70f1de4aac64aad94819433446e2d751165dc7de06ac6f6f4860a3dbdff3200",
      "signer": "0x4e91a7c05d3b62f18a0c94e7db2358f1c60a4e93",
      "acknowledgement": {
        "contentHash": "0xba94f849b5852511dd4cc5a0d2cf10d2edbd51d27a69f4f434db122b5fbb0f1a",
        "version": 2,
        "curator": "0x4e91a7c05d3b62f18a0c94e7db2358f1c60a4e93"
      },
      "assetData": {
        "marketAddress": "0x70a0e25c7b768b87e658348b3b577678a173e038",
        "family": "FUNGIBLE",
        "factory": "0xf1ad12f5698f58badd8a662acffccb067a2ddb8a",
        "factorySupport": true,
        "status": "ACKNOWLEDGED",
        "record": {
          "attested": "0xba94f849b5852511dd4cc5a0d2cf10d2edbd51d27a69f4f434db122b5fbb0f1a",
          "acknowledged": "0xba94f849b5852511dd4cc5a0d2cf10d2edbd51d27a69f4f434db122b5fbb0f1a",
          "attestor": "0x511f527bcee080ac9b88afbf24386baedf393948",
          "version": 2,
          "attestedAt": 1789899340,
          "acknowledgedAt": 1789983603,
          "diverged": false
        },
        "diverged": false,
        "attested": {
          "contentHash": "0xba94f849b5852511dd4cc5a0d2cf10d2edbd51d27a69f4f434db122b5fbb0f1a",
          "version": 2,
          "attestor": "0x511f527bcee080ac9b88afbf24386baedf393948",
          "attestedAt": "2026-09-20T10:15:40.000Z",
          "txHash": "0x94c206e7614a93e3194caffa428756827f9c0f4d042de189439ffe2f225f822f",
          "schemaVersion": "1.0.0",
          "bundleAvailable": true,
          "storedAt": "2026-09-20T10:14:02.000Z"
        },
        "acknowledged": {
          "contentHash": "0xba94f849b5852511dd4cc5a0d2cf10d2edbd51d27a69f4f434db122b5fbb0f1a",
          "version": 2,
          "acknowledgedAt": "2026-09-21T09:40:03.000Z",
          "txHash": "0xa70f1de4aac64aad94819433446e2d751165dc7de06ac6f6f4860a3dbdff3200",
          "schemaVersion": "1.0.0",
          "bundleAvailable": true,
          "storedAt": "2026-09-20T10:14:02.000Z"
        },
        "authority": {
          "attestor": "0x511f527bcee080ac9b88afbf24386baedf393948",
          "attestorRole": "ISSUER",
          "acknowledgers": [
            "0x4e91a7c05d3b62f18a0c94e7db2358f1c60a4e93",
            "0x89b1dc3d25b4fbd80e4b2bdb7ed01c4560325c52"
          ],
          "seekingCurator": false
        },
        "viewer": {
          "wallets": ["0x4e91a7c05d3b62f18a0c94e7db2358f1c60a4e93"],
          "canAttest": false,
          "canAcknowledge": true
        },
        "profile": null
      }
    }
  }
  ```

  ```json Error - Nothing Acknowledged theme={null}
  {
    "success": false,
    "data": null,
    "error": {
      "code": "TX_NOT_VERIFIED",
      "message": "The transaction emits no AssetDataAcknowledged for this market from the factory"
    }
  }
  ```
</ResponseExample>

## Error Codes

The asset data routes report a validation failure with the first failing rule as `message` and no `details` list. A malformed `txHash` is therefore `VALIDATION_ERROR` here, not `INVALID_TX`. Every access code from [Get Asset Data](/endpoints/lending/get-asset-data#error-codes) applies here too.

| Code                         | HTTP  | Cause                                                                                                |
| ---------------------------- | ----- | ---------------------------------------------------------------------------------------------------- |
| `VALIDATION_ERROR`           | `400` | `market` is not a 40-character hex address, or `txHash` is missing or not `0x` and 64 hex characters |
| `TX_REVERTED`                | `400` | The transaction was mined but reverted                                                               |
| `TX_WRONG_TARGET`            | `400` | The transaction was not sent to the lending factory                                                  |
| `TX_WRONG_FUNCTION`          | `400` | The transaction calls neither `acknowledgeAssetData` nor `acceptCuratorRole`                         |
| `TX_WRONG_ARGS`              | `400` | The transaction acknowledged asset data for a different market                                       |
| `TX_NOT_VERIFIED`            | `400` | The factory emitted no `AssetDataAcknowledged` for this market in this transaction                   |
| `ACK_NOT_INSTANCE_BOUND`     | `403` | The transaction was signed by a wallet that is not verified for this instance                        |
| `TX_NOT_FOUND`               | `404` | No receipt yet. The transaction is unmined, dropped, or on another network                           |
| `ACKNOWLEDGE_CONFIRM_FAILED` | `500` | The confirm failed for a reason the service did not classify                                         |
