Approve an open request — unlocks its level-1 grant for ttl. First write wins.
POST
/v1/requests/{id}/approveAuthorization
AuthorizationBearer token (JWT) · headerrequiredHydra JWT. Identity is the bound agent or a Keto member human. The host is not identity.
Path parameters
idstringrequiredRequest body
application/jsonttlstringGo duration for the grant approval lifetime (default 15m).
Responses
200The approved request
idstringrequiredagent_idstringrequireditem_idstringrequiredgrant_idstringrequiredactionstringrequiredstatusstringrequiredAllowed:
openapproveddeniedexpiredcancelledcreated_atstring<date-time>requiredexpires_atstring<date-time>requiredresolved_atstring<date-time>resolved_bystringThe Kratos identity of the owner who answered — first write wins.
approval_idstringThe grant approval created by an approve resolution.
401missing or invalid Bearer
403not owner
404no such request in this org
409already resolved or expired
Request
curl -X POST "https://veil.nyc/v1/requests/string/approve" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ttl": "string"
}'const response = await fetch("https://veil.nyc/v1/requests/string/approve", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"ttl": "string"
})
});import requests
response = requests.post(
"https://veil.nyc/v1/requests/string/approve",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
json={
"ttl": "string"
},
)Response
{
"id": "string",
"agent_id": "string",
"item_id": "string",
"grant_id": "string",
"action": "string",
"status": "open",
"created_at": "2024-01-01T00:00:00Z",
"expires_at": "2024-01-01T00:00:00Z",
"resolved_at": "2024-01-01T00:00:00Z",
"resolved_by": "string",
"approval_id": "string"
}missing or invalid Bearer
not owner
no such request in this org
already resolved or expired