POST /v1/agent-cards/requests/{id}/approve
Approve a pending request, making the card usable by the agent that asked. Signed-in users only. Returns the resulting grant, never card details.

Path Parameters

id string required path
Request ID

Responses

200 OK
application/json
code integer
data object
approvedAt string
cardId string
connectorId string
createdAt string
expiresAt string
grantedBy string
id string
maxUses integer
note string
organizationId string
purpose string
requestedBy string
retiredAt string
RetiredAt exists for the unique index, not for the domain. idx_agent_card_grants_live keeps one live grant per card, but a partial index predicate cannot reference now(), so expiry is stamped here instead and the index excludes it. Only ever set on a row that is already past ExpiresAt, and never by a human — a human withdrawing permission sets RevokedAt, which redeem and the UI both read and this column deliberately is not.
revokedAt string
updatedAt string
uses integer
message string
requestId string
403 Forbidden
curl -X POST 'https://api.example.com/v1/agent-cards/requests/string/approve' \  -H 'Authorization: Bearer YOUR_API_TOKEN'
const response = await fetch('https://api.example.com/v1/agent-cards/requests/string/approve', {  method: 'POST',  headers: {      "Authorization": "Bearer YOUR_API_TOKEN"  }});const data = await response.json();console.log(data);
import requestsheaders = {    'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.post('https://api.example.com/v1/agent-cards/requests/string/approve', headers=headers)print(response.json())
package mainimport (	"fmt"	"io"	"net/http")func main() {	req, _ := http.NewRequest("POST", "https://api.example.com/v1/agent-cards/requests/string/approve", nil)	req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")	resp, _ := http.DefaultClient.Do(req)	defer resp.Body.Close()	result, _ := io.ReadAll(resp.Body)	fmt.Println(string(result))}
200 Response
{  "code": 200,  "data": {    "approvedAt": "<string>",    "cardId": "<string>",    "connectorId": "<string>",    "createdAt": "<string>",    "expiresAt": "<string>",    "grantedBy": "<string>",    "id": "<string>",    "maxUses": 123,    "note": "<string>",    "organizationId": "<string>",    "purpose": "<string>",    "requestedBy": "<string>",    "retiredAt": "<string>",    "revokedAt": "<string>",    "updatedAt": "<string>",    "uses": 123  },  "message": "success",  "requestId": "abc-123"}