---
title: "Revoke an MCP API key."
method: DELETE
path: "/internal/api/mcp/keys/{key_row_id}"
tags: ["MCP CONNECTOR"]
---

# Revoke an MCP API key.

`DELETE /internal/api/mcp/keys/{key_row_id}`

## Request

- Base URL: `https://api.signalshq.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.signalshq.io/internal/api/mcp/keys/{key_row_id}`
- Auth: OAuth 2
  - Password
  - Token URL: `/auth/login`

Withdraw a credential.

The tenant predicate lives on the UPDATE itself, so one firm cannot
revoke another's key by guessing an id — and the response does not
distinguish "not yours" from "already revoked", because a
distinguishable answer makes key ids probeable.

Clears this process's key cache immediately. Other workers age out
within ``ELAN_MCP_API_KEY_CACHE_SECONDS`` (default 30s), which is the
revocation latency the cache TTL is chosen to bound. Returns 200 with
``revoked=false`` rather than 404: revoking is idempotent, and the
caller's intent — "this key must not work" — is satisfied either way.

## Path parameters

- `key_row_id` string, uuid, required

## Response `200`

Successful Response

- RevokeApiKeyResponse
  - `revoked` boolean, required: False when the key was already revoked or does not belong to your organization — revoking is idempotent.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/signalshq/apis/signals-api.md) - [All operations](https://skmtc.dev/signalshq/apis/signals-api/llms.txt) - [OpenAPI document](https://skmtc.dev/signalshq/apis/signals-api/revisions/2c22af3b5576?raw)
