Pobierz szczegóły projektu
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": [
{}
]
}Tłumaczenie
Pobierz szczegóły projektu
Pobierz publiczne szczegóły projektu, historię przetłumaczonych wersji oraz historię synchronizacji ruchu ust
Pobierz szczegóły projektu
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": [
{}
]
}Pobierz szczegóły projektu
Pobierz znormalizowany publiczny widok projektu. Użyj tego punktu końcowego, gdy potrzebujesz historii przetłumaczonych wersji, historii synchronizacji ruchu ust, stanu dynamicznych napisów lub stanu publikacji. W przypadku częstego odpytywania, nadal używaj Pobierz status tłumaczenia. Ten punkt końcowy jest bogatszy i celowo zwraca więcej danych.Żądanie
Nagłówki
string
wymagane
Twój klucz API VoiceCheap. Uzyskaj go z app.voicecheap.ai/page-api.
Parametry ścieżki
string
wymagane
Unikalny identyfikator projektu zwrócony z Utwórz projekt lub Rozpocznij tłumaczenie.
Odpowiedź
string
wymagane
Unikalny identyfikator projektu.
string
wymagane
Nazwa projektu.
string
wymagane
Publiczny status projektu:
processing, success lub failed.string
wymagane
Przepływ pracy API:
translation lub transcription. Przepływy pracy transkrypcji osiągają sukces po zakończeniu transkrypcji źródłowej.string
wymagane
URL do oryginalnego przesłanego pliku wideo lub audio.
string
wymagane
Wykryty lub określony język oryginalny.
string[]
wymagane
Języki docelowe powiązane z projektem.
number
wymagane
Czas trwania zawartości w sekundach.
number
wymagane
Znacznik czasu Unix utworzenia projektu.
object
wymagane
array
wymagane
Historia przetłumaczonych wersji, posortowana od najnowszej.
Pokaż właściwości tłumaczenia
Pokaż właściwości tłumaczenia
string
Identyfikator pracy tłumaczeniowej.
string
Identyfikator przetłumaczonej wersji.
string
Język docelowy dla tej wersji.
string
Status wersji tłumaczenia:
in-progress, completed, not-started lub failed.string
Bieżący krok dubbing dla tej wersji.
number
Przybliżony procent postępu dubbing.
number
Znacznik czasu utworzenia tej przetłumaczonej wersji.
number
Znacznik czasu zakończenia, jeśli jest dostępny.
number
Znacznik czasu błędu, jeśli jest dostępny.
number
Znacznik czasu przekroczenia limitu czasu, jeśli jest dostępny.
string
URL przetłumaczonego wideo.
string
Adres URL przetłumaczonego dźwięku.
object
Ustawienia publiczne użyte dla przetłumaczonej wersji, takie jak napisy, SmartSync, dźwięk w tle oraz tryb jakości.
object
Kod błędu i komunikat w przypadku niepowodzenia przetłumaczonej wersji.
object
Historia synchronizacji ruchu ust dla przetłumaczonej wersji, dostępna tylko wtedy, gdy zażądano synchronizacji ruchu ust.
Pokaż właściwości lipSync
Pokaż właściwości lipSync
object
Ostatnia próba synchronizacji ruchu ust.
array
Wszystkie próby synchronizacji ruchu ust dla tej przetłumaczonej wersji, w kolejności tworzenia.
string
Identyfikator zadania synchronizacji ruchu ust.
string
Status synchronizacji ruchu ust:
PENDING, PROCESSING, COMPLETED, FAILED, REJECTED lub CANCELED.string
Adres URL wideo z synchronizacją ruchu ust po zakończeniu.
string
Tryb synchronizacji ruchu ust:
standard, pro lub studio.boolean
Czy wykrywanie aktywnego mówcy było włączone dla tej próby.
object
Stan dynamicznych napisów, gdy są dostępne.
array
Stan publicznej próby publikacji, gdy jest dostępny.
array
Publiczne odniesienia do opublikowanego wideo, gdy są dostępne.
Przykład
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
}
]
}
}
]
}
Błędy
| Status | Kod | Opis |
|---|---|---|
| 401 | MISSING_API_KEY | Wymagany jest klucz API |
| 401 | INVALID_API_KEY | Podany klucz API jest nieprawidłowy |
| 403 | FORBIDDEN | Brak uprawnień dostępu do projektu |
| 404 | PROJECT_NOT_FOUND | Projekt nie istnieje |
| 429 | RATE_LIMIT_EXCEEDED | Zbyt wiele żądań |
| 500 | INTERNAL_ERROR | Nieoczekiwany błąd serwera |
Czy ta strona była pomocna?

