/v1/issuer/verify
Public
Verify a credential
Verify a credential by UUID or JWT. This endpoint supports flexible verification options
including the ability to skip specific checks (status, expiration, signature).
Parameters
| Name | Location | Type | Description |
|---|---|---|---|
X-API-Key
|
header | string | Optional API key for verifier authentication. When provided, credential claims are included in the response. |
* Required parameter
Request Body
Parameters for verifying a credential
uuid
string (uuid)
Credential UUID to verify
Example: 8fb9117f-6767-4b79-8ee1-855952f1e98a
jwt
string
Credential JWT to verify (alternative to uuid)
Example: eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lzc3Vlci5leGFtcGxlLmNvbSJ9.signature
skip_status_check
boolean
Skip revocation/suspension check
skip_expiration_check
boolean
Skip expiration check
skip_signature_check
boolean
Skip cryptographic signature check
Response
Content-Type: application/json
Verification response with standard envelope. Contains: - success: Whether the API call succeeded - data: Object with verified (bool), status (string), message, verified_at, credential details
success
*
boolean
Whether the API call succeeded
Example: true
data
*
object
Verification result data
verified
*
boolean
Whether the credential is valid
Example: true
status
*
string
Detailed verification result code: - success: Credential is valid and all checks passed - not_found: No credential exists with the given identifier - invalid_signature: Cryptographic signature verification failed - expired: Credential has passed its expiration date - revoked: Credential was permanently invalidated by the issuer - suspended: Credential is temporarily disabled - malformed: Credential format is invalid or corrupted
Allowed values: "success", "not_found", "invalid_signature", "expired", "revoked", "suspended", "malformed"
Example: success
message
string
Human-readable verification message
Example: Credential verified successfully
verified_at
string (date-time)
When verification was performed
Example: 2025-01-15T10:30:00Z
trust_path
string
Trust verification path used
Example: did:web
error
string
nullable
Error message if verification failed
trust
object
nullable
Trust information for the issuer
verdict
string
Trust verdict
Example: trusted
score
number
Trust score
Example: 85.0
source_type
string
Source of trust information
Example: did:web
domain
string
nullable
Issuer domain
Example: acme-corp.com
domain_fully_verified
boolean
Whether domain is fully verified
Example: true
signals
array[object]
Trust signals with status indicators
Array items:
icon
string
Visual indicator character
Example: ✓
text
string
Signal description
Example: Domain ownership verified
status
string
Signal status level
Allowed values: "success", "danger", "neutral"
Example: success
warnings
array[string]
Trust warnings
Array items:
credential
object
nullable
Credential details (only present when credential is found)
uuid
string (uuid)
Example: f74aeab4-8a6c-408f-b52b-58112bd18183
status
string
Example: active
type
string
Credential type
Example: EmployeeBadgeCredential
type_display
string
Human-readable credential type
Example: Employee Badge
schema
object
nullable
uuid
string (uuid)
Example: e6cac86d-df2e-430f-bb62-f416218eabdb
name
string
Example: Employee Badge Schema
issuer
object
name
string
Example: Acme Corporation
did
string
Example: did:web:acme-corp.com
domain
string
nullable
Example: acme-corp.com
domain_fully_verified
boolean
Example: true
subject
object
identifier_type
string
nullable
Example: email
did
string
nullable
Example: did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK
issued_at
string (date-time)
Example: 2025-01-01T00:00:00Z
expires_at
string (date-time)
nullable
Example: 2027-01-01T00:00:00Z
claims
object
nullable
Credential claims (only when authenticated)
Example: {"name":"Jane Smith","title":"Software Engineer","department":"Engineering"}
Code Examples
import os
from aho_sdk import AhoSdk
client = AhoSdk.issuer(api_key=os.environ["AHO_API_KEY"])
result = client.verify.create(
body={
"uuid": "8fb9117f-6767-4b79-8ee1-855952f1e98a",
"jwt": "eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lzc3Vlci5leGFtcGxlLmNvbSJ9.signature",
"skip_status_check": True,
"skip_expiration_check": True,
"skip_signature_check": True
}
)
client = AhoSdk.issuer(api_key: ENV["AHO_API_KEY"])
result = client.verify.create(
body: {
uuid: "8fb9117f-6767-4b79-8ee1-855952f1e98a",
jwt: "eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lzc3Vlci5leGFtcGxlLmNvbSJ9.signature",
skip_status_check: true,
skip_expiration_check: true,
skip_signature_check: true
}
)
import { AhoSdk } from '@aho/sdk';
const client = AhoSdk.issuer({ apiKey: process.env.AHO_API_KEY });
const result = await client.verify.create({
body: {
uuid: "8fb9117f-6767-4b79-8ee1-855952f1e98a",
jwt: "eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lzc3Vlci5leGFtcGxlLmNvbSJ9.signature",
skipStatusCheck: true,
skipExpirationCheck: true,
skipSignatureCheck: true
}
});
curl -X POST 'https://api.aho.com/v1/issuer/verify' \
-H 'Content-Type: application/json' \
-d '{
"uuid": "8fb9117f-6767-4b79-8ee1-855952f1e98a",
"jwt": "eyJhbGciOiJFUzI1NiJ9.eyJpc3MiOiJodHRwczovL2lzc3Vlci5leGFtcGxlLmNvbSJ9.signature",
"skip_status_check": true,
"skip_expiration_check": true,
"skip_signature_check": true
}'
Try It
Log in to test this endpoint directly from the documentation.
Log in