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

# Revoke Proof

> Revoke a proof-backed claim and drop its ledger row

Revokes one claim slot on the registry and removes the ledger row that recorded which proof backed it. Use it when a proved fact stops being true.

## Body Parameters

<ParamField body="walletAddress" type="string" required>The subject.</ParamField>

<ParamField body="claimType" type="string | integer" required>
  The slot to revoke, as a name or an index from 0 to 7.
</ParamField>

<ParamField body="txHash" type="string">
  Send it to confirm the revocation. Omit it to receive the calldata.
</ParamField>

## Response Fields

<ResponseField name="data" type="object">
  <Expandable>
    <ResponseField name="action" type="string">`SIGN_TRANSACTION`. Calldata leg only.</ResponseField>
    <ResponseField name="walletAddress" type="string">The subject, checksummed.</ResponseField>
    <ResponseField name="claimType" type="string">The slot, by name.</ResponseField>
    <ResponseField name="txHash" type="string">The confirmed transaction. Confirm leg only.</ResponseField>
    <ResponseField name="gasUsed" type="string">Gas the revocation used. Confirm leg only.</ResponseField>
    <ResponseField name="confirmWith" type="object">`{ field: "txHash" }`. Calldata leg only.</ResponseField>
  </Expandable>
</ResponseField>

<Note>
  This revokes on the registry, which is a different act from the revocation the proof tool records. `npm run revoke` in the tool writes a signed entry into your own append-only registry, distinguishing a claim that lapsed from one that was never valid. Doing that keeps your record straight; doing this stops a token contract acting on the claim. A real revocation usually wants both.
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.trusset.org/customers/api/identity/proofs/revoke" \
    -H "X-API-Key: trusset_your_key_here" \
    -H "Content-Type: application/json" \
    -d '{"walletAddress": "0xAbCdEf0123456789AbCdEf0123456789AbCdEf01", "claimType": "RESIDENCY"}'
  ```
</RequestExample>

<ResponseExample>
  ```json Confirmed Response theme={null}
  {
    "success": true,
    "data": {
      "walletAddress": "0xAbCdEf0123456789AbCdEf0123456789AbCdEf01",
      "claimType": "RESIDENCY",
      "txHash": "0xd402612bae9f7c3018d5a64b0f9e28c7135ad60897e4b2f150c3a8e6d7b409f1",
      "gasUsed": "51204"
    }
  }
  ```
</ResponseExample>

## Error Codes

| Code                  | HTTP  | Cause                                             |
| --------------------- | ----- | ------------------------------------------------- |
| `INVALID_ADDRESS`     | `400` | `walletAddress` is missing or malformed           |
| `INVALID_CLAIM_TYPE`  | `400` | `claimType` is not a slot between 0 and 7         |
| `TX_TARGET_MISMATCH`  | `400` | The transaction targets a different wallet        |
| `TX_CLAIM_MISMATCH`   | `400` | The transaction revokes a different claim         |
| `INSTANCE_NOT_FOUND`  | `404` | The instance behind your key no longer exists     |
| `REVOKE_PROOF_FAILED` | `500` | The revocation could not be prepared or confirmed |
