curl --request GET \
--url https://api.example.com/request/{requestId}import requests
url = "https://api.example.com/request/{requestId}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/request/{requestId}', 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/request/{requestId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/request/{requestId}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/request/{requestId}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/request/{requestId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"id": "507f1f77bcf86cd799439011",
"securityLevel": "CONTACT",
"createdAt": "2025-01-15T10:30:00Z",
"subjects": [
{
"contacts": [
{
"id": "did:web:humanos.tech:user:73ebefdd-a549-4873-aad9-def80c40c8c8",
"contact": "user@example.com"
}
],
"identityStatus": "HUMANOS",
"organization": {
"contacts": [
"user@example.com",
"+351912345678"
]
},
"createdAt": "2025-01-15T09:30:00.000Z",
"contact": "user@example.com",
"internalId": "internal-12345",
"id": "did:web:humanos.tech:user:73ebefdd-a549-4873-aad9-def80c40c8c8",
"kyc": "PENDING",
"secondaryContact": "+351912345678"
}
],
"credentials": [
{
"id": "urn:via:credential:550e8400-e29b-41d4-a716-446655440000",
"resourceType": "DOCUMENT",
"status": "DRAFT",
"executionsRemaining": 1,
"w3cCredential": {
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://via.humanos.tech/ns/v1"
],
"specVersion": "0.2",
"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"
]
}
}
},
"evidence": [
{
"id": "urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34",
"type": [
"VIAEvidence"
],
"mediaType": "application/pdf",
"digestSRI": "sha256-abc123",
"location": "https://api.humanos.tech/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34"
}
],
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"verificationMethod": "did:web:humanos.tech#key-1",
"created": "2026-05-02T10:15:30.000Z",
"proofPurpose": "assertionMethod",
"proofValue": "z2pcVdSdoMTrkTRrXdz...",
"event": "STAMP"
}
},
"decisions": [
{
"id": "did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7",
"contact": "grantor@example.com",
"accepted": true,
"decidedAt": "2025-06-01T12:00:00.000Z"
}
],
"inactiveAt": "2026-05-02T10:15:30.000Z",
"name": "Credential Name",
"description": "Document to be requested on onboarding",
"internalId": "internal-12345",
"tags": [
"onboarding",
"kyc"
]
}
],
"name": "Employee Onboarding Request",
"language": "ENG",
"redirectUrl": "https://example.com/callback",
"internalId": "order-123",
"canceledAt": "2025-01-16T08:00:00Z"
}{
"statusCode": 400,
"message": "requestId is not a valid MongoDB id",
"error": "Bad Request"
}{
"statusCode": 404,
"message": "Request not found",
"error": "Not Found"
}Get Detail
Retrieve detailed information about a specific credential request
Just like the list requests endpoint, this endpoint includes information about the request, credentials, subjects (users) and chosen security level
However, this endpoint includes the full W3C Verifiable Credential data for each credential, and the latest status of all grantor decisions
curl --request GET \
--url https://api.example.com/request/{requestId}import requests
url = "https://api.example.com/request/{requestId}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/request/{requestId}', 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/request/{requestId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/request/{requestId}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/request/{requestId}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/request/{requestId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"id": "507f1f77bcf86cd799439011",
"securityLevel": "CONTACT",
"createdAt": "2025-01-15T10:30:00Z",
"subjects": [
{
"contacts": [
{
"id": "did:web:humanos.tech:user:73ebefdd-a549-4873-aad9-def80c40c8c8",
"contact": "user@example.com"
}
],
"identityStatus": "HUMANOS",
"organization": {
"contacts": [
"user@example.com",
"+351912345678"
]
},
"createdAt": "2025-01-15T09:30:00.000Z",
"contact": "user@example.com",
"internalId": "internal-12345",
"id": "did:web:humanos.tech:user:73ebefdd-a549-4873-aad9-def80c40c8c8",
"kyc": "PENDING",
"secondaryContact": "+351912345678"
}
],
"credentials": [
{
"id": "urn:via:credential:550e8400-e29b-41d4-a716-446655440000",
"resourceType": "DOCUMENT",
"status": "DRAFT",
"executionsRemaining": 1,
"w3cCredential": {
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://via.humanos.tech/ns/v1"
],
"specVersion": "0.2",
"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"
]
}
}
},
"evidence": [
{
"id": "urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34",
"type": [
"VIAEvidence"
],
"mediaType": "application/pdf",
"digestSRI": "sha256-abc123",
"location": "https://api.humanos.tech/credential/evidence/urn:via:evidence:9b2e4f1a-3c7d-4e8a-bf12-2a6c5d8e0f34"
}
],
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"verificationMethod": "did:web:humanos.tech#key-1",
"created": "2026-05-02T10:15:30.000Z",
"proofPurpose": "assertionMethod",
"proofValue": "z2pcVdSdoMTrkTRrXdz...",
"event": "STAMP"
}
},
"decisions": [
{
"id": "did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7",
"contact": "grantor@example.com",
"accepted": true,
"decidedAt": "2025-06-01T12:00:00.000Z"
}
],
"inactiveAt": "2026-05-02T10:15:30.000Z",
"name": "Credential Name",
"description": "Document to be requested on onboarding",
"internalId": "internal-12345",
"tags": [
"onboarding",
"kyc"
]
}
],
"name": "Employee Onboarding Request",
"language": "ENG",
"redirectUrl": "https://example.com/callback",
"internalId": "order-123",
"canceledAt": "2025-01-16T08:00:00Z"
}{
"statusCode": 400,
"message": "requestId is not a valid MongoDB id",
"error": "Bad Request"
}{
"statusCode": 404,
"message": "Request 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-09-01"
Path Parameters
Unique identifier of the credential request. Must be a valid MongoDB ObjectId.
"507f1f77bcf86cd799439011"
Response
Returns complete information including W3C Verifiable Credentials, subjects, and issuer details.
Unique identifier for the request
"507f1f77bcf86cd799439011"
Identity level required for all subjects in this request
CONTACT, ORGANIZATION_KYC, HUMANOS_KYC, HUMANOS_REVALIDATION "CONTACT"
Date and time of the request creation
"2025-01-15T10:30:00Z"
List of subjects with organization data
Show child attributes
Show child attributes
List of credentials created in this request
Show child attributes
Show child attributes
Name of the credential request
"Employee Onboarding Request"
Language used in the OTP and displayed in the subject link. One of ENG, PRT, SPA, or FRA.
"ENG"
URL to redirect the subject after completing the request
"https://example.com/callback"
Internal identifier for the request
"order-123"
Date and time the request was canceled, null if active
"2025-01-16T08:00:00Z"