curl --request GET 'https://api.voicecheap.ai/v1/openapi.json'
const input = {};
const response = await fetch('https://api.voicecheap.ai/v1/openapi.json', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/v1/openapi.json",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Discovery
Get the action OpenAPI document
Read the public OpenAPI 3.1 description of all customer actions and their input schemas.
GET
/
v1
/
openapi.json
curl --request GET 'https://api.voicecheap.ai/v1/openapi.json'
const input = {};
const response = await fetch('https://api.voicecheap.ai/v1/openapi.json', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/v1/openapi.json",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Read the public OpenAPI 3.1 description of all customer actions and their input schemas.
GET https://api.voicecheap.ai/v1/openapi.json
Authentication
None. This route does not authenticate an account or grant access to any action.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/v1/openapi.json'
const input = {};
const response = await fetch('https://api.voicecheap.ai/v1/openapi.json', {
method: 'GET',
headers: {},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/v1/openapi.json",
headers={},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Response
Representative metadata excerpt. The complete response also contains paths for every registered action, including its JSON request schema, required scopes, mutation idempotency header, and documented HTTP outcomes.HTTP 200
{
"openapi": "3.1.0",
"info": {
"title": "VoiceCheap API",
"version": "1.0.0",
"description": "Public customer actions shared with the VoiceCheap MCP. Existing multipart v1 routes remain documented separately."
},
"servers": [
{
"url": "https://api.voicecheap.ai/v1"
}
],
"security": [
{
"ApiKey": []
},
{
"BearerApiKey": []
}
],
"components": {
"securitySchemes": {
"ApiKey": {
"type": "apiKey",
"in": "header",
"name": "x-api-key"
},
"BearerApiKey": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "VoiceCheap API key"
}
}
}
}
Operation notes
- The returned servers[0].url includes /v1. Action paths in the document begin /actions/, so do not add /v1 a second time.
- This is the full unfiltered action catalog. Use authenticated GET /v1/actions to discover what a particular credential is permitted to use.
- The runtime OpenAPI document covers action dispatch only; it does not include OAuth routes, /mcp, discovery itself, or the existing multipart routes.
- This read does not consume a monthly integration call or the account integration rate counter. The service’s public HTTP protections still apply.
- Examples use production origins. Read metadata from the selected environment instead of mixing production and development.
Was this page helpful?

