curl --request GET 'https://api.voicecheap.ai/oauth/jwks'
const input = {};
const response = await fetch('https://api.voicecheap.ai/oauth/jwks', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/oauth/jwks",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
OAuth and MCP protocol
Get ID-token verification keys
Read the public JSON Web Key Set used to verify VoiceCheap ID-token signatures.
GET
/
oauth
/
jwks
curl --request GET 'https://api.voicecheap.ai/oauth/jwks'
const input = {};
const response = await fetch('https://api.voicecheap.ai/oauth/jwks', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/oauth/jwks",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Read the public JSON Web Key Set used to verify VoiceCheap ID-token signatures.
GET https://api.voicecheap.ai/oauth/jwks
Authentication
None.Request examples
Follow the documented encoding and authentication for this route. The action API’s envelope and idempotency rules apply only to action invocations.curl --request GET 'https://api.voicecheap.ai/oauth/jwks'
const input = {};
const response = await fetch('https://api.voicecheap.ai/oauth/jwks', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/oauth/jwks",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Response
Read the public JSON Web Key Set used to verify VoiceCheap ID-token signatures.HTTP 200
{
"keys": [
{
"kty": "RSA",
"n": "l_9byS_IKjLQsZT2-tuGBrJH7a5DZWqUoyTRMRyzl-SetTGldXQ5kVSNz1ySXUyZq6PWkFMi1yZ8IPaFffSSJyNhop1XbJMRQHz_yJ9qi23BrL3x9IOAG68IJmJ1bBj3jF6mdXVvqP2jyy_iS3PElkZTVvFd8knge-jFmIdlXiieymtdwNQv1E1LAqi-FjL9f06MKVtvVEZNySC59TVsEBcUmzkCbEmDGyi59LOI5TektgU6N3vMj4cuTwfz0mjXIRRAFZUNwAg5w39FmttSIuXijC-S29PCG6MX4Q_RwAGmXP_MPuS7cTT35RT-eqZ4VT7frug-wSjjktGRxoXEtQ",
"e": "AQAB",
"use": "sig",
"alg": "RS256",
"kid": "uAejZ-V0CeTRBMLE7sKpQ8vQAVHZGbJEiCUra4mvKBE"
}
]
}
Response headers
{
"Cache-Control": "no-store"
}
Operation notes
- OpenID Connect endpoints return HTTP 404 when identity integration is unavailable in this environment. Check discovery before relying on identity features.
- Select the public key whose kid matches the ID-token header and verify RS256. The response contains public verification keys only; never treat an ID token as an MCP access token.
Errors
| HTTP status | Code | Meaning or recovery |
|---|---|---|
| 404 | Not Found | OpenID Connect endpoints return HTTP 404 when identity integration is unavailable in this environment. Check discovery before relying on identity features. |
Was this page helpful?

