> ## 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.

# Révoquer une connexion OAuth MCP

> Révoquez une connexion à l’aide de l’un de ses jetons d’accès ou d’actualisation et du client_id enregistré.

Révoquez une connexion à l’aide de l’un de ses jetons d’accès ou d’actualisation et du client\_id enregistré.

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

## Authentification

Aucun secret client. Envoyez token et client\_id dans le corps du formulaire encodé en URL.

## Corps de la requête

<ParamField body="token" type="string" required>
  Jeton d’accès ou d’actualisation MCP émis. Les chaînes de jeton inconnues sont acceptées sans révéler l’existence d’un jeton.

  Longueur minimale: 1. Longueur maximale: 256. Motif: `^[^\u0000-\u001F\u007F]+$`.
</ParamField>

<ParamField body="client_id" type="string" required>
  Le client\_id associé au jeton. Un scalaire absent ou mal formé est rejeté ; un client inconnu ou ne correspondant pas renvoie un succès.

  Longueur minimale: 1. Longueur maximale: 2048. Motif: `^[^\u0000-\u001F\u007F]+$`.
</ParamField>

<ParamField body="token_type_hint" type="field">
  Indication standard facultative. Cette implémentation ignore ce champ et ne valide pas sa valeur ; les préfixes des jetons déterminent leur famille.
</ParamField>

<Accordion title="Schéma technique">
  ```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>

## Exemples de requêtes

Suivez l’encodage et l’authentification documentés pour cette route. L’enveloppe et les règles d’idempotence de l’API d’actions s’appliquent uniquement aux invocations d’actions.

<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>

## Réponse

Objet JSON vide. Les jetons inconnus, les associations incorrectes de clients et les connexions déjà révoquées renvoient également HTTP 200.

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

## En-têtes de réponse

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

## Notes de l’opération

* Les paramètres scalaires reconnus doivent être fournis une seule fois, sous forme de chaînes non vides sans caractères de contrôle ASCII ni DEL. Les champs de requête ou de formulaire répétés sont décodés en tableaux et rejetés lorsqu’ils sont lus comme des scalaires.
* Utilisez application/x-www-form-urlencoded. Les requêtes JSON sont rejetées avec invalid\_request.
* La révocation d’un jeton d’accès ou d’actualisation reconnu révoque la connexion entière et efface son jeton d’actualisation actif ; elle ne se limite pas au seul jeton fourni.
* Le paramètre resource n’est ni obligatoire ni vérifié sur cette route. token\_type\_hint et les autres champs non reconnus sont ignorés.
* Le point de terminaison ne récupère pas d’abord l’enregistrement du client. Un client\_id inconnu mais bien formé, un client\_id incorrect pour le jeton ou un jeton inconnu renvoie \{} sans révéler la validité du jeton.
* La limite publique de révocation est de 60 requêtes par minute par adresse IP cliente, partagée entre les workers. Les corps encodés au format URL sont limités à 32 KiB.
* Le client\_id renvoyé par l’enregistrement dynamique ou l’URL HTTPS publique exacte du document de métadonnées du client.

## Erreurs

| Statut HTTP | Code | Signification ou solution |
| - | - | - |
| 400 | `invalid_request` | Le corps ou un paramètre reconnu est invalide, manquant, en double ou mal encodé. |
| 413 | `REQUEST_TOO_LARGE` | La requête dépasse la taille de corps autorisée. Le JSON est limité à 1 MiB et les formulaires encodés en URL à 32 KiB. |
| 415 | `UNSUPPORTED_CONTENT_TYPE` | L’analyseur de corps de l’intégration accepte uniquement le JSON ou les formulaires encodés en URL. La route peut exiger spécifiquement l’un de ces encodages. |
| 429 | `temporarily_unavailable` | La limite de fréquence des requêtes OAuth publiques a été atteinte. Attendez la fin de la fenêtre en cours avant de réessayer. |
| 500 | `server_error` | L’autorisation est temporairement indisponible. Réessayez plus tard. |


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