> ## 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 Whitelist Ownership

> Record a mined ownership proposal or acceptance on a whitelist

Verifies a mined `transferOwnership` or `acceptOwnership` transaction on the whitelist and records the owner and pending owner as the chain answers them after it. The instance that keeps the list confirms either step. The instance whose wallet the pending transfer names confirms too.

An accepted transfer can move the record. When the new owner is a verified wallet of your instance, and the instance that kept the record does not hold it, the record moves to your instance. When your instance kept the record and the new owner is a verified wallet of exactly one other instance, it moves to that instance. `recordHeldByThisInstance` says where it stands after the call.

The change is written to the audit log as `LENDING_ACCESS_LIST_OWNER_PROPOSED` or `LENDING_ACCESS_LIST_OWNERSHIP_ACCEPTED`. A move of the record is written as `LENDING_ACCESS_LIST_REHOMED`.

## Path Parameters

<ParamField path="listId" type="string" required>
  The whitelist ID from [List Whitelists](/endpoints/lending/list-access-lists).
</ParamField>

## Body Parameters

<ParamField body="txHash" type="string" required>
  Hash of the mined transaction, 0x followed by 64 hex characters.
</ParamField>

## Response Fields

<ResponseField name="data" type="object">
  <Expandable>
    <ResponseField name="list" type="object">The list after the change, as on [List Whitelists](/endpoints/lending/list-access-lists). It has the `lists` shape with `own: true` when your instance keeps the record, and the `managed` shape when another instance does. `null` when the record could not be read back.</ResponseField>
    <ResponseField name="outcome" type="string">`OWNER_PROPOSED` for a proposal, `OWNERSHIP_ACCEPTED` for an acceptance.</ResponseField>
    <ResponseField name="applied" type="array">The ownership events the transaction emitted on the list, each `{ event, previousOwner, newOwner }`.</ResponseField>
    <ResponseField name="owner" type="string">The owner on chain after the transaction, lowercased.</ResponseField>
    <ResponseField name="pendingOwner" type="string">The pending owner after the transaction, or `null`.</ResponseField>
    <ResponseField name="ownedByThisInstance" type="boolean">Whether the owner is a verified wallet of your instance.</ResponseField>
    <ResponseField name="recordHeldByThisInstance" type="boolean">Whether your instance keeps the record after this call.</ResponseField>
    <ResponseField name="recordMoved" type="boolean">Present and `true` when this call moved the record after reading the transaction. A record that moved to your instance when the call first read the list carries no flag, and `recordHeldByThisInstance` shows it.</ResponseField>
    <ResponseField name="txHash" type="string">The verified transaction.</ResponseField>
    <ResponseField name="signedBy" type="string">The wallet that sent the transaction, lowercased.</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.trusset.org/lending-external-securities-v2/api/access-lists/cmv2k8q1d0004l70a3n6p2w9e/owner/confirm" \
    -H "X-API-Key: trusset_your_key_here" \
    -H "Content-Type: application/json" \
    -d '{"txHash": "0x2d7f4a1c8e9b03d56f2a7c1e4b8d09f36a5c2e7b1d4f8a03c6e9b2d5f1a7c4e8"}'
  ```

  ```typescript TypeScript theme={null}
  const res = await fetch(
    `https://api.trusset.org/lending-external-securities-v2/api/access-lists/${listId}/owner/confirm`,
    {
      method: 'POST',
      headers: { 'X-API-Key': 'trusset_your_key_here', 'Content-Type': 'application/json' },
      body: JSON.stringify({ txHash })
    }
  );
  const { data } = await res.json();
  if (data.outcome === 'OWNERSHIP_ACCEPTED' && !data.recordHeldByThisInstance) {
    console.log('The record now sits with the instance that holds the new owner wallet');
  }
  ```
</RequestExample>

<ResponseExample>
  ```json Response - Accepted theme={null}
  {
    "success": true,
    "data": {
      "list": {
        "id": "cmv2k8q1d0004l70a3n6p2w9e",
        "name": "Depositors Q4",
        "purpose": "DEPOSITOR",
        "address": "0x7d31e6b09a4c25f8e1b73d0a6c94e2f58b1a0c37",
        "ownerWallet": "0x8c2d4e6f0a1b3c5d7e9f1a2b4c6d8e0f2a4b6c8d",
        "pendingOwnerWallet": null,
        "managers": ["0x4e91a7c05d3b62f18a0c94e7db2358f1c60a4e93"],
        "memberCount": 148,
        "archived": false,
        "createdTxHash": "0x3f6c0e7a91d24b58c06e1f9a7b3d25e48c17a0f9d63e2b51a84c7f0e9d16b23a",
        "createdBlock": 9384120,
        "syncedBlock": 9402377,
        "createdAt": "2026-10-08T14:02:11.000Z",
        "updatedAt": "2026-10-09T11:02:40.000Z",
        "own": true
      },
      "outcome": "OWNERSHIP_ACCEPTED",
      "applied": [
        {
          "event": "OwnershipTransferred",
          "previousOwner": "0x1234f9a07c6b53d81e2a4f70c9b385d6014a7e52",
          "newOwner": "0x8c2d4e6f0a1b3c5d7e9f1a2b4c6d8e0f2a4b6c8d"
        }
      ],
      "owner": "0x8c2d4e6f0a1b3c5d7e9f1a2b4c6d8e0f2a4b6c8d",
      "pendingOwner": null,
      "ownedByThisInstance": true,
      "recordHeldByThisInstance": true,
      "txHash": "0x2d7f4a1c8e9b03d56f2a7c1e4b8d09f36a5c2e7b1d4f8a03c6e9b2d5f1a7c4e8",
      "signedBy": "0x8c2d4e6f0a1b3c5d7e9f1a2b4c6d8e0f2a4b6c8d"
    }
  }
  ```
</ResponseExample>

## Error Codes

| Code | HTTP | Cause |
| - | - | - |
| `VALIDATION_ERROR` | `400` | `txHash` is missing or malformed |
| `TX_NOT_VERIFIED` | `400` | The transaction changed no ownership of this list |
| `NOT_PENDING_OWNER` | `403` | Another instance keeps the list and no wallet of your instance is named by its pending transfer |
| `ACCESS_LIST_NOT_FOUND` | `404` | No whitelist with this ID is kept by your instance, or managed or pending to one of its wallets, on this network |
| `ACCESS_LIST_OWNER_CONFIRM_FAILED` | `500` | The change could not be recorded and no more specific code applied |
| `ACCESS_LISTS_NOT_CONFIGURED` | `503` | The whitelist factory is not deployed on this network |
| `ACCESS_LIST_UNREADABLE` | `503` | The owner could not be read after the transaction's block, so nothing was recorded. Retry shortly |
| `SERVICE_UNAVAILABLE` | `503` | Your instance's verified wallets could not be read. Retry shortly |

The confirm call can also return any [transaction verification error](/endpoints/introduction#confirm-a-transaction).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.