Get Caller API Key by ID (alternate path)
GET /admin/v1/apikeys/{id}
GET /admin/v1/apikeys/{id}Interactive request editor loads with JavaScript.
Authorization
AdminBearer AuthorizationBearer <token>
Admin key from config.admin.admin_keys.
In: header
Path Parameters
id*string
Caller API key resource ID, as assigned by the active resource source (a UUIDv5 derived from the entry name in file mode; the etcd key's ID segment otherwise).
Response Body
application/json
application/json
application/json
application/json
curl -X GET "http://127.0.0.1:3001/admin/v1/apikeys/9f3b2a70-7a3d-4d83-96e1-0c6e5ad4f280"OK
{
"id": "string",
"revision": 0,
"value": {
"allowed_agents": [
"string"
],
"allowed_models": [
"string"
],
"disabled": false,
"expires_at": "2019-08-24T14:15:22Z",
"key_hash": "string",
"mcp_access": {
"allow": [
"string"
],
"deny": [
"string"
]
},
"rate_limit": {
"concurrency": 0,
"rpd": 0,
"rph": 0,
"rpm": 0,
"rps": 0,
"tpd": 0,
"tpm": 0
}
}
}Missing or invalid admin key
{
"error_msg": "string"
}Resource not found
{
"error_msg": "string"
}Configuration store operation failed
{
"error_msg": "string"
}Complete operation details and schema variants
GET /admin/v1/apikeys/{id}
Get Caller API Key by ID (alternate path)
Alternate spelling of /admin/v1/api_keys/{id}. Requests and responses are identical on both paths. Get a caller API key by ID with plaintext credentials redacted.
Parameters
id(path, string, required): Caller API key resource ID, as assigned by the active resource source (a UUIDv5 derived from the entry name in file mode; the etcd key's ID segment otherwise).
Responses
200: OKid(string, required): Resource ID, as assigned by the active resource source.revision(integer, required): Monotonic resource revision: the etcd mod_revision of the entry, or the load generation in file mode.value(object, required): Stored caller API key configuration with plaintext credentials redacted.- allOf variant 1
value.allowed_agents(array,null, optional): A2A agents this key may reach, named by their registered names. Entries are matched as single-*globs:"*"grants every agent and an entry without a*matches one agent exactly. When omitted, set tonull, or set to an empty list, the key has no A2A agent access — access is granted explicitly.value.allowed_models(array, required): Model aliases this caller API key may use.value.disabled(boolean, optional): Administratively disabled. A disabled key is rejected with401until it is enabled again; the key itself is preserved.value.expires_at(string,null, optional): RFC 3339 timestamp after which the key stops authenticating. Requests presenting an expired key are rejected with401. When omitted or set tonull, the key never expires.value.key_hash(string, required): SHA-256 hash of the caller-facing plaintext key.value.mcp_access(object,null, optional): This key's own layer of the MCP tool ACL, as namespaced<server>__<tool>glob patterns. Intersected with the environment and team MCP access policies: every present layer must allow a tool and no layer may deny it. When omitted the key adds no constraint of its own; with no layer present anywhere the grant is empty.value.mcp_access.allow(array, required): Namespaced<server>__<tool>glob patterns this key allows, intersected with the environment and team layers.value.mcp_access.deny(array, optional): Namespaced<server>__<tool>glob patterns subtracted from this key's effective grant. Deny always wins.value.rate_limit(object, optional): Request, token, and concurrency limits for this key.- allOf variant 1
value.rate_limit.concurrency(integer,null, optional): Max concurrent in-flight requests.value.rate_limit.rpd(integer,null, optional): Requests per 86,400-second window.value.rate_limit.rph(integer,null, optional): Requests per 3,600-second window. There is no per-hour token limit field.value.rate_limit.rpm(integer,null, optional): Requests per 60-second window.value.rate_limit.rps(integer,null, optional): Requests per 1-second window. There is no per-second token limit field.value.rate_limit.tpd(integer,null, optional): Tokens per 86,400-second window.value.rate_limit.tpm(integer,null, optional): Tokens per 60-second window.401: Missing or invalid admin keyerror_msg(string, required): Human-readable error message.404: Resource not found Response fields (application/json): identical toGET /admin/v1/apikeys/{id}, response 401 above.500: Configuration store operation failed Response fields (application/json): identical toGET /admin/v1/apikeys/{id}, response 401 above.
cURL
curl -X GET 'http://127.0.0.1:3001/admin/v1/apikeys/{id}'