Credential status
Check a W3C Bitstring Status List entry for revocation, independent of any chain.
POST /v1/credential-status
This endpoint is chain independent, and that is the whole point. A
credential's credentialStatus entry points at a published status-list
credential and an index into it. Checking revocation means fetching that
list, decoding its bitstring, and reading one bit. No chain is involved, so
this works for any standards-compliant issuer with no per-chain code and no
adapter.
Why this matters for Ethereum
Per the adapter capability matrix, Ethereum has no presentation
verifier, and GET /v1/status always returns 404 for it: on Ethereum, status
travels inside the credential rather than in separate oracle-queryable
state. This endpoint is therefore the practical revocation route for an
Ethereum-issued credential today. See
Status for the 404 behaviour, and
Verify for the presentation-based path
that currently supports eIDChain credentials only.
Request
The body is the credentialStatus entry itself, taken as-is from the
credential. Both BitstringStatusListEntry and the older StatusList2021Entry
are accepted.
| Field | Type | Description |
|---|---|---|
type | string | The status entry type, for example BitstringStatusListEntry. |
statusPurpose | string | The purpose declared on the status list, for example revocation. |
statusListIndex | string | The index of this credential's bit within the list. |
statusListCredential | string | The URL of the published status-list credential. |
curl -X POST "https://<host>/v1/credential-status" \
-H "Authorization: Bearer idc_live_..." \
-H "Content-Type: application/json" \
-d '{
"type": "BitstringStatusListEntry",
"statusPurpose": "revocation",
"statusListIndex": "94567",
"statusListCredential": "https://issuer.example/status/3"
}'Response
{ "revoked": false, "valid": true }There is no signature field. See the caveat below.
This is a plain read, not a signed attestation
This is the most important thing to understand about this endpoint. The
response reports status; it does not verify holder or issuer proofs, and
nothing in it is signed. It cannot be handed to a contract as evidence the
way a signed attestation from Status or
Verify can. If you need something a
chain can verify, use /v1/verify instead. This is the only endpoint in the
API that returns a status without signing it.
Limits and status codes
Request bodies are capped at 64 KiB.
| Code | Meaning |
|---|---|
| 200 | The entry was evaluated; the body reports revoked and valid. |
| 400 | The request body was malformed. |
| 422 | The entry could not be evaluated, for example the status list could not be fetched or the index is out of range. |
Specification
This endpoint implements the W3C Bitstring Status List specification:
https://www.w3.org/TR/vc-bitstring-status-list/.