Skip to content

Credentials

The Credentials endpoints allow you to issue, verify, revoke, and manage PASETO v4 signed Verifiable Credentials.

Creates and signs a PASETO v4 Verifiable Credential with the specified subject data.

POST /v1/credentials

Requires BearerAuth or ApiKeyAuth.

FieldTypeRequiredDescription
issuer_didstringYesDID of the credential issuer
issuer_private_keystringYesBase64-encoded private key for signing
subject_didstringYesDID of the credential subject
credential_typestringYesType of credential (e.g., “EmploymentCredential”)
claimsobjectYesCustom claims/attributes for the credential
expiration_datestringNoISO 8601 expiration date
Terminal window
curl -X POST "https://api.veriglob.com/v1/credentials" \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"issuer_did": "did:key:z6MkissuerDID...",
"issuer_private_key": "base64-encoded-private-key",
"subject_did": "did:key:z6MksubjectDID...",
"credential_type": "EmploymentCredential",
"claims": {
"employer": "Acme Corporation",
"position": "Software Engineer",
"start_date": "2024-01-15"
},
"expiration_date": "2025-01-15T00:00:00Z"
}'

201 Created

{
"status": "success",
"message": "Credential issued successfully",
"data": {
"credential_id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5",
"credential": "v4.public.eyJpc3MiOiJkaWQ6a2V5Ono2TWtoLi4uIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6a2V5Ono2TWsuLi4ifX0...",
"issuer": "did:key:z6MkissuerDID...",
"subject": "did:key:z6MksubjectDID...",
"credential_type": "EmploymentCredential",
"issued_at": "2024-01-15T10:30:00Z",
"expires_at": "2025-01-15T00:00:00Z"
}
}
StatusDescription
400Invalid request body or missing required fields
401Invalid or missing API key
429Rate limit exceeded

Verifies a PASETO v4 credential signature and optionally checks revocation status.

POST /v1/credentials/verify

Requires BearerAuth or ApiKeyAuth.

FieldTypeRequiredDescription
credentialstringYesThe PASETO v4 credential token
issuer_didstringYesDID of the expected issuer
check_revocationbooleanNoWhether to check revocation status (default: false)
Terminal window
curl -X POST "https://api.veriglob.com/v1/credentials/verify" \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"credential": "v4.public.eyJpc3MiOi...",
"issuer_did": "did:key:z6MkissuerDID...",
"check_revocation": true
}'

200 OK (Valid)

{
"status": "success",
"message": "Credential verified successfully",
"data": {
"valid": true,
"issuer": "did:key:z6MkissuerDID...",
"subject": "did:key:z6MksubjectDID...",
"credential_type": "EmploymentCredential",
"claims": {
"employer": "Acme Corporation",
"position": "Software Engineer"
},
"revoked": false,
"expired": false
}
}

200 OK (Invalid)

{
"status": "success",
"message": "Credential verification completed",
"data": {
"valid": false,
"error": "Signature verification failed"
}
}
StatusDescription
400Invalid credential format or missing fields
401Invalid or missing API key
429Rate limit exceeded
500Internal server error during verification

Marks a credential as revoked in the revocation registry.

POST /v1/credentials/revoke/{credential_id}

Requires BearerAuth or ApiKeyAuth.

ParameterTypeRequiredDescription
credential_idstringYesThe credential ID to revoke
FieldTypeRequiredDescription
reasonstringNoReason for revocation
issuer_didstringYesDID of the issuer (for authorization)
Terminal window
curl -X POST "https://api.veriglob.com/v1/credentials/revoke/urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5" \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"reason": "Employment terminated",
"issuer_did": "did:key:z6MkissuerDID..."
}'

200 OK

{
"status": "success",
"message": "Credential revoked successfully",
"data": {
"credential_id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5",
"revoked": true,
"revoked_at": "2024-06-15T14:30:00Z",
"reason": "Employment terminated"
}
}
StatusDescription
400Invalid credential ID or missing issuer_did
401Invalid or missing API key
403Not authorized to revoke this credential
404Credential not found
429Rate limit exceeded

Returns the current status of a credential in the revocation registry.

GET /v1/credentials/status/{credential_id}
Terminal window
curl -X GET "https://api.veriglob.com/v1/credentials/status/urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5" \
-H "Authorization: Bearer your-api-key"

200 OK (Active)

{
"status": "success",
"message": "Credential status retrieved",
"data": {
"credential_id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5",
"revoked": false
}
}

200 OK (Revoked)

{
"status": "success",
"message": "Credential status retrieved",
"data": {
"credential_id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5",
"revoked": true,
"revoked_at": "2024-06-15T14:30:00Z",
"reason": "Employment terminated"
}
}

Returns all credentials issued by the specified DID.

GET /v1/credentials/by-issuer/{issuer_did}
Terminal window
curl -X GET "https://api.veriglob.com/v1/credentials/by-issuer/did:key:z6MkissuerDID..." \
-H "Authorization: Bearer your-api-key"
{
"status": "success",
"message": "Credentials retrieved successfully",
"data": {
"credentials": [
{
"credential_id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5",
"subject": "did:key:z6MksubjectDID1...",
"credential_type": "EmploymentCredential",
"issued_at": "2024-01-15T10:30:00Z",
"revoked": false
}
],
"total": 1
}
}

Returns all credentials where the specified DID is the subject.

GET /v1/credentials/by-subject/{subject_did}

Common credential types supported:

TypeDescription
VerifiableCredentialGeneric verifiable credential
EmploymentCredentialEmployment verification
EducationCredentialEducational achievement
MembershipCredentialOrganization membership
IdentityCredentialIdentity verification
AgeVerificationCredentialAge verification

You can also define custom credential types by providing any string value.