curl --request POST 'https://api.voicecheap.ai/v1/actions/subtitles_result_get' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"resultId":"b3caf96f-5f2a-4619-832c-a12c0d57f78b","includeContent":true}'
const input = {
resultId: 'b3caf96f-5f2a-4619-832c-a12c0d57f78b',
includeContent: true,
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/subtitles_result_get', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/subtitles_result_get",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"resultId": "b3caf96f-5f2a-4619-832c-a12c0d57f78b", "includeContent": True},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"resultId": "b3caf96f-5f2a-4619-832c-a12c0d57f78b",
"operation": "captions_transcribe",
"createdAt": 1792152000000,
"fileName": "voicecheap-captions_transcribe-b3caf96f-5f2a-4619-832c-a12c0d57f78b.json",
"byteLength": 190,
"contentType": "application/json; charset=utf-8",
"status": "completed",
"requestId": "13579bdf-2468-4ace-8bdf-0123456789ab",
"getAction": "subtitles_result_get",
"downloadAction": "subtitles_result_download",
"listAction": "subtitles_result_list",
"result": {
"words": [
{
"text": "Hello",
"startMs": 0,
"endMs": 500,
"speakerId": "speaker_0"
},
{
"text": "world.",
"startMs": 500,
"endMs": 1500,
"speakerId": "speaker_0"
}
],
"detectedLanguage": "en",
"durationSeconds": 60
}
}
}
Ondertitels en captions
Een opgeslagen resultaat van een ondertitelactie lezen
Lees metadata voor je opgeslagen uitvoer. Stel includeContent=true in om de volledige gestructureerde JSON op te halen, inclusief alle ondertitelwoorden of transcripttekst.
POST
/
v1
/
actions
/
subtitles_result_get
curl --request POST 'https://api.voicecheap.ai/v1/actions/subtitles_result_get' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"resultId":"b3caf96f-5f2a-4619-832c-a12c0d57f78b","includeContent":true}'
const input = {
resultId: 'b3caf96f-5f2a-4619-832c-a12c0d57f78b',
includeContent: true,
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/subtitles_result_get', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/subtitles_result_get",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"resultId": "b3caf96f-5f2a-4619-832c-a12c0d57f78b", "includeContent": True},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
{
"data": {
"resultId": "b3caf96f-5f2a-4619-832c-a12c0d57f78b",
"operation": "captions_transcribe",
"createdAt": 1792152000000,
"fileName": "voicecheap-captions_transcribe-b3caf96f-5f2a-4619-832c-a12c0d57f78b.json",
"byteLength": 190,
"contentType": "application/json; charset=utf-8",
"status": "completed",
"requestId": "13579bdf-2468-4ace-8bdf-0123456789ab",
"getAction": "subtitles_result_get",
"downloadAction": "subtitles_result_download",
"listAction": "subtitles_result_list",
"result": {
"words": [
{
"text": "Hello",
"startMs": 0,
"endMs": 500,
"speakerId": "speaker_0"
},
{
"text": "world.",
"startMs": 500,
"endMs": 1500,
"speakerId": "speaker_0"
}
],
"detectedLanguage": "en",
"durationSeconds": 60
}
}
}
Lees metadata voor je opgeslagen uitvoer. Stel includeContent=true in om de volledige gestructureerde JSON op te halen, inclusief alle ondertitelwoorden of transcripttekst.
Vereiste machtigingen:
POST https://api.voicecheap.ai/v1/actions/subtitles_result_get
Authenticatie en machtigingen
string
vereist
Stuur een VoiceCheap API-sleutel mee in deze header. Authorization: Bearer met dezelfde API-sleutel wordt ook ondersteund. OAuth-toegangstokens
worden alleen door MCP geaccepteerd, niet door dit REST-endpoint.
subtitles:read.
Een actief betaald abonnement is vereist. Machtigingen wijzigen geen teamrollen, eigendom van resources, mediategoed of abonnementslimieten.
Parameters
string
vereist
Tekstwaarde.Formaat: “uuid”. Patroon:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$.boolean
Booleaanse waarde.Standaardwaarde: false.
Volledig invoerschema
Volledig invoerschema
Het onderstaande JSON Schema behoudt de exacte veldnamen, geneste typen, standaardwaarden, grenzen en toegestane waarden die discovery beschikbaar stelt. Aanvullende regels tussen velden staan in de opmerkingen bij de bewerking.
{
"type": "object",
"properties": {
"resultId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"includeContent": {
"default": false,
"type": "boolean"
}
},
"required": ["resultId"],
"additionalProperties": false
}
Voorbeeldaanvragen
Vervang de voorbeeldidentificaties van resources en mediasleutels door waarden die voor je account zijn geretourneerd. Behoud dezelfde aanvraagidentificatie wanneer je dezelfde wijziging opnieuw probeert.curl --request POST 'https://api.voicecheap.ai/v1/actions/subtitles_result_get' \
--header "x-api-key: $VOICECHEAP_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"resultId":"b3caf96f-5f2a-4619-832c-a12c0d57f78b","includeContent":true}'
const input = {
resultId: 'b3caf96f-5f2a-4619-832c-a12c0d57f78b',
includeContent: true,
};
const response = await fetch('https://api.voicecheap.ai/v1/actions/subtitles_result_get', {
method: 'POST',
headers: {
'x-api-key': process.env.VOICECHEAP_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await response.json();
if (!response.ok) throw new Error(body.code + ': ' + body.message);
console.log(body);
import os
import requests
response = requests.post(
"https://api.voicecheap.ai/v1/actions/subtitles_result_get",
headers={"x-api-key": os.environ["VOICECHEAP_API_KEY"]},
json={"resultId": "b3caf96f-5f2a-4619-832c-a12c0d57f78b", "includeContent": True},
timeout=120,
)
body = response.json()
if not response.ok:
raise RuntimeError(f"{body.get('code')}: {body.get('message')}")
print(body)
Antwoord
Een geslaagde eerste uitvoering retourneert HTTP 200 met het resultaat van de bewerking onder data. Een herhaalde aanvraag kan in plaats daarvan de opgeslagen aanvraagstatus retourneren. Het voorbeeld toont één ondersteund antwoord, niet alle optionele velden. Metadata van opgeslagen uitvoer, plus het volledige gestructureerde resultaat wanneer includeContent true is. Als includeContent ontbreekt, worden alleen metadata geretourneerd.{
"data": {
"resultId": "b3caf96f-5f2a-4619-832c-a12c0d57f78b",
"operation": "captions_transcribe",
"createdAt": 1792152000000,
"fileName": "voicecheap-captions_transcribe-b3caf96f-5f2a-4619-832c-a12c0d57f78b.json",
"byteLength": 190,
"contentType": "application/json; charset=utf-8",
"status": "completed",
"requestId": "13579bdf-2468-4ace-8bdf-0123456789ab",
"getAction": "subtitles_result_get",
"downloadAction": "subtitles_result_download",
"listAction": "subtitles_result_list",
"result": {
"words": [
{
"text": "Hello",
"startMs": 0,
"endMs": 500,
"speakerId": "speaker_0"
},
{
"text": "world.",
"startMs": 500,
"endMs": 1500,
"speakerId": "speaker_0"
}
],
"detectedLanguage": "en",
"durationSeconds": 60
}
}
}
Resultaatvelden
| Veld | Beschrijving |
|---|---|
data.resultId | UUID van opgeslagen uitvoer waarvan je eigenaar bent. Gebruik deze met getAction of downloadAction; deze verschilt van requestId en elke historyId. |
data.operation | Generatieactie die deze opgeslagen JSON heeft geproduceerd. |
data.createdAt | Unix-tijdstempel in milliseconden waarop de opgeslagen uitvoer is voorbereid. |
data.fileName | Voorgestelde bestandsnaam voor een JSON-export. |
data.byteLength | UTF-8-bytes van de volledige geserialiseerde uitvoer, niet van de compacte metadata. |
data.contentType | application/json; charset=utf-8. |
data.status | completed bij geslaagde generatie. De resultaatgeschiedenis kan ook herstelvermeldingen met de status pending tonen. |
data.requestId | UUID van de oorspronkelijke actieaanvraag, indien vastgelegd. |
data.getAction | Ophaalactie voor gegevens die je bezit; includeContent is standaard false en moet true zijn voor de volledige gestructureerde uitvoer. |
data.downloadAction | Geauthenticeerde exportactie die de volledige JSON als inhoudstekenreeks retourneert. |
data.listAction | Actie voor het weergeven van eigen opgeslagen uitvoer binnen dit machtigingsdomein. |
data.result | Volledige oorspronkelijke openbare generatiebody; alleen aanwezig met includeContent: true. |
Opmerkingen bij de bewerking
- Vereist een betaald abonnement en de actiemachtiging. Het persoonlijke toolabonnement van de uitvoerende gebruiker wordt bij uitvoering opnieuw gecontroleerd; opgeslagen tools en uploadreferenties behoren toe aan die gebruiker, ook wanneer het toegangsmiddel aan een team is gekoppeld.
- Een geslaagde actie verbruikt één gedeelde maandelijkse API/MCP-aanroep. Beginner staat 500, Starter 5,000 en Creator 25,000 aanroepen/maand toe; Pro, Scale en Enterprise hebben geen maandelijkse bovengrens. De limieten per minuut blijven gelden: respectievelijk 30, 60, 120, 180, 300 en 600. Tegoeden voor toolgeneraties staan hier los van.
- resultId is een UUID uit een voltooide generatiereferentie of uit result_list van dit domein. Deze verschilt van requestId van de actie en historyId van de webtool.
- Resultaten behoren toe aan de geauthenticeerde actor en het machtigingsdomein. Een subtitles-resultaat kan niet via transcription-acties worden gelezen, of andersom.
- De volledige opgeslagen JSON is versleuteld in opslag en wordt onafhankelijk van de begrensde cache voor het opvragen van actiestatussen bewaard. Ophalen blijft geauthenticeerd; er wordt geen openbare JSON-URL voor transcripten of ondertitels uitgegeven.
- Deze acties halen bestaande uitvoer op en genereren geen media en verbruiken geen dagelijkse limiet. Elke geslaagde ophaalactie gebruikt wel één maandelijkse integratieaanroep.
- Metadata met de status pending betekent dat de opslag van de uitvoer moet worden hersteld. Het lezen van inhoud of downloaden probeert een reeds opgeslagen versleuteld object te herstellen; controleer dit voordat je een nieuwe generatie start.
- includeContent is standaard false. true ontsleutelt de volledige gegenereerde JSON en retourneert deze onder result. Dit voorbeeld toont de vorm die de inhoud retourneert.
- De structuur van het geneste resultaat volgt de oorspronkelijke bewerking. Transcriptie-uitvoer bevat transcriptietekst, ondertiteluitvoer kan SRT-/gerenderde-videogegevens bevatten en ondertitels bevatten de woordtekst in text, startMs/endMs, speakerId dat null kan zijn en durationSeconds.
Verbruik
Elke geslaagde aanroep verbruikt één maandelijkse API/MCP-aanroep. Ook het mediategoed en de eigen generatielimieten van de bewerking zijn van toepassing.Fouten
| HTTP-status | Code | Betekenis of herstel |
|---|---|---|
| 400 | CREDENTIAL_IN_QUERY | Inloggegevens zijn opgegeven in een queryparameter access_token of api_key. Stuur inloggegevens in headers. |
| 400 | VALIDATION_ERROR | De argumenten voldoen niet aan het actieschema of er is een onbekend argument opgegeven. |
| 401 | API_KEY_EXPIRED | De API-sleutel is verlopen. |
| 401 | INVALID_API_KEY | Geef een geldige, niet-verlopen API-sleutel op. |
| 401 | INVALID_CREDENTIAL | De Authorization-header heeft een ongeldige indeling of is in strijd met x-api-key. |
| 401 | MISSING_CREDENTIAL | Er is geen bruikbaar authenticatiemiddel in de header opgegeven, of het overschreed 4096 tekens. |
| 401 | USER_NOT_FOUND | Het account dat bij de toegangsgegevens hoort, bestaat niet meer. |
| 403 | AMBIGUOUS_TEAM_API_KEY | De gebruiker van het authenticatiemiddel behoort tot meer dan één team, waardoor de factureringscontext onduidelijk is. |
| 403 | INSUFFICIENT_SCOPE | De API-sleutel of MCP-verbinding heeft niet de vereiste actiemachtiging. |
| 403 | INTEGRATION_PLAN_UNSUPPORTED | De integratielimieten van het account konden niet worden geverifieerd. |
| 403 | PAID_SUBSCRIPTION_REQUIRED | De geauthenticeerde uitvoerende gebruiker heeft geen betaald abonnement meer wanneer deze toolactie wordt uitgevoerd. |
| 403 | SUBSCRIPTION_REQUIRED | Gebruik een actief betaald abonnement. |
| 403 | TEAM_OWNER_NOT_FOUND | Het effectieve account van de teameigenaar kon niet worden gevonden. |
| 404 | TOOL_RESULT_NOT_FOUND | Het resultaat ontbreekt, is van een andere uitvoerende gebruiker of behoort tot het andere machtigingsdomein. |
| 410 | TOOL_RESULT_ACCOUNT_UNAVAILABLE | Het account van de uitvoerende gebruiker wordt verwijderd of bestaat niet meer tijdens het herstel. |
| 429 | INTEGRATION_MONTHLY_LIMIT_REACHED | Gebruikte en nog lopende aanroepen hebben het gedeelde maandelijkse API/MCP-quotum bereikt. |
| 429 | INTEGRATION_RATE_LIMIT_REACHED | Het account heeft de integratielimiet per minuut bereikt; controleer retryAfterSeconds. |
| 500 | INTERNAL_ERROR | Het opgeslagen voltooide resultaat kon niet worden gelezen of de integriteitsvalidatie ervan is mislukt. |
| 503 | INTERNAL_ERROR | Een opgeslagen resultaat in afwachting moet worden hersteld en kan nog niet worden bevestigd; controleer hetzelfde resultaat opnieuw voordat je opnieuw genereert. |
| 503 | SERVER_RESTARTING | De server wordt opnieuw gestart. Probeer het zo opnieuw en behoud bij een wijziging dezelfde aanvraagidentificatie. |
{
"code": "INSUFFICIENT_SCOPE",
"message": "This credential does not permit the requested action.",
"status": 403,
"details": {
"requiredScopes": ["subtitles:read"]
}
}
Was deze pagina nuttig?

