Attestra
Endpoints

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.

FieldTypeDescription
typestringThe status entry type, for example BitstringStatusListEntry.
statusPurposestringThe purpose declared on the status list, for example revocation.
statusListIndexstringThe index of this credential's bit within the list.
statusListCredentialstringThe 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.

CodeMeaning
200The entry was evaluated; the body reports revoked and valid.
400The request body was malformed.
422The 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/.

On this page