Skip to main content
GET
Get Credential

Headers

API-Version
string

Pin request, response, and webhook shapes to a specific dated API version (YYYY-MM-DD). Omit to use the version pinned to your API key (set when the key is created; new keys default to the latest version). New integrations should target the latest version.

Pattern: ^\d{4}-\d{2}-\d{2}$
Example:

"2026-11-02"

Path Parameters

credentialId
string
required

URN of the credential to retrieve

Example:

"urn:via:credential:550e8400-e29b-41d4-a716-446655440000"

Response

The credential, including its W3C Verifiable Credential.

id
string
required

URN of the credential.

Example:

"urn:via:credential:550e8400-e29b-41d4-a716-446655440000"

type
string
required

The credential's kind (e.g. DOCUMENT, FORM, JSON, POLICY). Called resourceType before api-version 2026-11-02; clients pinned below that still receive the old key.

Example:

"DOCUMENT"

status
enum<string>
required

The credential's status (v0.3 §0.10.1): DRAFT until decided, ACTIVE while usable, and once it has ended how it ended — REJECTED, CANCELED, REVOKED (a spent bound included, with executionsRemaining 0) or EXPIRED. An API version before 2026-11-02 receives INACTIVE for the four endings.

Available options:
DRAFT,
ACTIVE,
REJECTED,
CANCELED,
REVOKED,
EXPIRED
Example:

"ACTIVE"

executionsRemaining
number | null
required

Uses left against the mandate's maxExecutions bound, where one use is one approved verification. null means the mandate is unlimited — note this is NOT the same as 0, which means every use has been spent and the mandate has revoked itself.

Example:

1

w3cCredential
object
required

The W3C Verifiable Credential following the VIA protocol specification.

While the credential is in DRAFT status, this object is in building mode: evidence, the proof, and other fields may still be attached or modified as grantors review and decide. It is unsigned at this stage.

Once all grantors have accepted (or the request window expires), the status transitions out of DRAFT and the credential is sealed and can be passed for verification as defined by the VIA protocol.

Every credential carries the signed specVersion marker, the singular evidence/proof keys, evidence with type+mediaType, and a single securing STAMP (proof.event = "STAMP").

A mandate with no expiry is signed with "validUntil": null. One signed without the key (v0.3 §0.4.2) is returned without it; both forms verify.

Clients pinned below API version 2026-09-01 receive this reshaped to the historical plural evidences/proofs with the marker dropped — see that version's changes.

Example:
inactiveAt
object | null

When the credential stopped being usable — rejected, cancelled, revoked, exhausted or expired. Null while it is DRAFT or ACTIVE.

Example:

"2026-05-02T10:15:30.000Z"

inactiveReason
enum<string> | null

WHICH of those ended it. Null while the credential is still usable, and on a credential that went terminal before this field existed. Always the bare kind — a revocation note typed by an operator is not carried here.

Available options:
rejected,
canceled,
exhausted,
revoked,
expired,
null
Example:

"revoked"

name
string

Human-readable name of the credential; null when unset.

Example:

"Credential Name"

description
string

Free-text description of the credential; null when unset.

Example:

"Document to be requested on onboarding"

internalId
string

Identifier to help you identify the credential in your own system. We recommend using a unique value.

Example:

"internal-12345"

tags
string[]

Free-form labels attached to the credential.

Example: