curl --request POST \
--url https://api.humanos.tech/agents/resume/{did}import requests
url = "https://api.humanos.tech/agents/resume/{did}"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.humanos.tech/agents/resume/{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/resume/{did}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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/resume/{did}"
req, _ := http.NewRequest("POST", url, nil)
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.humanos.tech/agents/resume/{did}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.humanos.tech/agents/resume/{did}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"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",
"rotatedTo": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35#key-2",
"assurance": "pop",
"binding": "self",
"verifiedAt": "2026-09-02T10:15:00.000Z",
"root": "aws-nitro",
"attestation": {
"event": "sha256-…",
"kind": "device-self"
},
"runtime": {
"class": "tee",
"at": "2026-09-02T10:15:00.000Z",
"mechanism": "nitro",
"rootFingerprint": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"measurementId": "payments-agent:1.4.2",
"event": "sha256-ABNj6qHZ7vDpIk79rfjWOpMJtP6XBEkqRYgY2QH5ju8="
}
}
],
"assurance": "hardware",
"binding": "attested",
"bootstrapAnchor": "api_key",
"verifiedAt": "2026-09-02T10:15:00.000Z",
"existedSince": "2026-09-02T10:15:00.000Z",
"root": "aws-nitro",
"runtime": {
"class": "tee",
"at": "2026-09-02T10:15:00.000Z",
"mechanism": "nitro",
"rootFingerprint": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"measurementId": "payments-agent:1.4.2",
"event": "sha256-ABNj6qHZ7vDpIk79rfjWOpMJtP6XBEkqRYgY2QH5ju8="
},
"operator": {
"org": "did:web:humanos.tech:org:04ad6920-e048-4dd8-9379-21c1f344df6d",
"relation": "operates",
"affiliationEvent": "sha256-ABNj6qHZ7vDpIk79rfjWOpMJtP6XBEkqRYgY2QH5ju8="
}
}{
"statusCode": 400,
"message": "fold_failed:illegal_transition: ACTOR_RESUMED cannot be recorded for did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35 (§5.2)",
"error": "Bad Request"
}{
"statusCode": 404,
"message": "actor not found",
"error": "Not Found"
}Resume Agent
Lift a suspension: the agent is active again, with its keys, mandates and chain as they were.
curl --request POST \
--url https://api.humanos.tech/agents/resume/{did}import requests
url = "https://api.humanos.tech/agents/resume/{did}"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.humanos.tech/agents/resume/{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/resume/{did}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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/resume/{did}"
req, _ := http.NewRequest("POST", url, nil)
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.humanos.tech/agents/resume/{did}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.humanos.tech/agents/resume/{did}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"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",
"rotatedTo": "did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35#key-2",
"assurance": "pop",
"binding": "self",
"verifiedAt": "2026-09-02T10:15:00.000Z",
"root": "aws-nitro",
"attestation": {
"event": "sha256-…",
"kind": "device-self"
},
"runtime": {
"class": "tee",
"at": "2026-09-02T10:15:00.000Z",
"mechanism": "nitro",
"rootFingerprint": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"measurementId": "payments-agent:1.4.2",
"event": "sha256-ABNj6qHZ7vDpIk79rfjWOpMJtP6XBEkqRYgY2QH5ju8="
}
}
],
"assurance": "hardware",
"binding": "attested",
"bootstrapAnchor": "api_key",
"verifiedAt": "2026-09-02T10:15:00.000Z",
"existedSince": "2026-09-02T10:15:00.000Z",
"root": "aws-nitro",
"runtime": {
"class": "tee",
"at": "2026-09-02T10:15:00.000Z",
"mechanism": "nitro",
"rootFingerprint": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"measurementId": "payments-agent:1.4.2",
"event": "sha256-ABNj6qHZ7vDpIk79rfjWOpMJtP6XBEkqRYgY2QH5ju8="
},
"operator": {
"org": "did:web:humanos.tech:org:04ad6920-e048-4dd8-9379-21c1f344df6d",
"relation": "operates",
"affiliationEvent": "sha256-ABNj6qHZ7vDpIk79rfjWOpMJtP6XBEkqRYgY2QH5ju8="
}
}{
"statusCode": 400,
"message": "fold_failed:illegal_transition: ACTOR_RESUMED cannot be recorded for did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35 (§5.2)",
"error": "Bad Request"
}{
"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
The agent's DID, URL-encoded.
"did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35"
Response
Returns the agent, now active.
The agent's DID.
"did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35"
The kind of actor; always agent on these routes.
agent, organization, user "agent"
active | suspended | retired (v0.3 §4).
active, suspended, retired The agent's keys, rotated and revoked ones included.
Show child attributes
Show child attributes
The agent's summary rung: the floor across its usable keys. Authorization reads each key's own.
pop, device, hardware "hardware"
The binding of the agent's summary rung.
self, custodial, attested "attested"
What vouched for the agent when it was registered: an API key for every agent registered here.
api_key, manual "api_key"
When the assurance was last VERIFIED. A mandate bounds its own freshness against this (agent.verifiedAt >= now - duration("720h")); renewing an attestation moves it forward.
"2026-09-02T10:15:00.000Z"
When the agent came to exist on the platform (v0.3 §3.1). It never moves, unlike verifiedAt.
"2026-09-02T10:15:00.000Z"
Trust root the attestation chained to.
"aws-nitro"
The runtime every usable key shares, dated by the oldest attestation among them; for reporting, never authorization. Absent when the keys do not share one.
Show child attributes
Show child attributes
Pointer to the org-signed AFFILIATION event — presence and DID, never an inline claim — with the relation it asserts and, when it states one, when it lapses (validUntil). Nothing is recorded when an affiliation lapses: once validUntil has passed, or when the relation is not operates, a mandate whose rules read the operator's accreditation denies with affiliation_invalid.
{
"org": "did:web:humanos.tech:org:04ad6920-e048-4dd8-9379-21c1f344df6d",
"relation": "operates",
"affiliationEvent": "sha256-ABNj6qHZ7vDpIk79rfjWOpMJtP6XBEkqRYgY2QH5ju8="
}