Obter Detalhes do Projeto
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": [
{}
]
}Tradução
Obter Detalhes do Projeto
Recupere detalhes públicos do projeto, histórico de versões traduzidas e histórico de sincronização labial
Obter Detalhes do Projeto
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": [
{}
]
}Obter Detalhes do Projeto
Recupere uma visualização pública normalizada de um projeto. Use este endpoint quando precisar do histórico de versões traduzidas, histórico de sincronização labial, estado dinâmico de legendas ou estado de publicação. Para consultas frequentes, continue usando Obter Status da Tradução. Este endpoint é mais rico e retorna intencionalmente mais dados.Solicitação
Cabeçalhos
string
obrigatório
Sua chave de API VoiceCheap. Obtenha uma em app.voicecheap.ai/page-api.
Parâmetros de Caminho
string
obrigatório
O identificador único do projeto retornado de Criar Projeto ou Iniciar Tradução.
Resposta
string
obrigatório
O identificador único do projeto.
string
obrigatório
O nome do projeto.
string
obrigatório
Status público do projeto:
processing, success ou failed.string
obrigatório
Fluxo de trabalho da API:
translation ou transcription. Os fluxos de trabalho de transcrição alcançam sucesso quando a transcrição da fonte é concluída.string
obrigatório
URL para o arquivo de vídeo ou áudio original enviado.
string
obrigatório
O idioma original detectado ou especificado.
string[]
obrigatório
Idiomas de destino associados ao projeto.
number
obrigatório
Duração do conteúdo em segundos.
number
obrigatório
Timestamp Unix de quando o projeto foi criado.
object
obrigatório
array
obrigatório
Histórico de versões traduzidas, ordenado com a versão mais recente primeiro.
Mostrar propriedades de tradução
Mostrar propriedades de tradução
string
Identificador do trabalho de tradução.
string
Identificador da versão traduzida.
string
Idioma de destino para esta versão.
string
Status da versão de tradução:
in-progress, completed, not-started ou failed.string
Etapa atual de dublagem para esta versão.
number
Porcentagem aproximada de progresso da dublagem.
number
Timestamp de quando esta versão traduzida foi criada.
number
Timestamp de conclusão quando disponível.
number
Timestamp de falha quando disponível.
number
Timestamp de tempo limite quando disponível.
string
URL do vídeo traduzido.
string
URL do áudio traduzido.
object
Configurações públicas usadas para a versão traduzida, como legendas, SmartSync, áudio de fundo e modo de qualidade.
object
Código de erro e mensagem quando a versão traduzida falha.
object
Histórico de sincronização labial para a versão traduzida, presente apenas quando a sincronização labial foi solicitada.
Mostrar Propriedades de sincronização labial
Mostrar Propriedades de sincronização labial
object
Última tentativa de sincronização labial.
array
Todas as tentativas de sincronização labial para esta versão traduzida, em ordem de criação.
string
Identificador do trabalho de sincronização labial.
string
Status da sincronização labial:
PENDING, PROCESSING, COMPLETED, FAILED, REJECTED ou CANCELED.string
URL do vídeo com sincronização labial quando concluído.
string
Modo de sincronização labial:
standard, pro ou studio.boolean
Se a detecção de orador ativo foi habilitada para esta tentativa.
object
Estado das legendas dinâmicas quando disponível.
array
Estado da tentativa de publicação pública quando disponível.
array
Referências de vídeo publicado publicamente quando disponível.
Exemplo
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
}
]
}
}
]
}
Erros
| Status | Código | Descrição |
|---|---|---|
| 401 | MISSING_API_KEY | A chave de API é necessária |
| 401 | INVALID_API_KEY | A chave de API fornecida é inválida |
| 403 | FORBIDDEN | Você não tem permissão para acessar o projeto |
| 404 | PROJECT_NOT_FOUND | O projeto não existe |
| 429 | RATE_LIMIT_EXCEEDED | Muitas solicitações |
| 500 | INTERNAL_ERROR | Erro inesperado do servidor |
Esta página foi útil?

