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 y protocolo MCP
Obtener metadatos del servidor de autorización
Descubre los endpoints públicos OAuth y los mecanismos de código de autorización, PKCE, actualización y revocación compatibles con este entorno.
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)
Descubre los endpoints públicos OAuth y los mecanismos de código de autorización, PKCE, actualización y revocación compatibles con este entorno.
GET https://api.voicecheap.ai/.well-known/oauth-authorization-server
Autenticación
Ninguno.Ejemplos de solicitud
Sigue la codificación y la autenticación documentadas para esta ruta. El formato envolvente y las reglas de idempotencia de la API de acciones solo se aplican a las invocaciones de acciones.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)
Respuesta
Metadatos del servidor de autorización OAuth con URL absolutas de los endpoints en el origen canónico del emisor.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
}
Notas de la operación
- Solo se anuncian el tipo de respuesta code y el modo de respuesta query.
- Los clientes pueden usar el registro dinámico o un Client ID Metadata Document (CIMD). client_id_metadata_document_supported es true; un cliente CIMD usa la URL HTTPS pública de su documento como client_id.
- El documento JSON CIMD debe contener un client_id idéntico, un client_name no vacío de hasta 120 caracteres y entre 1 y 10 redirect_uris exactas. Usa autenticación de cliente público none con S256 PKCE; authorization_code es obligatorio y refresh_token opcional.
- Sirve CIMD como JSON sin comprimir por HTTPS público en el puerto 443, con una ruta explícita y sin credenciales, fragmentos, segmentos de punto ni redirecciones. El documento no debe superar 64 KiB y debe responder en 5 segundos. La caché de metadatos caduca como máximo en 5 minutos; el intercambio y la renovación de tokens usan los metadatos vinculados a la autorización.
- Cuando OpenID Connect está disponible, los metadatos del servidor de autorización también anuncian los permisos openid y email, userinfo_endpoint y jwks_uri. En caso contrario, estos permisos y endpoints no aparecen en esos metadatos.
- Los métodos de autenticación de tokens y revocación son none. Los clientes públicos usan client_id y S256 PKCE en lugar de un secreto de cliente.
- offline_access es un marcador de ámbito relacionado con la renovación, no un permiso de producto. La emisión de un token de actualización depende de si refresh_token se registró como tipo de concesión.
- Comprueba que el valor iss devuelto en la URL de retorno final del cliente coincida con issuer. Tanto las respuestas de retorno de autorización correctas como las denegadas incluyen iss y repiten state si se proporcionó.
Errores
| Estado HTTP | Código | Significado o solución |
|---|---|---|
| 429 | temporarily_unavailable | Se ha alcanzado el límite público de frecuencia de solicitudes OAuth. Espera a que termine la ventana actual antes de reintentarlo. |
| 500 | server_error | La autorización no está disponible temporalmente. Vuelve a intentarlo más tarde. |
¿Esta página le ayudó?

