Skip to main content
POST
Add Own Key

Headers

API-Version
string

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.

Pattern: ^\d{4}-\d{2}-\d{2}$
Example:

"2026-10-16"

Path Parameters

did
string
required

The agent's DID, URL-encoded.

Example:

"did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35"

Body

application/json
cnf
object
required

The agent's public key, as a P-256 JWK. Carried BESIDE the evidence, never inside it: evidence proves where a key lives and does not transport it — for an attestation the key is derived from the signed document and cross-checked against this one.

Example:
evidence
object
required

Confinement evidence (v0.3 §16.5). Every key you hold proves it is held: proof is a via-reg+jwt signed by the key over { cnf: { jkt }, aud, nonce, iat } — aud and nonce from POST /agents/register-challenge. device-self (+ proof) grants pop/self; custody (+ proof) pop/custodial; attestation-eat and webauthn chained to a pinned root grant device or hardware and need no proof. Evidence that cannot be checked degrades — an unanchored quote to pop/self, then with proof. Evidence that is wrong is refused with its code; none is refused.

Example:
regNonce
string
required

The single-use nonce from POST /agents/register-challenge.

Example:

"k3Jd0Q7bXm2sVQ8hZ1pYt4Rc"

pop
string
required

A via-pop+jwt signed by an EXISTING usable key of this agent: aud the platform DID, nonce the registration challenge, action_hash = digestSRI(JCS({ mandateId: "self:", action: "key_add", params: { cnf } })) — so the PoP binds THIS new key. A rotation signs action: "key_rotate" and params: { cnf, predecessorId }.

Response

Returns the new key and the rung it earned.

keyId
string
required

The key the change concerns, what a mandate pins (D7).

Example:

"did:web:humanos.tech:agent:2f8b6c41-9d37-4e5a-8b02-6c1d9e7a4f35#key-2"

granted
object
required

The rung the evidence earned after verification.

degradedFrom
enum<string>

Present only when the evidence could not be confirmed and a lower rung was granted: what was claimed.

Available options:
device,
hardware
Example:

"hardware"