> ## 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.

# Get Wallet Eligibility

> Where one wallet stands on every eligibility register of your instance

Reports, for one wallet, every verification profile of your instance that carries an eligibility register: the admission recorded for the wallet, and what the register itself answers right now. Use it before a lending or vault action to tell whether a gate built on a profile will admit the wallet.

The register's live answer is what a market or vault reads. It can differ from the admission: a removal waiting to be signed leaves the wallet on the register, and a register managed outside Trusset can hold wallets no admission was recorded for.

## Path Parameters

<ParamField path="walletAddress" type="string" required>
  The wallet, `0x` followed by 40 hex characters.
</ParamField>

## Query Parameters

<ParamField query="live" type="string" default="true">
  `false` skips the chain reads, so every `onChain` is `null`. Any other value reads the registers.
</ParamField>

## Response Fields

<ResponseField name="data" type="object">
  <Expandable>
    <ResponseField name="walletAddress" type="string">The wallet, checksummed.</ResponseField>

    <ResponseField name="profiles" type="array">
      One entry per profile with a register, oldest profile first. Empty when no profile has one.

      <Expandable>
        <ResponseField name="profile" type="object">`{ key, name, entityType, professionalOnly, requirementsHash }`.</ResponseField>
        <ResponseField name="registryAddress" type="string">The profile's eligibility register.</ResponseField>
        <ResponseField name="admissionMode" type="string">`REGISTER`, `INSTANCE_REGISTER` or `EXTERNAL`, recorded when the register was bound. See [Which registers can be signed here](/endpoints/customers/introduction#which-registers-can-be-signed-here).</ResponseField>
        <ResponseField name="admission" type="object">The wallet's admission to that register, as on [List Admissions](/endpoints/customers/list-admissions), or `null` when none was recorded.</ResponseField>

        <ResponseField name="onChain" type="object">
          The register's live answer. `null` with `live=false`.

          <Expandable>
            <ResponseField name="registered" type="boolean">Whether the wallet holds an identity on the register (`contains`). `null` when the register does not answer `contains`.</ResponseField>
            <ResponseField name="verified" type="boolean">What `isVerified(address)` answers, which is what a market or vault gate reads.</ResponseField>
            <ResponseField name="unavailable" type="boolean">Present and `true`, alone, when the register could not be read. It says nothing about the wallet.</ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<Warning>
  `onChain.unavailable: true` is a failed read, not a verdict. Do not treat the wallet as refused, and do not queue an admission or removal because of it. Read again shortly.
</Warning>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.trusset.org/customers/api/eligibility/wallet/0xfF21b8AC28Bb6A20c1c0160AF42303D2946B99EA" \
    -H "X-API-Key: trusset_your_key_here"
  ```

  ```typescript TypeScript theme={null}
  const wallet = '0xfF21b8AC28Bb6A20c1c0160AF42303D2946B99EA';
  const response = await fetch(
    `https://api.trusset.org/customers/api/eligibility/wallet/${wallet}`,
    { headers: { 'X-API-Key': 'trusset_your_key_here' } }
  );
  const { data } = await response.json();

  const professional = data.profiles.find(
    (entry: { profile: { key: string } }) => entry.profile.key === 'PROFESSIONAL'
  );
  const admittedOnChain = professional?.onChain?.verified === true;
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "success": true,
    "data": {
      "walletAddress": "0xfF21b8AC28Bb6A20c1c0160AF42303D2946B99EA",
      "profiles": [
        {
          "profile": {
            "key": "PROFESSIONAL",
            "name": "Professional",
            "entityType": "INDIVIDUAL",
            "professionalOnly": true,
            "requirementsHash": "0x8919ea37bac1f44ea0e8a37529be970cb49e9779ebd4c4e98490cfd754e9d390"
          },
          "registryAddress": "0x4f2A9c81D06e3b75A1C8E24D9B07f56E3a1d8C90",
          "admissionMode": "REGISTER",
          "admission": {
            "id": "cmgdz1k4p0003l40a2r5w8y1n",
            "profileKey": "PROFESSIONAL",
            "profileName": "Professional",
            "registryAddress": "0x4f2A9c81D06e3b75A1C8E24D9B07f56E3a1d8C90",
            "walletAddress": "0xfF21b8AC28Bb6A20c1c0160AF42303D2946B99EA",
            "customerId": "cmgdy2b7r0004l40a9c3e6f2h",
            "status": "ADMITTED",
            "source": "API",
            "sourceRef": null,
            "lapsed": false,
            "current": true,
            "requirementsHash": "0x8919ea37bac1f44ea0e8a37529be970cb49e9779ebd4c4e98490cfd754e9d390",
            "dueAt": "2027-10-05T11:02:36.000Z",
            "admittedTxHash": "0xa26d665a8a5906cedfa63287b1b36e65ec42a1fd5c30617ac52bdc2d2d541d73",
            "admittedAt": "2026-10-05T11:02:36.000Z",
            "removalReason": null,
            "removalTxHash": null,
            "removedAt": null,
            "signedBy": "0xCD92134767aEC2562be15d2a2062A082dA17dD84",
            "error": null,
            "createdAt": "2026-10-05T10:47:09.512Z",
            "updatedAt": "2026-10-05T11:03:05.214Z"
          },
          "onChain": {
            "registered": true,
            "verified": true
          }
        },
        {
          "profile": {
            "key": "professional-companies",
            "name": "Professional companies",
            "entityType": "COMPANY",
            "professionalOnly": true,
            "requirementsHash": "0x54c373e63d66f499464d432a554dad941c51702d6d37abd06a6faea7b8874e80"
          },
          "registryAddress": "0x9cf39640Ad6296e4DF0FaBb764917B6dAe5aB7Cc",
          "admissionMode": "REGISTER",
          "admission": null,
          "onChain": {
            "registered": false,
            "verified": false
          }
        }
      ]
    },
    "error": null,
    "metadata": {
      "requestId": "550e8400-e29b-41d4-a716-446655440000",
      "timestamp": "2026-10-05T12:00:00.000Z"
    }
  }
  ```
</ResponseExample>

## Error Codes

| Code | HTTP | Cause |
| - | - | - |
| `INVALID_ADDRESS` | `400` | `walletAddress` is not a valid address, or is the zero address |
| `INSTANCE_NOT_FOUND` | `404` | The instance behind your key no longer exists |
| `ELIGIBILITY_NETWORK_UNSUPPORTED` | `409` | Your instance is not on Ethereum and `live` was not `false` |
| `RATE_LIMIT_EXCEEDED` | `429` | Your instance went over its budget of 120 eligibility requests per minute |
| `WALLET_ELIGIBILITY_FAILED` | `500` | The admissions could not be read |


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