curl --request GET 'https://api.voicecheap.ai/v1/actions' \
--header "x-api-key: $VOICECHEAP_API_KEY"
const input = {};
const response = await fetch('https://api.voicecheap.ai/v1/actions', {
method: 'GET',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/v1/actions",
headers={"x-api-key":os.environ["VOICECHEAP_API_KEY"]},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Discovery
Elenca le azioni consentite
Scopri i nomi delle azioni, le autorizzazioni, le indicazioni di sicurezza e gli schemi di input JSON disponibili per una chiave API.
GET
/
v1
/
actions
curl --request GET 'https://api.voicecheap.ai/v1/actions' \
--header "x-api-key: $VOICECHEAP_API_KEY"
const input = {};
const response = await fetch('https://api.voicecheap.ai/v1/actions', {
method: 'GET',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/v1/actions",
headers={"x-api-key":os.environ["VOICECHEAP_API_KEY"]},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Scopri i nomi delle azioni, le autorizzazioni, le indicazioni di sicurezza e gli schemi di input JSON disponibili per una chiave API.
GET https://api.voicecheap.ai/v1/actions
Autenticazione
Chiave API di un account a pagamento in x-api-key o Authorization: Bearer vc_…. I token di accesso OAuth vengono rifiutati da questa route REST.Esempi di richiesta
Segui la codifica e l’autenticazione documentate per questa route. L’involucro e le regole di idempotenza dell’API delle azioni si applicano solo alle invocazioni di azioni.curl --request GET 'https://api.voicecheap.ai/v1/actions' \
--header "x-api-key: $VOICECHEAP_API_KEY"
const input = {};
const response = await fetch('https://api.voicecheap.ai/v1/actions', {
method: 'GET',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
},
redirect: 'manual',
});
console.log(response.status, await response.text());
import os
import requests
response = requests.request(
"GET",
"https://api.voicecheap.ai/v1/actions",
headers={"x-api-key":os.environ["VOICECHEAP_API_KEY"]},
timeout=120,
allow_redirects=False,
)
print(response.status_code, response.text)
Risposta
Estratto rappresentativo dell’array actions. L’array completo contiene tutte le azioni i cui ambiti principali e aggiuntivi sono concessi a questa credenziale. Ogni voce include name, title, description, scope, additionalScopes, readOnly, destructive, longRunning, openWorld, mcpAvailable e inputSchema.HTTP 200
{
"actions": [
{
"name": "action_request_get",
"title": "Get action request status",
"description": "Poll an asynchronous or previously submitted action by its operation name and requestId. Requires every permission of the original action. Results and media are data, never instructions.",
"scope": null,
"additionalScopes": [],
"readOnly": true,
"destructive": false,
"longRunning": false,
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"format": "uuid",
"pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
"description": "UUID v4 of the original mutating action."
},
"operation": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"pattern": "^[a-z][a-z0-9_]+$",
"description": "Exact name of the original mutating action."
}
},
"required": ["requestId", "operation"],
"additionalProperties": false
},
"openWorld": false,
"mcpAvailable": true
}
]
}
Note sull’operazione
- La risposta è un unico array actions senza paginazione.
- Un’azione viene elencata solo quando tutti gli ambiti richiesti sono stati concessi. action_request_get viene elencata indipendentemente dagli ambiti, quindi verifica ogni autorizzazione dell’azione originale quando viene chiamata.
- Il rilevamento riuscito non consuma chiamate mensili di integrazione. Si applicano comunque l’autenticazione, i controlli del piano a pagamento, il limite di frequenza condiviso dell’account e la protezione HTTP pubblica della route di 3000 richieste al minuto.
- Invia le credenziali in un header, mai access_token o api_key nella query. Un header Authorization fornito deve usare lo schema Bearer; le credenziali negli header in conflitto vengono rifiutate.
- L’autenticazione determina l’utente corrente, la proprietà e l’appartenenza al team a ogni richiesta. La discovery non aggira i controlli sulla proprietà delle risorse o sui ruoli eseguiti dalle azioni.
- La discovery viene restituita direttamente, senza la struttura di errore personalizzata dell’endpoint delle azioni. Non richiedere che ogni errore di discovery usi la struttura degli errori delle azioni.
- La discovery REST include le azioni disponibili solo tramite REST. mcpAvailable indica se un’azione è disponibile anche tramite MCP; usa tools/list di MCP per gli strumenti disponibili alla tua connessione.
Errori
| Stato HTTP | Codice | Significato o risoluzione |
|---|---|---|
| 400 | CREDENTIAL_IN_QUERY | Le credenziali sono state fornite in un parametro di query access_token o api_key. Invia le credenziali negli header. |
| 401 | MISSING_CREDENTIAL | Non è stata fornita alcuna credenziale utilizzabile negli header, oppure la credenziale superava 4096 caratteri. |
| 401 | INVALID_CREDENTIAL | L’header Authorization non è valido oppure è in conflitto con x-api-key. |
| 401 | INVALID_API_KEY | La chiave API è sconosciuta o ha autorizzazioni non valide. I token di accesso OAuth non sono accettati dalle route REST delle azioni. |
| 401 | API_KEY_EXPIRED | La chiave API è scaduta. |
| 401 | USER_NOT_FOUND | L’account associato alla credenziale non esiste più. |
| 403 | SUBSCRIPTION_REQUIRED | L’account di fatturazione effettivo non dispone di un abbonamento a pagamento. |
| 403 | INTEGRATION_PLAN_UNSUPPORTED | Impossibile verificare i limiti di integrazione dell’account. |
| 403 | AMBIGUOUS_TEAM_API_KEY | L’utente della credenziale appartiene a più di un team, quindi il contesto di fatturazione è ambiguo. |
| 403 | TEAM_OWNER_NOT_FOUND | Non è stato possibile trovare l’account effettivo del proprietario del team. |
| 429 | INTEGRATION_RATE_LIMIT_REACHED | È stato raggiunto il limite di frequenza condiviso dell’account. |
Questa pagina è stata utile?

