curl --request GET \
--url https://api.humanos.tech/agents/{did}import requests
url = "https://api.humanos.tech/agents/{did}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.humanos.tech/agents/{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/agents/{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/agents/{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/agents/{did}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.humanos.tech/agents/{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{
"did": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35",
"name": "Payments agent",
"status": "active",
"keys": [
{
"id": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35#key-1",
"status": "active",
"assurance": "pop",
"binding": "custodial",
"verifiedAt": "2026-09-02T10:15:00.000Z",
"rotatedTo": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35#key-2"
}
],
"registeredAt": "2026-09-02T10:15:00.000Z",
"toolCount": 12,
"policyVersion": 3,
"assurance": "pop",
"binding": "custodial"
}{
"statusCode": 404,
"message": "agent not found",
"error": "Not Found"
}Get Agent
One of the organization’s agents: its name, status and rung, its keys, when it registered, how many tools it declared and the policy version in force
curl --request GET \
--url https://api.humanos.tech/agents/{did}import requests
url = "https://api.humanos.tech/agents/{did}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.humanos.tech/agents/{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/agents/{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/agents/{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/agents/{did}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.humanos.tech/agents/{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{
"did": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35",
"name": "Payments agent",
"status": "active",
"keys": [
{
"id": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35#key-1",
"status": "active",
"assurance": "pop",
"binding": "custodial",
"verifiedAt": "2026-09-02T10:15:00.000Z",
"rotatedTo": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35#key-2"
}
],
"registeredAt": "2026-09-02T10:15:00.000Z",
"toolCount": 12,
"policyVersion": 3,
"assurance": "pop",
"binding": "custodial"
}{
"statusCode": 404,
"message": "agent 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-11-02"
Path Parameters
The agent's DID, URL-encoded.
"did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35"
Response
Returns the agent.
The agent's DID.
"did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35"
What the organization calls it: its label, else the app and person acting through it, else a name from its DID.
"Payments agent"
The actor's status (v0.3 §4).
active, suspended, retired "active"
Every key on the actor, rotated and revoked ones included.
Show child attributes
Show child attributes
When the agent was registered.
"2026-09-02T10:15:00.000Z"
How many tools its latest declaration lists.
12
The number of the organization's policy version in force, which decides the agent's calls; null when it has none.
3
The lowest rung across its usable keys (v0.3 §9.1bis); absent when no usable key carries one.
"pop"
Who holds its keys, for that rung: self, custodial (the platform) or attested.
"custodial"