curl --request POST \
--url https://api.example.com/credential/verify \
--header 'Content-Type: application/json' \
--data '
{
"presentation": {
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://via.humanos.dev/ns/v1"
],
"type": [
"VerifiablePresentation"
],
"holder": "did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"verifiableCredential": {
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://via.humanos.dev/ns/v1"
],
"id": "urn:via:credential:550e8400-e29b-41d4-a716-446655440000",
"type": [
"VerifiableCredential",
"VIAMandate"
],
"issuer": "did:web:humanos.tech",
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": null,
"credentialSubject": {
"id": "did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"mandate": {
"grantor": "did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7",
"scope": "humanos.credential.request",
"context": {
"authorizedDIDs": [
"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7"
]
}
}
},
"evidences": [
{
"id": "urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34",
"digestSRI": "sha256-abc123",
"location": "https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34"
}
]
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"created": "2026-05-02T10:15:30.000Z",
"verificationMethod": "did:web:humanos.tech#key-1",
"proofPurpose": "authentication",
"proofValue": "z2pcVdSdoMTrkYP9rVdz..."
}
},
"presentationEncoded": "eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=",
"executionParams": {
"amount": 100,
"currency": "USD"
}
}
'import requests
url = "https://api.example.com/credential/verify"
payload = {
"presentation": {
"@context": ["https://www.w3.org/ns/credentials/v2", "https://via.humanos.dev/ns/v1"],
"type": ["VerifiablePresentation"],
"holder": "did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"verifiableCredential": {
"@context": ["https://www.w3.org/ns/credentials/v2", "https://via.humanos.dev/ns/v1"],
"id": "urn:via:credential:550e8400-e29b-41d4-a716-446655440000",
"type": ["VerifiableCredential", "VIAMandate"],
"issuer": "did:web:humanos.tech",
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": None,
"credentialSubject": {
"id": "did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"mandate": {
"grantor": "did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7",
"scope": "humanos.credential.request",
"context": { "authorizedDIDs": ["did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000", "did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7"] }
}
},
"evidences": [
{
"id": "urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34",
"digestSRI": "sha256-abc123",
"location": "https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34"
}
]
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"created": "2026-05-02T10:15:30.000Z",
"verificationMethod": "did:web:humanos.tech#key-1",
"proofPurpose": "authentication",
"proofValue": "z2pcVdSdoMTrkYP9rVdz..."
}
},
"presentationEncoded": "eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=",
"executionParams": {
"amount": 100,
"currency": "USD"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
presentation: {
'@context': ['https://www.w3.org/ns/credentials/v2', 'https://via.humanos.dev/ns/v1'],
type: ['VerifiablePresentation'],
holder: 'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
verifiableCredential: {
'@context': ['https://www.w3.org/ns/credentials/v2', 'https://via.humanos.dev/ns/v1'],
id: 'urn:via:credential:550e8400-e29b-41d4-a716-446655440000',
type: ['VerifiableCredential', 'VIAMandate'],
issuer: 'did:web:humanos.tech',
validFrom: '2025-01-01T00:00:00Z',
validUntil: null,
credentialSubject: {
id: 'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
mandate: {
grantor: 'did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7',
scope: 'humanos.credential.request',
context: {
authorizedDIDs: [
'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
'did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7'
]
}
}
},
evidences: [
{
id: 'urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34',
digestSRI: 'sha256-abc123',
location: 'https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34'
}
]
},
proof: {
type: 'DataIntegrityProof',
cryptosuite: 'eddsa-jcs-2022',
created: '2026-05-02T10:15:30.000Z',
verificationMethod: 'did:web:humanos.tech#key-1',
proofPurpose: 'authentication',
proofValue: 'z2pcVdSdoMTrkYP9rVdz...'
}
},
presentationEncoded: 'eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=',
executionParams: {amount: 100, currency: 'USD'}
})
};
fetch('https://api.example.com/credential/verify', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/credential/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'presentation' => [
'@context' => [
'https://www.w3.org/ns/credentials/v2',
'https://via.humanos.dev/ns/v1'
],
'type' => [
'VerifiablePresentation'
],
'holder' => 'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
'verifiableCredential' => [
'@context' => [
'https://www.w3.org/ns/credentials/v2',
'https://via.humanos.dev/ns/v1'
],
'id' => 'urn:via:credential:550e8400-e29b-41d4-a716-446655440000',
'type' => [
'VerifiableCredential',
'VIAMandate'
],
'issuer' => 'did:web:humanos.tech',
'validFrom' => '2025-01-01T00:00:00Z',
'validUntil' => null,
'credentialSubject' => [
'id' => 'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
'mandate' => [
'grantor' => 'did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7',
'scope' => 'humanos.credential.request',
'context' => [
'authorizedDIDs' => [
'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
'did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7'
]
]
]
],
'evidences' => [
[
'id' => 'urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34',
'digestSRI' => 'sha256-abc123',
'location' => 'https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34'
]
]
],
'proof' => [
'type' => 'DataIntegrityProof',
'cryptosuite' => 'eddsa-jcs-2022',
'created' => '2026-05-02T10:15:30.000Z',
'verificationMethod' => 'did:web:humanos.tech#key-1',
'proofPurpose' => 'authentication',
'proofValue' => 'z2pcVdSdoMTrkYP9rVdz...'
]
],
'presentationEncoded' => 'eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=',
'executionParams' => [
'amount' => 100,
'currency' => 'USD'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/credential/verify"
payload := strings.NewReader("{\n \"presentation\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\"\n ],\n \"holder\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"verifiableCredential\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"id\": \"urn:via:credential:550e8400-e29b-41d4-a716-446655440000\",\n \"type\": [\n \"VerifiableCredential\",\n \"VIAMandate\"\n ],\n \"issuer\": \"did:web:humanos.tech\",\n \"validFrom\": \"2025-01-01T00:00:00Z\",\n \"validUntil\": null,\n \"credentialSubject\": {\n \"id\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"mandate\": {\n \"grantor\": \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n \"scope\": \"humanos.credential.request\",\n \"context\": {\n \"authorizedDIDs\": [\n \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n ]\n }\n }\n },\n \"evidences\": [\n {\n \"id\": \"urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\",\n \"digestSRI\": \"sha256-abc123\",\n \"location\": \"https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\"\n }\n ]\n },\n \"proof\": {\n \"type\": \"DataIntegrityProof\",\n \"cryptosuite\": \"eddsa-jcs-2022\",\n \"created\": \"2026-05-02T10:15:30.000Z\",\n \"verificationMethod\": \"did:web:humanos.tech#key-1\",\n \"proofPurpose\": \"authentication\",\n \"proofValue\": \"z2pcVdSdoMTrkYP9rVdz...\"\n }\n },\n \"presentationEncoded\": \"eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=\",\n \"executionParams\": {\n \"amount\": 100,\n \"currency\": \"USD\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/credential/verify")
.header("Content-Type", "application/json")
.body("{\n \"presentation\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\"\n ],\n \"holder\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"verifiableCredential\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"id\": \"urn:via:credential:550e8400-e29b-41d4-a716-446655440000\",\n \"type\": [\n \"VerifiableCredential\",\n \"VIAMandate\"\n ],\n \"issuer\": \"did:web:humanos.tech\",\n \"validFrom\": \"2025-01-01T00:00:00Z\",\n \"validUntil\": null,\n \"credentialSubject\": {\n \"id\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"mandate\": {\n \"grantor\": \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n \"scope\": \"humanos.credential.request\",\n \"context\": {\n \"authorizedDIDs\": [\n \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n ]\n }\n }\n },\n \"evidences\": [\n {\n \"id\": \"urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\",\n \"digestSRI\": \"sha256-abc123\",\n \"location\": \"https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\"\n }\n ]\n },\n \"proof\": {\n \"type\": \"DataIntegrityProof\",\n \"cryptosuite\": \"eddsa-jcs-2022\",\n \"created\": \"2026-05-02T10:15:30.000Z\",\n \"verificationMethod\": \"did:web:humanos.tech#key-1\",\n \"proofPurpose\": \"authentication\",\n \"proofValue\": \"z2pcVdSdoMTrkYP9rVdz...\"\n }\n },\n \"presentationEncoded\": \"eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=\",\n \"executionParams\": {\n \"amount\": 100,\n \"currency\": \"USD\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/credential/verify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"presentation\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\"\n ],\n \"holder\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"verifiableCredential\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"id\": \"urn:via:credential:550e8400-e29b-41d4-a716-446655440000\",\n \"type\": [\n \"VerifiableCredential\",\n \"VIAMandate\"\n ],\n \"issuer\": \"did:web:humanos.tech\",\n \"validFrom\": \"2025-01-01T00:00:00Z\",\n \"validUntil\": null,\n \"credentialSubject\": {\n \"id\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"mandate\": {\n \"grantor\": \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n \"scope\": \"humanos.credential.request\",\n \"context\": {\n \"authorizedDIDs\": [\n \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n ]\n }\n }\n },\n \"evidences\": [\n {\n \"id\": \"urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\",\n \"digestSRI\": \"sha256-abc123\",\n \"location\": \"https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\"\n }\n ]\n },\n \"proof\": {\n \"type\": \"DataIntegrityProof\",\n \"cryptosuite\": \"eddsa-jcs-2022\",\n \"created\": \"2026-05-02T10:15:30.000Z\",\n \"verificationMethod\": \"did:web:humanos.tech#key-1\",\n \"proofPurpose\": \"authentication\",\n \"proofValue\": \"z2pcVdSdoMTrkYP9rVdz...\"\n }\n },\n \"presentationEncoded\": \"eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=\",\n \"executionParams\": {\n \"amount\": 100,\n \"currency\": \"USD\"\n }\n}"
response = http.request(request)
puts response.read_body{
"decision": "allow",
"credentialId": "urn:via:credential:550e8400-e29b-41d4-a716-446655440000",
"evaluations": [
{
"rule": "amount-cap",
"result": "pass",
"reason": "Expression evaluated to false"
}
],
"receipt": {
"id": "urn:via:receipt:c4bb2c9d-9b37-448b-8f1a-4ac5793945be",
"timestamp": "2026-05-02T10:15:30.000Z"
}
}{
"statusCode": 400,
"message": "Presentation missing: provide `presentation` or `presentationEncoded`",
"error": "Bad Request"
}{
"statusCode": 403,
"message": "Verification denied: vp_signature_invalid",
"decision": "deny",
"reason": "vp_signature_invalid",
"credentialId": "urn:via:credential:550e8400-e29b-41d4-a716-446655440000",
"evaluations": [
{
"rule": "amount-cap",
"result": "pass",
"reason": "Expression evaluated to false"
}
],
"receipt": {
"id": "urn:via:receipt:c4bb2c9d-9b37-448b-8f1a-4ac5793945be",
"timestamp": "2026-05-02T10:15:30.000Z"
}
}{
"statusCode": 404,
"message": "Credential not found",
"error": "Not Found"
}Verify VP
Evaluate a VP against runtime context. On allow, returns 201 with the signed receipt. On deny, returns 403 with the reason, evaluations, and receipt in the error body. If the mandate has no constraint schema, only signatures, verifier access, and validity are checked.
Supply the presentation exactly as returned by POST /credential/vp/:vcId — do not re-serialize or modify it. Pass it as either presentation (the signed VP object) or presentationEncoded (its base64 string); at least one is required — sending neither, a presentationEncoded that is not valid base64-encoded JSON, or a presentation that fails shape validation each return 400 — and if both are sent presentationEncoded wins. presentationEncoded is the recommended field: being an opaque string it is immune to JSON re-serialization / formatting changes (e.g. some HTTP clients reformatting date strings) that would otherwise break the signature.
Supply runtime action arguments in executionParams (an object; defaults to {}). They are validated against the action’s declared executionParams shape and exposed to CEL rules as executionParams.<field>; a mismatch denies with reason execution_params_invalid.
curl --request POST \
--url https://api.example.com/credential/verify \
--header 'Content-Type: application/json' \
--data '
{
"presentation": {
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://via.humanos.dev/ns/v1"
],
"type": [
"VerifiablePresentation"
],
"holder": "did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"verifiableCredential": {
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://via.humanos.dev/ns/v1"
],
"id": "urn:via:credential:550e8400-e29b-41d4-a716-446655440000",
"type": [
"VerifiableCredential",
"VIAMandate"
],
"issuer": "did:web:humanos.tech",
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": null,
"credentialSubject": {
"id": "did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"mandate": {
"grantor": "did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7",
"scope": "humanos.credential.request",
"context": {
"authorizedDIDs": [
"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7"
]
}
}
},
"evidences": [
{
"id": "urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34",
"digestSRI": "sha256-abc123",
"location": "https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34"
}
]
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"created": "2026-05-02T10:15:30.000Z",
"verificationMethod": "did:web:humanos.tech#key-1",
"proofPurpose": "authentication",
"proofValue": "z2pcVdSdoMTrkYP9rVdz..."
}
},
"presentationEncoded": "eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=",
"executionParams": {
"amount": 100,
"currency": "USD"
}
}
'import requests
url = "https://api.example.com/credential/verify"
payload = {
"presentation": {
"@context": ["https://www.w3.org/ns/credentials/v2", "https://via.humanos.dev/ns/v1"],
"type": ["VerifiablePresentation"],
"holder": "did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"verifiableCredential": {
"@context": ["https://www.w3.org/ns/credentials/v2", "https://via.humanos.dev/ns/v1"],
"id": "urn:via:credential:550e8400-e29b-41d4-a716-446655440000",
"type": ["VerifiableCredential", "VIAMandate"],
"issuer": "did:web:humanos.tech",
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": None,
"credentialSubject": {
"id": "did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"mandate": {
"grantor": "did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7",
"scope": "humanos.credential.request",
"context": { "authorizedDIDs": ["did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000", "did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7"] }
}
},
"evidences": [
{
"id": "urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34",
"digestSRI": "sha256-abc123",
"location": "https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34"
}
]
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"created": "2026-05-02T10:15:30.000Z",
"verificationMethod": "did:web:humanos.tech#key-1",
"proofPurpose": "authentication",
"proofValue": "z2pcVdSdoMTrkYP9rVdz..."
}
},
"presentationEncoded": "eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=",
"executionParams": {
"amount": 100,
"currency": "USD"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
presentation: {
'@context': ['https://www.w3.org/ns/credentials/v2', 'https://via.humanos.dev/ns/v1'],
type: ['VerifiablePresentation'],
holder: 'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
verifiableCredential: {
'@context': ['https://www.w3.org/ns/credentials/v2', 'https://via.humanos.dev/ns/v1'],
id: 'urn:via:credential:550e8400-e29b-41d4-a716-446655440000',
type: ['VerifiableCredential', 'VIAMandate'],
issuer: 'did:web:humanos.tech',
validFrom: '2025-01-01T00:00:00Z',
validUntil: null,
credentialSubject: {
id: 'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
mandate: {
grantor: 'did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7',
scope: 'humanos.credential.request',
context: {
authorizedDIDs: [
'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
'did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7'
]
}
}
},
evidences: [
{
id: 'urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34',
digestSRI: 'sha256-abc123',
location: 'https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34'
}
]
},
proof: {
type: 'DataIntegrityProof',
cryptosuite: 'eddsa-jcs-2022',
created: '2026-05-02T10:15:30.000Z',
verificationMethod: 'did:web:humanos.tech#key-1',
proofPurpose: 'authentication',
proofValue: 'z2pcVdSdoMTrkYP9rVdz...'
}
},
presentationEncoded: 'eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=',
executionParams: {amount: 100, currency: 'USD'}
})
};
fetch('https://api.example.com/credential/verify', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/credential/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'presentation' => [
'@context' => [
'https://www.w3.org/ns/credentials/v2',
'https://via.humanos.dev/ns/v1'
],
'type' => [
'VerifiablePresentation'
],
'holder' => 'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
'verifiableCredential' => [
'@context' => [
'https://www.w3.org/ns/credentials/v2',
'https://via.humanos.dev/ns/v1'
],
'id' => 'urn:via:credential:550e8400-e29b-41d4-a716-446655440000',
'type' => [
'VerifiableCredential',
'VIAMandate'
],
'issuer' => 'did:web:humanos.tech',
'validFrom' => '2025-01-01T00:00:00Z',
'validUntil' => null,
'credentialSubject' => [
'id' => 'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
'mandate' => [
'grantor' => 'did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7',
'scope' => 'humanos.credential.request',
'context' => [
'authorizedDIDs' => [
'did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000',
'did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7'
]
]
]
],
'evidences' => [
[
'id' => 'urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34',
'digestSRI' => 'sha256-abc123',
'location' => 'https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34'
]
]
],
'proof' => [
'type' => 'DataIntegrityProof',
'cryptosuite' => 'eddsa-jcs-2022',
'created' => '2026-05-02T10:15:30.000Z',
'verificationMethod' => 'did:web:humanos.tech#key-1',
'proofPurpose' => 'authentication',
'proofValue' => 'z2pcVdSdoMTrkYP9rVdz...'
]
],
'presentationEncoded' => 'eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=',
'executionParams' => [
'amount' => 100,
'currency' => 'USD'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/credential/verify"
payload := strings.NewReader("{\n \"presentation\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\"\n ],\n \"holder\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"verifiableCredential\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"id\": \"urn:via:credential:550e8400-e29b-41d4-a716-446655440000\",\n \"type\": [\n \"VerifiableCredential\",\n \"VIAMandate\"\n ],\n \"issuer\": \"did:web:humanos.tech\",\n \"validFrom\": \"2025-01-01T00:00:00Z\",\n \"validUntil\": null,\n \"credentialSubject\": {\n \"id\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"mandate\": {\n \"grantor\": \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n \"scope\": \"humanos.credential.request\",\n \"context\": {\n \"authorizedDIDs\": [\n \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n ]\n }\n }\n },\n \"evidences\": [\n {\n \"id\": \"urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\",\n \"digestSRI\": \"sha256-abc123\",\n \"location\": \"https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\"\n }\n ]\n },\n \"proof\": {\n \"type\": \"DataIntegrityProof\",\n \"cryptosuite\": \"eddsa-jcs-2022\",\n \"created\": \"2026-05-02T10:15:30.000Z\",\n \"verificationMethod\": \"did:web:humanos.tech#key-1\",\n \"proofPurpose\": \"authentication\",\n \"proofValue\": \"z2pcVdSdoMTrkYP9rVdz...\"\n }\n },\n \"presentationEncoded\": \"eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=\",\n \"executionParams\": {\n \"amount\": 100,\n \"currency\": \"USD\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/credential/verify")
.header("Content-Type", "application/json")
.body("{\n \"presentation\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\"\n ],\n \"holder\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"verifiableCredential\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"id\": \"urn:via:credential:550e8400-e29b-41d4-a716-446655440000\",\n \"type\": [\n \"VerifiableCredential\",\n \"VIAMandate\"\n ],\n \"issuer\": \"did:web:humanos.tech\",\n \"validFrom\": \"2025-01-01T00:00:00Z\",\n \"validUntil\": null,\n \"credentialSubject\": {\n \"id\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"mandate\": {\n \"grantor\": \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n \"scope\": \"humanos.credential.request\",\n \"context\": {\n \"authorizedDIDs\": [\n \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n ]\n }\n }\n },\n \"evidences\": [\n {\n \"id\": \"urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\",\n \"digestSRI\": \"sha256-abc123\",\n \"location\": \"https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\"\n }\n ]\n },\n \"proof\": {\n \"type\": \"DataIntegrityProof\",\n \"cryptosuite\": \"eddsa-jcs-2022\",\n \"created\": \"2026-05-02T10:15:30.000Z\",\n \"verificationMethod\": \"did:web:humanos.tech#key-1\",\n \"proofPurpose\": \"authentication\",\n \"proofValue\": \"z2pcVdSdoMTrkYP9rVdz...\"\n }\n },\n \"presentationEncoded\": \"eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=\",\n \"executionParams\": {\n \"amount\": 100,\n \"currency\": \"USD\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/credential/verify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"presentation\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\"\n ],\n \"holder\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"verifiableCredential\": {\n \"@context\": [\n \"https://www.w3.org/ns/credentials/v2\",\n \"https://via.humanos.dev/ns/v1\"\n ],\n \"id\": \"urn:via:credential:550e8400-e29b-41d4-a716-446655440000\",\n \"type\": [\n \"VerifiableCredential\",\n \"VIAMandate\"\n ],\n \"issuer\": \"did:web:humanos.tech\",\n \"validFrom\": \"2025-01-01T00:00:00Z\",\n \"validUntil\": null,\n \"credentialSubject\": {\n \"id\": \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"mandate\": {\n \"grantor\": \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n \"scope\": \"humanos.credential.request\",\n \"context\": {\n \"authorizedDIDs\": [\n \"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000\",\n \"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n ]\n }\n }\n },\n \"evidences\": [\n {\n \"id\": \"urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\",\n \"digestSRI\": \"sha256-abc123\",\n \"location\": \"https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34\"\n }\n ]\n },\n \"proof\": {\n \"type\": \"DataIntegrityProof\",\n \"cryptosuite\": \"eddsa-jcs-2022\",\n \"created\": \"2026-05-02T10:15:30.000Z\",\n \"verificationMethod\": \"did:web:humanos.tech#key-1\",\n \"proofPurpose\": \"authentication\",\n \"proofValue\": \"z2pcVdSdoMTrkYP9rVdz...\"\n }\n },\n \"presentationEncoded\": \"eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0=\",\n \"executionParams\": {\n \"amount\": 100,\n \"currency\": \"USD\"\n }\n}"
response = http.request(request)
puts response.read_body{
"decision": "allow",
"credentialId": "urn:via:credential:550e8400-e29b-41d4-a716-446655440000",
"evaluations": [
{
"rule": "amount-cap",
"result": "pass",
"reason": "Expression evaluated to false"
}
],
"receipt": {
"id": "urn:via:receipt:c4bb2c9d-9b37-448b-8f1a-4ac5793945be",
"timestamp": "2026-05-02T10:15:30.000Z"
}
}{
"statusCode": 400,
"message": "Presentation missing: provide `presentation` or `presentationEncoded`",
"error": "Bad Request"
}{
"statusCode": 403,
"message": "Verification denied: vp_signature_invalid",
"decision": "deny",
"reason": "vp_signature_invalid",
"credentialId": "urn:via:credential:550e8400-e29b-41d4-a716-446655440000",
"evaluations": [
{
"rule": "amount-cap",
"result": "pass",
"reason": "Expression evaluated to false"
}
],
"receipt": {
"id": "urn:via:receipt:c4bb2c9d-9b37-448b-8f1a-4ac5793945be",
"timestamp": "2026-05-02T10:15:30.000Z"
}
}{
"statusCode": 404,
"message": "Credential not found",
"error": "Not Found"
}Headers
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.
^\d{4}-\d{2}-\d{2}$"2026-07-06"
Body
Signed W3C Verifiable Presentation (@context, type, holder, verifiableCredential, proof), exactly as returned by POST /credential/vp/:vcId — do not re-serialize or modify it.
Provide this or presentationEncoded (at least one is required; presentationEncoded overrides and is recommended, since a base64 string avoids JSON formatting changes that can break the signature).
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://via.humanos.dev/ns/v1"
],
"type": ["VerifiablePresentation"],
"holder": "did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"verifiableCredential": {
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://via.humanos.dev/ns/v1"
],
"id": "urn:via:credential:550e8400-e29b-41d4-a716-446655440000",
"type": ["VerifiableCredential", "VIAMandate"],
"issuer": "did:web:humanos.tech",
"validFrom": "2025-01-01T00:00:00Z",
"validUntil": null,
"credentialSubject": {
"id": "did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"mandate": {
"grantor": "did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7",
"scope": "humanos.credential.request",
"context": {
"authorizedDIDs": [
"did:web:humanos.tech:org:550e8400-e29b-41d4-a716-446655440000",
"did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7"
]
}
}
},
"evidences": [
{
"id": "urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34",
"digestSRI": "sha256-abc123",
"location": "https://api.humanos.dev/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34"
}
]
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"created": "2026-05-02T10:15:30.000Z",
"verificationMethod": "did:web:humanos.tech#key-1",
"proofPurpose": "authentication",
"proofValue": "z2pcVdSdoMTrkYP9rVdz..."
}
}
Base64-encoded JSON of the signed Verifiable Presentation above.
Pass it back to POST /credential/verify as presentationEncoded (recommended) to avoid signature failures caused by JSON re-serialization in some HTTP clients.
"eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiXX0="
Params the agent intends to supply when invoking the action. Validated against the action's declared executionParams shape and exposed to CEL rules as executionParams.<field>.
{ "amount": 100, "currency": "USD" }
Response
Verification allowed — decision + receipt.
Verification outcome — always "allow" on this 201 response.
allow "allow"
URN of the verified credential.
"urn:via:credential:550e8400-e29b-41d4-a716-446655440000"
Per-rule evaluation results. Empty when the mandate has no action rules.
Show child attributes
Show child attributes
VERIFICATION_APPROVED receipt issued for this verification.
Show child attributes
Show child attributes