curl --request GET \
--url https://api.humanos.tech/actors/{did}import requests
url = "https://api.humanos.tech/actors/{did}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.humanos.tech/actors/{did}', 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.humanos.tech/actors/{did}",
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.humanos.tech/actors/{did}"
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.humanos.tech/actors/{did}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.humanos.tech/actors/{did}")
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{
"record": {
"id": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35",
"actorType": "agent",
"status": "active",
"keys": [
{
"id": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35#key-1",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-256",
"x": "…",
"y": "…"
},
"status": "active",
"assurance": "pop",
"binding": "self",
"verifiedAt": "2026-10-01T09:12:00.000Z",
"attestation": {
"event": "sha256-…",
"kind": "device-self"
}
}
],
"assurance": "pop",
"binding": "self",
"bootstrapAnchor": "api_key",
"verifiedAt": "2026-10-01T09:12:00.000Z",
"operator": {
"org": "did:web:humanos.tech:org:04ad6920-e048-4dd8-9379-21c1f344df6d",
"relation": "operates",
"affiliationEvent": "sha256-…"
},
"existedSince": "2026-10-01T09:12:00.000Z",
"chain": {
"genesisEvent": "sha256-…",
"headEvent": "sha256-…",
"sequence": 2
}
},
"lastEventAt": "2026-10-01T09:12:00.000Z",
"pending": false,
"retiredActors": [
{
"id": "did:web:humanos.tech:user:3f2a7c10-0b1e-4c5d-9a2f-6e8d1c4b7a90",
"succeededBy": "did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7",
"chain": {
"genesisEvent": "sha256-…",
"headEvent": "sha256-…",
"sequence": 6
},
"lastEventAt": "2026-10-01T09:12:00.000Z"
}
]
}{
"statusCode": 404,
"message": "actor not found",
"error": "Not Found"
}Get Actor
Retrieve an actor by any of its DIDs: an organization, a person or an agent
Its VIAActor record (v0.3 §3.1) is under record, null while its registration is queued
Beside the record: when its last event was signed, whether an event of it is not yet on its chain (pending), and the actors merged into it
curl --request GET \
--url https://api.humanos.tech/actors/{did}import requests
url = "https://api.humanos.tech/actors/{did}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.humanos.tech/actors/{did}', 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.humanos.tech/actors/{did}",
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.humanos.tech/actors/{did}"
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.humanos.tech/actors/{did}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.humanos.tech/actors/{did}")
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{
"record": {
"id": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35",
"actorType": "agent",
"status": "active",
"keys": [
{
"id": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35#key-1",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-256",
"x": "…",
"y": "…"
},
"status": "active",
"assurance": "pop",
"binding": "self",
"verifiedAt": "2026-10-01T09:12:00.000Z",
"attestation": {
"event": "sha256-…",
"kind": "device-self"
}
}
],
"assurance": "pop",
"binding": "self",
"bootstrapAnchor": "api_key",
"verifiedAt": "2026-10-01T09:12:00.000Z",
"operator": {
"org": "did:web:humanos.tech:org:04ad6920-e048-4dd8-9379-21c1f344df6d",
"relation": "operates",
"affiliationEvent": "sha256-…"
},
"existedSince": "2026-10-01T09:12:00.000Z",
"chain": {
"genesisEvent": "sha256-…",
"headEvent": "sha256-…",
"sequence": 2
}
},
"lastEventAt": "2026-10-01T09:12:00.000Z",
"pending": false,
"retiredActors": [
{
"id": "did:web:humanos.tech:user:3f2a7c10-0b1e-4c5d-9a2f-6e8d1c4b7a90",
"succeededBy": "did:web:humanos.tech:user:7c9e6679-7425-40de-944b-e07fc1f90ae7",
"chain": {
"genesisEvent": "sha256-…",
"headEvent": "sha256-…",
"sequence": 6
},
"lastEventAt": "2026-10-01T09:12:00.000Z"
}
]
}{
"statusCode": 404,
"message": "actor 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-10-16"
Path Parameters
Any of the actor's DIDs, URL-encoded: an organization's, a person's or an agent's, or one it absorbed by a merge.
"did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35"
Response
Returns the actor record, its last event date, whether an event is pending, and the actors merged into it.
The VIAActor record (v0.3 §3.1), exactly as the fold of its chain gives it: id, actorType, status (active | suspended | retired), keys, the assurance fields, operator, aliases (each with its reason), accreditation, existedSince, anchoredBy, chain and the rest. Null while its registration is queued.
{ "id": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35", "actorType": "agent", "status": "active", "keys": [ { "id": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35#key-1", "publicKeyJwk": { "kty": "EC", "crv": "P-256", "x": "…", "y": "…" }, "status": "active", "assurance": "pop", "binding": "self", "verifiedAt": "2026-10-01T09:12:00.000Z", "attestation": { "event": "sha256-…", "kind": "device-self" } } ], "assurance": "pop", "binding": "self", "bootstrapAnchor": "api_key", "verifiedAt": "2026-10-01T09:12:00.000Z", "operator": { "org": "did:web:humanos.tech:org:04ad6920-e048-4dd8-9379-21c1f344df6d", "relation": "operates", "affiliationEvent": "sha256-…" }, "existedSince": "2026-10-01T09:12:00.000Z", "chain": { "genesisEvent": "sha256-…", "headEvent": "sha256-…", "sequence": 2 } }
When the chain's last event was signed. Null until the first event is written.
"2026-10-01T09:12:00.000Z"
True while an event of the actor is accepted and not yet on its chain — queued, being written, or failed and waiting on an operator. record already holds it, so it leads record.chain until the event is written (v0.3 §5).
false
The actors merged into this one, merges of merges included, each with where its own chain ends.
Show child attributes
Show child attributes