> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.voicecheap.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Revoca una connessione OAuth MCP

> Revoca una connessione usando uno dei suoi token di accesso o di aggiornamento e il client_id registrato.

Revoca una connessione usando uno dei suoi token di accesso o di aggiornamento e il client\_id registrato.

```http theme={null}
POST https://api.voicecheap.ai/oauth/revoke
```

## Autenticazione

Nessun client secret. Invia token e client\_id nel corpo del modulo con codifica URL.

## Corpo della richiesta

<ParamField body="token" type="string" required>
  Un token di accesso o di aggiornamento MCP emesso. Le stringhe di token sconosciute vengono accettate senza rivelare se un token esiste.

  Lunghezza minima: 1. Lunghezza massima: 256. Pattern: `^[^\u0000-\u001F\u007F]+$`.
</ParamField>

<ParamField body="client_id" type="string" required>
  Il client\_id associato al token. Un valore scalare assente o non valido viene rifiutato; un client sconosciuto o non corrispondente restituisce un esito positivo.

  Lunghezza minima: 1. Lunghezza massima: 2048. Pattern: `^[^\u0000-\u001F\u007F]+$`.
</ParamField>

<ParamField body="token_type_hint" type="field">
  Suggerimento standard opzionale. Questa implementazione ignora il campo e non ne convalida il valore; i prefissi dei token determinano la famiglia
  del token.
</ParamField>

<Accordion title="Schema tecnico">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "token": {
        "type": "string",
        "minLength": 1,
        "maxLength": 256,
        "pattern": "^[^\\u0000-\\u001F\\u007F]+$",
        "description": "An issued MCP access or refresh token. Unknown token strings are accepted without revealing whether a token exists."
      },
      "client_id": {
        "type": "string",
        "minLength": 1,
        "maxLength": 2048,
        "pattern": "^[^\\u0000-\\u001F\\u007F]+$",
        "description": "The client_id associated with the token. A missing or malformed scalar is rejected; an unknown or mismatched client returns success."
      },
      "token_type_hint": {
        "description": "Optional standard hint. This implementation ignores this field and does not validate its value; token prefixes determine the token family."
      }
    },
    "required": [
      "token",
      "client_id"
    ],
    "additionalProperties": true
  }
  ```
</Accordion>

## Esempi di richiesta

Segui la codifica e l'autenticazione documentate per questa route. L'involucro e le regole di idempotenza dell'API delle azioni si applicano solo alle invocazioni di azioni.

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST 'https://api.voicecheap.ai/oauth/revoke' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'token=mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE' \
    --data-urlencode 'client_id=mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' \
    --data-urlencode 'token_type_hint=refresh_token'
  ```

  ```javascript JavaScript theme={null}
  const input = {
    token: 'mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE',
    client_id: 'mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
    token_type_hint: 'refresh_token',
  };
  const response = await fetch('https://api.voicecheap.ai/oauth/revoke', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: new URLSearchParams(input),
    redirect: 'manual',
  });
  console.log(response.status, await response.text());
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.request(
      "POST",
      "https://api.voicecheap.ai/oauth/revoke",
      headers={"Content-Type":"application/x-www-form-urlencoded"},
      data={"token": "mcp_refresh_EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", "client_id": "mcp_client_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "token_type_hint": "refresh_token"},
      timeout=120,
      allow_redirects=False,
  )
  print(response.status_code, response.text)
  ```
</RequestExample>

## Risposta

Un oggetto JSON vuoto. Anche i token sconosciuti, le associazioni errate ai client e le connessioni già revocate restituiscono HTTP 200.

```json HTTP 200 theme={null}
{}
```

## Intestazioni della risposta

```json theme={null}
{
  "Cache-Control": "no-store",
  "Pragma": "no-cache"
}
```

## Note sull'operazione

* I parametri scalari riconosciuti devono essere forniti una sola volta come stringhe non vuote, senza caratteri di controllo ASCII o DEL. I campi ripetuti nella query o nel modulo vengono decodificati come array e rifiutati quando vengono letti come scalari.
* Usa application/x-www-form-urlencoded. Le richieste JSON vengono rifiutate con invalid\_request.
* La revoca di un token di accesso riconosciuto o di un refresh token riconosciuto revoca l'intera connessione e cancella il relativo refresh token attivo; non si limita al solo token fornito.
* Il parametro resource non è richiesto né verificato su questa route. token\_type\_hint e gli altri campi non riconosciuti vengono ignorati.
* L'endpoint non recupera prima la registrazione del client. Un client\_id sconosciuto ma formalmente valido, un client\_id errato per il token o un token sconosciuto restituiscono \{} senza rivelare la validità del token.
* Il limite pubblico di revoca è di 60 richieste al minuto per IP del client, condiviso tra i worker. I corpi con codifica URL sono limitati a 32 KiB.
* Il client\_id restituito dalla registrazione dinamica o l’URL HTTPS pubblico esatto del documento di metadati del client.

## Errori

| Stato HTTP | Codice | Significato o risoluzione |
| - | - | - |
| 400 | `invalid_request` | Il corpo o un parametro riconosciuto non è valido, è mancante, è duplicato oppure ha una codifica errata. |
| 413 | `REQUEST_TOO_LARGE` | La richiesta supera la dimensione consentita per il corpo. JSON è limitato a 1 MiB e i moduli con codifica URL a 32 KiB. |
| 415 | `UNSUPPORTED_CONTENT_TYPE` | Il parser del corpo dell'integrazione accetta solo JSON o moduli con codifica URL. La route può richiedere specificamente una di queste codifiche. |
| 429 | `temporarily_unavailable` | È stato raggiunto il limite di frequenza delle richieste OAuth pubbliche. Attendi il termine della finestra corrente prima di riprovare. |
| 500 | `server_error` | L'autorizzazione è temporaneamente non disponibile. Riprova più tardi. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.