List approvals
Everything pending in the organization, newest first. Name a conversation to get its whole recent history instead, settled rows included.
GET
/tool-approvalsAuthorization
AuthorizationBearer token · headerrequired`MEDIAN_KEY` from Settings under API, or an MCP OAuth access token. A key acts as the organization; a token acts as the person who approved it.
Query parameters
conversationstringA conversation id, for its recent approvals.
Responses
200The approvals.
approvalsApproval[]Show propertiesHide properties
Array of
ApprovalidstringconversationIdstringtoolNamestringtoolDescriptionstringinputstringThe call's arguments, as serialized JSON.
statusstringAllowed:
pendingexecutingsucceededfaileddeniedexpiredinitiatedBystringAllowed:
agentteammaterequestedAtintegerexpiresAtintegerresolvedByNamestring | nullresolvedAtinteger | nullresultstring | nullWhat the endpoint answered, on a call that got that far.
errorstring | null401The bearer token is missing, revoked, or expired.
errorobjectShow propertiesHide properties
codestringmessagestring429Too many requests. Wait the seconds in `Retry-After`. Limits depend on the plan. See [rate limits](/api/errors-and-limits#rate-limits).
errorobjectShow propertiesHide properties
codestringmessagestringRequest
curl -X GET "https://api.median.sh/v1/tool-approvals" \
-H "Authorization: Bearer YOUR_TOKEN"const response = await fetch("https://api.median.sh/v1/tool-approvals", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_TOKEN"
}
});Response
{
"approvals": [
{
"id": "string",
"conversationId": "string",
"toolName": "string",
"toolDescription": "string",
"input": "string",
"status": "pending",
"initiatedBy": "agent",
"requestedAt": 0,
"expiresAt": 0,
"resolvedByName": "string",
"resolvedAt": 0,
"result": "string",
"error": "string"
}
]
}{
"error": {
"code": "string",
"message": "string"
}
}{
"error": {
"code": "string",
"message": "string"
}
}