> For the complete documentation index, see [llms.txt](https://docs.toolkit.equs.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.toolkit.equs.ai/docs/revocation/revoke-credential-api.md).

# Revoke Credential (API)

Revoke an issued credential through the Control API

Revoking takes one call, and sometimes a lookup first. You need the credential's Status List pointer - if you kept it when you issued, go straight to [step 2](#id-2.-revoke). If you didn't, read it back first.

### 1. Find the Status List pointer, if you don't have it

A credential is identified for revocation by a pair - the **`uri`** of the Status List it belongs to, and its **`idx`** within that list. Both are fields on the [Issuance Result](/docs/issuance/issuance-results.md), and both are also inside the credential itself.

Neither value is secret and neither is personal, so the simplest approach is to store the pair against your own record of the Holder at issuance time and skip this step when you come to revoke. Read it back only if you didn't.

## Get Credential Offer

> Fetches Credential Offer

```json
{"openapi":"3.0.0","info":{"title":"EqusDTK Control API Documentation","version":"0.1.2"},"tags":[{"name":"Issuance","description":""}],"security":[{"sp":[]},{"tenant":[]},{"sp":[]}],"components":{"securitySchemes":{"sp":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Service Provider. Token of the Service Provider client in the `agents` realm, with no `tenantId` claim. Authorize one bearer scheme at a time."},"tenant":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Tenant. Token of a Tenant machine client or of a Tenant portal user, carrying the `tenantId` claim. Authorize one bearer scheme at a time."}},"schemas":{"GetCredentialOfferResponse":{"type":"object","properties":{"uriId":{"type":"string","description":"Credential offer URI unique ID"},"userId":{"type":"object","description":"User unique ID"},"state":{"type":"string","description":"Current lifecycle state of the credential offer.","enum":["pending","issued","accepted","declined","neglected","revoked","failed","compromised"]},"credLifetime":{"type":"object","description":"Lifetime, in seconds, of the credential issued from this offer."},"assurance":{"type":"object","description":"Assurance level applied to the credential issued from this offer."},"offerDate":{"format":"date-time","type":"string","description":"Date and time the credential offer was created."},"updatedDate":{"format":"date-time","type":"string","description":"Date and time the credential offer was last updated."},"credDefId":{"type":"string","description":"Credential definition unique ID"},"credentialIssuer":{"type":"string","description":"Base URL of the issuer that produced this credential offer."},"issuerId":{"type":"string","description":"Issuer unique ID"},"statusList":{"description":"Status list entry used to track and revoke the issued credential, if any.","allOf":[{"$ref":"#/components/schemas/StatusInfo"}]},"byReference":{"type":"string","description":"Deep link the wallet uses to fetch this credential offer by reference."}},"required":["uriId","state","credLifetime","assurance","offerDate","updatedDate","credDefId","credentialIssuer","issuerId","byReference"]},"StatusInfo":{"type":"object","properties":{"uri":{"type":"string","description":"URI of the status list credential that tracks this offer."},"idx":{"type":"number","description":"Index of the offer within its status list."}},"required":["uri","idx"]}}},"paths":{"/api/v1/issuance/offers/{id}":{"get":{"description":"Fetches Credential Offer","operationId":"OfferController_getCredentialOffer_api/v1","parameters":[{"name":"id","required":true,"in":"path","description":"Credential offer unique ID","schema":{"type":"string"}}],"responses":{"200":{"description":"When Offer i retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCredentialOfferResponse"}}}},"404":{"description":"When no offer with such id exists for this user."}},"summary":"Get Credential Offer","tags":["Issuance"]}}}}
```

### 2. Revoke

## Revoke credential

> Revoke credential by status list info

```json
{"openapi":"3.0.0","info":{"title":"EqusDTK Control API Documentation","version":"0.1.2"},"tags":[{"name":"Credential","description":""}],"security":[{"sp":[]},{"tenant":[]}],"components":{"securitySchemes":{"sp":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Service Provider. Token of the Service Provider client in the `agents` realm, with no `tenantId` claim. Authorize one bearer scheme at a time."},"tenant":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Tenant. Token of a Tenant machine client or of a Tenant portal user, carrying the `tenantId` claim. Authorize one bearer scheme at a time."}},"schemas":{"RevokeCredentialRequest":{"type":"object","properties":{"idx":{"type":"number","description":"Index of the credential within its status list to revoke."},"uri":{"type":"string","description":"URI of the status list credential that tracks this credential entry."}},"required":["idx","uri"]}}},"paths":{"/api/v1/credential/revoke":{"post":{"description":"Revoke credential by status list info","operationId":"CredentialController_revokeCredential_api/v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeCredentialRequest"}}}},"responses":{"200":{"description":"When Credential is revoked successfully."},"400":{"description":"When the credential uri is invalid - could not parse uri."},"404":{"description":"- When the related status list is not found.\n- When the related issuer is not found."}},"summary":"Revoke credential","tags":["Credential"]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.toolkit.equs.ai/docs/revocation/revoke-credential-api.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
