curl --request GET 'https://api.voicecheap.ai/.well-known/oauth-authorization-server'
const input = {};
const response = await fetch('https://api.voicecheap.ai/.well-known/oauth-authorization-server', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/.well-known/oauth-authorization-server",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
OAuth et protocole MCP
Obtenir les métadonnées du serveur d’autorisation
Découvrez les points de terminaison OAuth publics et les mécanismes de code d’autorisation, de PKCE, d’actualisation et de révocation pris en charge par cet environnement.
GET
/
.well-known
/
oauth-authorization-server
curl --request GET 'https://api.voicecheap.ai/.well-known/oauth-authorization-server'
const input = {};
const response = await fetch('https://api.voicecheap.ai/.well-known/oauth-authorization-server', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/.well-known/oauth-authorization-server",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Découvrez les points de terminaison OAuth publics et les mécanismes de code d’autorisation, de PKCE, d’actualisation et de révocation pris en charge par cet environnement.
GET https://api.voicecheap.ai/.well-known/oauth-authorization-server
Authentification
Aucune.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.curl --request GET 'https://api.voicecheap.ai/.well-known/oauth-authorization-server'
const input = {};
const response = await fetch('https://api.voicecheap.ai/.well-known/oauth-authorization-server', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/.well-known/oauth-authorization-server",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Réponse
Métadonnées du serveur d’autorisation OAuth avec des URL absolues de points de terminaison sur l’origine canonique de l’émetteur.HTTP 200
{
"issuer": "https://api.voicecheap.ai",
"authorization_endpoint": "https://api.voicecheap.ai/oauth/authorize",
"token_endpoint": "https://api.voicecheap.ai/oauth/token",
"registration_endpoint": "https://api.voicecheap.ai/oauth/register",
"revocation_endpoint": "https://api.voicecheap.ai/oauth/revoke",
"response_types_supported": ["code"],
"response_modes_supported": ["query"],
"grant_types_supported": ["authorization_code", "refresh_token"],
"token_endpoint_auth_methods_supported": ["none"],
"revocation_endpoint_auth_methods_supported": ["none"],
"code_challenge_methods_supported": ["S256"],
"scopes_supported": [
"account:read",
"usage:read",
"settings:read",
"settings:write",
"team:read",
"team:write",
"projects:read",
"projects:write",
"projects:delete",
"translations:write",
"transcription:read",
"transcription:write",
"subtitles:read",
"subtitles:write",
"tts:read",
"tts:write",
"voices:read",
"voices:write",
"images:read",
"images:write",
"thumbnails:read",
"thumbnails:write",
"folders:read",
"folders:write",
"glossary:read",
"glossary:write",
"webhooks:read",
"webhooks:write",
"publishing:read",
"publishing:write",
"offline_access"
],
"authorization_response_iss_parameter_supported": true,
"client_id_metadata_document_supported": true
}
Notes de l’opération
- Seuls le type de réponse code et le mode de réponse query sont annoncés.
- Les clients peuvent utiliser l’enregistrement dynamique ou un Client ID Metadata Document (CIMD). client_id_metadata_document_supported vaut true ; un client CIMD utilise l’URL HTTPS publique de son document comme client_id.
- Un document JSON CIMD doit contenir un client_id strictement identique, un client_name non vide de 120 caractères maximum et 1 à 10 redirect_uris exactes. Utilisez l’authentification de client public none avec S256 PKCE ; authorization_code est requis et refresh_token est facultatif.
- Servez le CIMD en JSON non compressé sur une URL HTTPS publique au port 443, avec un chemin explicite, sans identifiants, fragment, segments de points ni redirection. Le document doit faire au plus 64 Kio et répondre en 5 secondes. Le cache des métadonnées expire au plus tard après 5 minutes ; l’échange et le renouvellement des tokens utilisent les métadonnées liées à l’autorisation.
- Quand OpenID Connect est disponible, les métadonnées du serveur d’autorisation annoncent aussi les permissions openid et email, userinfo_endpoint et jwks_uri. Sinon, ces permissions et endpoints sont absents de ces métadonnées.
- Les méthodes d’authentification des jetons et de révocation sont none. Les clients publics utilisent client_id et S256 PKCE à la place d’un secret client.
- offline_access est un marqueur de portée lié au renouvellement, et non une autorisation produit. L’émission d’un jeton d’actualisation dépend de l’enregistrement de refresh_token comme type d’autorisation.
- Vérifiez que la valeur iss renvoyée lors du rappel final au client correspond à issuer. Les rappels d’autorisation, qu’elle soit accordée ou refusée, incluent iss et renvoient state lorsqu’il a été fourni.
Erreurs
| Statut HTTP | Code | Signification ou solution |
|---|---|---|
| 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. |
Cette page vous a-t-elle été utile ?

