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

# List Proofs

> The claim slots on an identity and which proof backs each one

Returns the subject's on-chain root and every claim slot, joined with the ledger row that records which proof filed it. It answers the question a reviewer asks: what does this identity assert, and where did each assertion come from.

## Path Parameters

<ParamField path="walletAddress" type="string" required>The subject's wallet address.</ParamField>

## Response Fields

<ResponseField name="data" type="object">
  <Expandable>
    <ResponseField name="walletAddress" type="string">The subject, checksummed.</ResponseField>
    <ResponseField name="verified" type="boolean">Whether the registry holds a verified identity.</ResponseField>
    <ResponseField name="frozen" type="boolean">Whether the identity is frozen.</ResponseField>
    <ResponseField name="chainUnavailable" type="boolean">`true` when the registry could not be read. The rest of the response is then not a statement about the identity.</ResponseField>
    <ResponseField name="proofs" type="array">One entry per claim slot on chain. See below.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="proofs" type="array">
  <Expandable>
    <ResponseField name="claimType" type="integer">Slot index, 0 to 7.</ResponseField>
    <ResponseField name="claimTypeLabel" type="string">Its name, for example `RESIDENCY`.</ResponseField>
    <ResponseField name="fieldName" type="string">The bundle field that filed it, or `null` when no ledger row matches.</ResponseField>
    <ResponseField name="circuit" type="string">The circuit that proved it, or `null`.</ResponseField>
    <ResponseField name="proofDigest" type="string">Digest of the STARK behind it, or `null`.</ResponseField>
    <ResponseField name="bundleRoot" type="string">The root of the bundle that filed it, or `null`.</ResponseField>
    <ResponseField name="rootCurrent" type="boolean">Whether that bundle's root is still the one on chain. `false` means the claim was filed from a bundle the identity has since rotated away from.</ResponseField>
    <ResponseField name="source" type="string">`proof` when a ledger row backs it, `manual` when the slot is filled but nothing records a proof, `null` when the ledger could not be read.</ResponseField>
    <ResponseField name="issuer" type="string">Who wrote the claim on chain.</ResponseField>
    <ResponseField name="issuedAt" type="integer">Unix seconds.</ResponseField>
    <ResponseField name="expiry" type="integer">Unix seconds, or `0` for no expiry.</ResponseField>
    <ResponseField name="txHash" type="string">The transaction that filed it, or `null`.</ResponseField>
  </Expandable>
</ResponseField>

<Warning>
  `rootCurrent: false` is the one to watch. The claim is still on chain and still readable by a token contract. But the bundle it came from no longer matches the identity's root, so the proof behind it can no longer be checked against the chain. Re-attest from the current bundle.
</Warning>

<Note>
  The chain is the source of truth here and the ledger only supplies labels. When the ledger cannot be read, `source` is `null` on every entry and the per-proof fields are absent, but the root and the claims still render.
</Note>

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

<ResponseExample>
  ```json Response theme={null}
  {
    "success": true,
    "data": {
      "walletAddress": "0xAbCdEf0123456789AbCdEf0123456789AbCdEf01",
      "verified": true,
      "frozen": false,
      "chainUnavailable": false,
      "proofs": [
        {
          "claimType": 3,
          "claimTypeLabel": "RESIDENCY",
          "fieldName": "country",
          "circuit": "set_membership",
          "proofDigest": "0x2f74c8a1b09d3e6754108bfa2c9d70e3b5148af6209c73de815b40a92c6ef31d",
          "bundleRoot": "0x7c3a9f1d8b2e64057af13c9e0d5b8a4726f1c0e93d8b5a2740c6e19fb3d47a58",
          "rootCurrent": true,
          "source": "proof",
          "issuer": "0x1234f9a07c6b53d81e2a4f70c9b385d6014a7e52",
          "issuedAt": 1788696000,
          "expiry": 1820246400,
          "txHash": "0x9f2c41d8b7e05a3164c2870fbd935e1a4c7802db6135ea9048f7c21b5d3ea41b"
        }
      ]
    }
  }
  ```
</ResponseExample>

## Error Codes

| Code                 | HTTP  | Cause                                         |
| -------------------- | ----- | --------------------------------------------- |
| `INVALID_ADDRESS`    | `400` | `walletAddress` is not a valid address        |
| `INSTANCE_NOT_FOUND` | `404` | The instance behind your key no longer exists |
| `PROOFS_FAILED`      | `500` | The proof tree could not be assembled         |
