Verify a fresh human proof
Verify a signed password proof no older than five minutes against the authenticated session subject. The verified subject must equal subject. The owner is derived from the verified IdP proof; it is not accepted from the body.
HostCapabilityAuthorizationBearer <token>Exact exchange capability from the owner-private auth-service discovery record. This is not an IdP JWT or actor bearer.
application/json- body
idpToken*string1 <= lengthsubject*string1 <= lengthThe host decision completed.
application/json- response
authorized*unknownowner*string^u_[a-z2-7]{26}$sub*stringexp*integerauthTime*integercurl -X POST 'http://127.0.0.1:12345/tool-result-human-proof/verify' \ -H 'Content-Type: application/json' \ -d '{ "idpToken": "string", "subject": "string"}'{ "authorized": true, "owner": "string", "sub": "string", "exp": 0, "authTime": 0}See the HTTP interface overview for authentication and access requirements.
Complete HTTP contract
Endpoint
POST /tool-result-human-proof/verifyVerify a signed password proof no older than five minutes against the authenticated session subject. The verified subject must equal subject. The owner is derived from the verified IdP proof; it is not accepted from the body.
Parameters
No operation parameters.
Request body
The request uses the schema below.
Required: yes.
Content type: application/json.
{
"type": "object",
"properties": {
"idpToken": {
"type": "string",
"minLength": 1
},
"subject": {
"type": "string",
"minLength": 1
}
},
"required": [
"idpToken",
"subject"
],
"additionalProperties": false
}Responses
HTTP 200
The host decision completed.
Content type: application/json.
{
"type": "object",
"properties": {
"authorized": {
"const": true
},
"owner": {
"type": "string",
"pattern": "^u_[a-z2-7]{26}$"
},
"sub": {
"type": "string"
},
"exp": {
"type": "integer"
},
"authTime": {
"type": "integer"
}
},
"required": [
"authorized",
"owner",
"sub",
"exp",
"authTime"
]
}HTTP 400
Malformed JSON or invalid request fields.
Content type: application/json.
{
"$ref": "#/components/schemas/Error"
}HTTP 401
Missing or invalid loopback capability.
Content type: application/json.
{
"$ref": "#/components/schemas/Error"
}HTTP 403
An Origin header or failed authority/proof check is refused.
Content type: application/json.
{
"$ref": "#/components/schemas/Error"
}HTTP 405
Only POST is accepted.
Content type: application/json.
{
"$ref": "#/components/schemas/Error"
}HTTP 413
Request exceeds the 65536-byte body limit.
Content type: application/json.
{
"$ref": "#/components/schemas/Error"
}HTTP 415
Content-Type must be application/json.
Content type: application/json.
{
"$ref": "#/components/schemas/Error"
}HTTP 429
Invalid-capability attempts exceeded the rolling-minute limit.
Content type: application/json.
{
"$ref": "#/components/schemas/Error"
}Authentication and access: Host-only HTTP operations of the stock auth service. These six routes exist only on the loopback listener and return 404 on the public listener. The owner-private auth-service discovery record supplies its port and exchange capability. Every operation requires the exact Authorization bearer capability, application/json and no Origin header. Requests match the exact target, so query strings and trailing slashes return 404. Bodies default to 65536 bytes. More than 30 invalid capability attempts in a rolling minute receive 429.
The loopback listener also serves /health, /jwks, /exchange, /manager-service-authority, /manager-instances, /service-endpoint-authority, /service-endpoint-host and /chat-session/open, /chat-session/bearer, /chat-session/retire. Their public request and response shapes are in the Auth HTTP API. Proof operations additionally require the loopback capability. The loopback /health handler also accepts other methods. Elevated exchange views and operator host operations are loopback-only. Mesh discovery is public-listener-only. This implementation reference does not establish a stable cloud API.
OpenAPI specification contains the referenced response schemas. Complete Markdown reference.