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'
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());
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)
OAuth と MCP プロトコル
MCP OAuth 接続を失効
接続のアクセストークンまたはリフレッシュトークンのいずれかと、登録済み client_id を使用して接続を失効させます。
POST
/
oauth
/
revoke
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'
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());
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)
接続のアクセストークンまたはリフレッシュトークンのいずれかと、登録済み client_id を使用して接続を失効させます。
POST https://api.voicecheap.ai/oauth/revoke
認証
クライアントシークレットはありません。URL エンコードされたフォーム本文で token と client_id を送信してください。リクエストボディ
string
必須
発行済みの MCP アクセストークンまたはリフレッシュトークン。不明なトークン文字列も受け付け、トークンの存在有無は明らかにしません。最小文字数: 1. 最大文字数: 256. パターン:
^[^\u0000-\u001F\u007F]+$.string
必須
トークンに関連付けられた client_id。スカラーが欠落しているか形式が不正な場合は拒否されます。不明または不一致のクライアントの場合は成功を返します。最小文字数: 1. 最大文字数: 2048. パターン:
^[^\u0000-\u001F\u007F]+$.field
省略可能な標準のヒント。この実装はこのフィールドを無視し、値を検証しません。トークンのプレフィックスでトークンの種類を判定します。
技術スキーマ
技術スキーマ
{
"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
}
リクエスト例
このルートに記載されたエンコード方式と認証方法に従ってください。アクション API のエンベロープと冪等性のルールは、アクションの呼び出しにのみ適用されます。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'
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());
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)
レスポンス
空の JSON オブジェクト。不明なトークン、クライアントの関連付けの不一致、失効済みの接続でも HTTP 200 を返します。HTTP 200
{}
レスポンスヘッダー
{
"Cache-Control": "no-store",
"Pragma": "no-cache"
}
操作の注意事項
- 認識されるスカラーパラメーターは、ASCII 制御文字や DEL を含まない空でない文字列として、1回だけ指定する必要があります。重複するクエリ/フォームフィールドは配列にデコードされ、スカラーとして読み取る際に拒否されます。
- application/x-www-form-urlencoded を使用してください。JSON リクエストは invalid_request で拒否されます。
- 認識済みのアクセストークンまたはリフレッシュトークンを取り消すと、接続全体が取り消され、アクティブなリフレッシュトークンも消去されます。指定したトークン1つだけに限定されません。
- このルートでは resource パラメーターは必須ではなく、検証も行いません。token_type_hint とその他の認識されないフィールドは無視します。
- このエンドポイントは、先にクライアント登録を取得しません。形式が正しい不明な client_id、トークンに対して誤った client_id、または不明なトークンの場合は、トークンの有効性を明かさずに {} を返します。
- 公開失効エンドポイントの上限は、クライアント IP ごとに毎分 60 リクエストで、ワーカー間で共有されます。URL エンコードされた本文の上限は 32 KiB です。
- 動的登録で返された client_id、またはクライアントメタデータドキュメントの正確な公開 HTTPS URL。
エラー
| HTTP ステータス | コード | 意味または対処方法 |
|---|---|---|
| 400 | invalid_request | 本文または認識されたパラメーターが無効、不足、重複、またはエンコード不正です。 |
| 413 | REQUEST_TOO_LARGE | リクエストが許可された本文サイズを超えています。JSONの上限は 1 MiB、URLエンコードされたフォームの上限は 32 KiB です。 |
| 415 | UNSUPPORTED_CONTENT_TYPE | 連携の本文パーサーは JSON または URL エンコードされたフォームのみを受け付けます。ルートによっては、どちらか一方のエンコード方式が必須です。 |
| 429 | temporarily_unavailable | 公開 OAuth リクエストのレート上限に達しました。現在の制限期間が終わってから再試行してください。 |
| 500 | server_error | 認可を一時的に利用できません。後で再試行してください。 |
このページは役に立ちましたか?

