Projektdetails abrufen
curl --request GET \
--url https://api.voicecheap.ai/v1/projects/{projectId} \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.voicecheap.ai/v1/projects/{projectId}"
headers = {"x-api-key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
fetch('https://api.voicecheap.ai/v1/projects/{projectId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voicecheap.ai/v1/projects/{projectId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.voicecheap.ai/v1/projects/{projectId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.voicecheap.ai/v1/projects/{projectId}")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.voicecheap.ai/v1/projects/{projectId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"projectId": "<string>",
"projectName": "<string>",
"status": "<string>",
"workflow": "<string>",
"originalVideoUrl": "<string>",
"originalLanguage": "<string>",
"targetLanguages": [
"<string>"
],
"duration": 123,
"createdAt": 123,
"progress": {
"progress.step": "<string>",
"progress.transcriptionProgress": 123,
"progress.transcriptionStatus": "<string>"
},
"translations": [
{
"translations[].workId": "<string>",
"translations[].translatedVersionId": "<string>",
"translations[].targetLanguage": "<string>",
"translations[].status": "<string>",
"translations[].currentStep": "<string>",
"translations[].progress": 123,
"translations[].createdAt": 123,
"translations[].completedAt": 123,
"translations[].failedAt": 123,
"translations[].timedOutAt": 123,
"translations[].translatedVideoUrl": "<string>",
"translations[].translatedAudioUrl": "<string>",
"translations[].settings": {},
"translations[].error": {}
}
],
"translations[].lipSync": {
"translations[].lipSync.latest": {},
"translations[].lipSync.history": [
{}
],
"translations[].lipSync.history[].jobId": "<string>",
"translations[].lipSync.history[].status": "<string>",
"translations[].lipSync.history[].videoUrl": "<string>",
"translations[].lipSync.history[].type": "<string>",
"translations[].lipSync.history[].activeSpeakerDetectionEnabled": true
},
"translations[].dynamicSubtitles": {},
"translations[].publicationAttempts": [
{}
],
"translations[].publishedVideos": [
{}
]
}Übersetzung
Projektdetails abrufen
Öffentliche Projektdetails, Verlauf der übersetzten Versionen und Verlauf der Lippensynchronisation abrufen
Projektdetails abrufen
curl --request GET \
--url https://api.voicecheap.ai/v1/projects/{projectId} \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.voicecheap.ai/v1/projects/{projectId}"
headers = {"x-api-key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
fetch('https://api.voicecheap.ai/v1/projects/{projectId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voicecheap.ai/v1/projects/{projectId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.voicecheap.ai/v1/projects/{projectId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.voicecheap.ai/v1/projects/{projectId}")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.voicecheap.ai/v1/projects/{projectId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"projectId": "<string>",
"projectName": "<string>",
"status": "<string>",
"workflow": "<string>",
"originalVideoUrl": "<string>",
"originalLanguage": "<string>",
"targetLanguages": [
"<string>"
],
"duration": 123,
"createdAt": 123,
"progress": {
"progress.step": "<string>",
"progress.transcriptionProgress": 123,
"progress.transcriptionStatus": "<string>"
},
"translations": [
{
"translations[].workId": "<string>",
"translations[].translatedVersionId": "<string>",
"translations[].targetLanguage": "<string>",
"translations[].status": "<string>",
"translations[].currentStep": "<string>",
"translations[].progress": 123,
"translations[].createdAt": 123,
"translations[].completedAt": 123,
"translations[].failedAt": 123,
"translations[].timedOutAt": 123,
"translations[].translatedVideoUrl": "<string>",
"translations[].translatedAudioUrl": "<string>",
"translations[].settings": {},
"translations[].error": {}
}
],
"translations[].lipSync": {
"translations[].lipSync.latest": {},
"translations[].lipSync.history": [
{}
],
"translations[].lipSync.history[].jobId": "<string>",
"translations[].lipSync.history[].status": "<string>",
"translations[].lipSync.history[].videoUrl": "<string>",
"translations[].lipSync.history[].type": "<string>",
"translations[].lipSync.history[].activeSpeakerDetectionEnabled": true
},
"translations[].dynamicSubtitles": {},
"translations[].publicationAttempts": [
{}
],
"translations[].publishedVideos": [
{}
]
}Projektdetails abrufen
Abrufen einer normalisierten öffentlichen Ansicht eines Projekts. Verwenden Sie diesen Endpunkt, wenn Sie den Verlauf der übersetzten Versionen, den Verlauf der Lippensynchronisation, den Status der dynamischen Untertitel oder den Veröffentlichungsstatus benötigen. Für häufiges Abfragen verwenden Sie weiterhin Übersetzungsstatus abrufen. Dieser Endpunkt ist umfangreicher und liefert absichtlich mehr Daten.Anfrage
Header
string
erforderlich
Ihr VoiceCheap API-Schlüssel. Erhalten Sie einen von app.voicecheap.ai/page-api.
Pfadparameter
string
erforderlich
Die eindeutige Kennung des Projekts, die von Projekt erstellen oder Übersetzung starten zurückgegeben wird.
Antwort
string
erforderlich
Die eindeutige Kennung des Projekts.
string
erforderlich
Der Projektname.
string
erforderlich
Öffentlicher Projektstatus:
processing, success oder failed.string
erforderlich
API-Workflow:
translation oder transcription. Transkriptions-Workflows erreichen den Erfolg, wenn die Quelltranskription abgeschlossen ist.string
erforderlich
URL zur ursprünglich hochgeladenen Video- oder Audiodatei.
string
erforderlich
Die erkannte oder angegebene Originalsprache.
string[]
erforderlich
Zielsprachen, die mit dem Projekt verknüpft sind.
number
erforderlich
Dauer des Inhalts in Sekunden.
number
erforderlich
Unix-Zeitstempel, wann das Projekt erstellt wurde.
object
erforderlich
Aktueller Fortschritt auf Projektebene.
array
erforderlich
Verlauf der übersetzten Versionen, sortiert mit der neuesten Version zuerst.
Anzeigen Übersetzungseigenschaften
Anzeigen Übersetzungseigenschaften
string
Kennung der Übersetzungsarbeit.
string
Kennung der übersetzten Version.
string
Zielsprache für diese Version.
string
Status der Übersetzungsversion:
in-progress, completed, not-started oder failed.string
Aktueller Synchronisationsschritt für diese Version.
number
Ungefährer Prozentsatz des Synchronisationsfortschritts.
number
Zeitstempel, wann diese übersetzte Version erstellt wurde.
number
Zeitstempel der Fertigstellung, falls verfügbar.
number
Zeitstempel des Fehlers, falls verfügbar.
number
Zeitstempel des Timeouts, falls verfügbar.
string
URL des übersetzten Videos.
string
URL des übersetzten Audios.
object
Öffentliche Einstellungen für die übersetzte Version, wie Untertitel, SmartSync, Hintergrundaudio und Qualitätsmodus.
object
Fehlercode und Nachricht, wenn die übersetzte Version fehlgeschlagen ist.
object
Verlauf der Lippensynchronisation für die übersetzte Version, nur vorhanden, wenn eine Lippensynchronisation angefordert wurde.
Anzeigen Eigenschaften der Lippensynchronisation
Anzeigen Eigenschaften der Lippensynchronisation
object
Letzter Versuch der Lippensynchronisation.
array
Alle Versuche der Lippensynchronisation für diese übersetzte Version, in der Reihenfolge der Erstellung.
string
Auftragskennung der Lippensynchronisation.
string
Status der Lippensynchronisation:
PENDING, PROCESSING, COMPLETED, FAILED, REJECTED oder CANCELED.string
URL des lippensynchronisierten Videos nach Fertigstellung.
string
Modus der Lippensynchronisation:
standard, pro oder studio.boolean
Ob die Erkennung aktiver Sprecher für diesen Versuch aktiviert war.
object
Status der dynamischen Untertitel, falls verfügbar.
array
Status des öffentlichen Veröffentlichungsversuchs, falls verfügbar.
array
Öffentliche Referenzen des veröffentlichten Videos, falls verfügbar.
Beispiel
cURL
curl -X GET "https://api.voicecheap.ai/v1/projects/abc123-def456-ghi789" \
-H "x-api-key: vc_your-api-key"
Response
{
"projectId": "abc123-def456-ghi789",
"projectName": "Launch Demo",
"status": "success",
"workflow": "translation",
"originalVideoUrl": "https://storage.example.com/input.mp4",
"originalLanguage": "en",
"targetLanguages": ["french"],
"duration": 120,
"createdAt": 1791280000000,
"progress": {
"step": "done",
"transcriptionProgress": 100,
"transcriptionStatus": "success"
},
"translations": [
{
"workId": "work_123",
"translatedVersionId": "version_456",
"targetLanguage": "french",
"status": "completed",
"currentStep": "done",
"progress": 100,
"createdAt": 1791280200000,
"completedAt": 1791280800000,
"translatedVideoUrl": "https://storage.example.com/translated.mp4",
"translatedAudioUrl": "https://storage.example.com/translated.mp3",
"settings": {
"voiceCloning": true,
"uploadType": "video",
"keepBackgroundMusic": true,
"keepOriginalVoice": false,
"originalVoiceVolume": 30,
"subtitles": {
"isEnable": true,
"source": "translated"
},
"smartSync": true,
"voiceIsolatorOption": "studio",
"translationQualityMode": "max"
},
"lipSync": {
"latest": {
"jobId": "lip_789",
"status": "COMPLETED",
"videoUrl": "https://storage.example.com/lipsync.mp4",
"errorMessage": null,
"type": "pro",
"createdAt": "2026-06-08T10:00:00.000Z",
"completedAt": "2026-06-08T10:20:00.000Z",
"activeSpeakerDetectionEnabled": true
},
"history": [
{
"jobId": "lip_789",
"status": "COMPLETED",
"videoUrl": "https://storage.example.com/lipsync.mp4",
"errorMessage": null,
"type": "pro",
"createdAt": "2026-06-08T10:00:00.000Z",
"completedAt": "2026-06-08T10:20:00.000Z",
"activeSpeakerDetectionEnabled": true
}
]
}
}
]
}
Fehler
| Status | Code | Beschreibung |
|---|---|---|
| 401 | MISSING_API_KEY | API-Schlüssel ist erforderlich |
| 401 | INVALID_API_KEY | Der bereitgestellte API-Schlüssel ist ungültig |
| 403 | FORBIDDEN | Sie haben keine Berechtigung, auf das Projekt zuzugreifen |
| 404 | PROJECT_NOT_FOUND | Das Projekt existiert nicht |
| 429 | RATE_LIMIT_EXCEEDED | Zu viele Anfragen |
| 500 | INTERNAL_ERROR | Unerwarteter Serverfehler |
War diese Seite hilfreich?

