프로젝트 생성
curl --request POST \
--url https://api.voicecheap.ai/v1/projects \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"targetLanguage": "<string>",
"originalLanguage": "<string>",
"projectName": "<string>",
"webhookUrl": "<string>",
"numberOfSpeakers": "<string>",
"brandVocabulary": "<string>",
"removeFillerWords": true,
"sourceSrt": "<string>"
}
'import requests
url = "https://api.voicecheap.ai/v1/projects"
payload = {
"targetLanguage": "<string>",
"originalLanguage": "<string>",
"projectName": "<string>",
"webhookUrl": "<string>",
"numberOfSpeakers": "<string>",
"brandVocabulary": "<string>",
"removeFillerWords": True,
"sourceSrt": "<string>"
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
targetLanguage: '<string>',
originalLanguage: '<string>',
projectName: '<string>',
webhookUrl: '<string>',
numberOfSpeakers: '<string>',
brandVocabulary: '<string>',
removeFillerWords: true,
sourceSrt: '<string>'
})
};
fetch('https://api.voicecheap.ai/v1/projects', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'targetLanguage' => '<string>',
'originalLanguage' => '<string>',
'projectName' => '<string>',
'webhookUrl' => '<string>',
'numberOfSpeakers' => '<string>',
'brandVocabulary' => '<string>',
'removeFillerWords' => true,
'sourceSrt' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.voicecheap.ai/v1/projects"
payload := strings.NewReader("{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.voicecheap.ai/v1/projects")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.voicecheap.ai/v1/projects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body번역
프로젝트 생성
비디오 또는 오디오 파일을 업로드하고 번역을 시작하지 않고 프로젝트를 생성합니다
프로젝트 생성
curl --request POST \
--url https://api.voicecheap.ai/v1/projects \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"targetLanguage": "<string>",
"originalLanguage": "<string>",
"projectName": "<string>",
"webhookUrl": "<string>",
"numberOfSpeakers": "<string>",
"brandVocabulary": "<string>",
"removeFillerWords": true,
"sourceSrt": "<string>"
}
'import requests
url = "https://api.voicecheap.ai/v1/projects"
payload = {
"targetLanguage": "<string>",
"originalLanguage": "<string>",
"projectName": "<string>",
"webhookUrl": "<string>",
"numberOfSpeakers": "<string>",
"brandVocabulary": "<string>",
"removeFillerWords": True,
"sourceSrt": "<string>"
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
targetLanguage: '<string>',
originalLanguage: '<string>',
projectName: '<string>',
webhookUrl: '<string>',
numberOfSpeakers: '<string>',
brandVocabulary: '<string>',
removeFillerWords: true,
sourceSrt: '<string>'
})
};
fetch('https://api.voicecheap.ai/v1/projects', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'targetLanguage' => '<string>',
'originalLanguage' => '<string>',
'projectName' => '<string>',
'webhookUrl' => '<string>',
'numberOfSpeakers' => '<string>',
'brandVocabulary' => '<string>',
'removeFillerWords' => true,
'sourceSrt' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.voicecheap.ai/v1/projects"
payload := strings.NewReader("{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.voicecheap.ai/v1/projects")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.voicecheap.ai/v1/projects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body프로젝트 생성
비디오 또는 오디오 파일을 업로드하여 새 프로젝트를 생성합니다. API는 전사(번역이나 립싱크 없음)만 시작합니다. 나중에 VoiceCheap 앱에서 프로젝트를 열어 번역을 트리거하거나 프로젝트 세부 정보 가져오기을(를) 사용하여 프로젝트 상태를 검사할 수 있습니다.동시성 제한
이 엔드포인트는POST /v1/translate과(와) 동일한 동시성 제한을 공유합니다(계정당 최대 10개의 진행 중인 번역). 제한에 도달하면 요청은 CONCURRENT_TRANSLATION_LIMIT_REACHED(HTTP 429)을(를) 반환합니다.
요청
이 엔드포인트는 파일 업로드와 함께multipart/form-data을(를) 허용합니다.
헤더
string
필수
귀하의 VoiceCheap API 키입니다. app.voicecheap.ai/page-api에서 키를 받으십시오.
본문 매개변수
file
필수
업로드할 비디오 또는 오디오 파일입니다.지원되는 비디오 형식:
video/mp4, video/quicktime, video/x-matroska, video/webm, video/mpeg지원되는 오디오 형식: audio/mpeg, audio/wav, audio/mp4, audio/x-m4a, audio/flac, audio/ogg, audio/aac, audio/webm플랜별 최대 파일 크기: Beginner 5 GB, Starter 10 GB, Creator 20 GB, Pro 30 GB, Scale 40 GB 및 Enterprise 60 GB.string
필수
이 프로젝트와 연결할 대상 언어입니다. 소문자여야 합니다.허용된 값(70개 이상):
afrikaans, albanian, amharic, arabic, armenian, assamese, azerbaijani, basque, belarusian, bengali, bosnian, bulgarian, catalan, croatian, czech, danish, dutch, english, british english, estonian, finnish, french, french canadian, galician, german, greek, gujarati, hebrew, hindi, hungarian, icelandic, indonesian, irish, italian, japanese, kannada, kazakh, khmer, korean, lao, latvian, lithuanian, macedonian, malay, malayalam, mandarin, marathi, mongolian, nepali, norwegian, persian, polish, portuguese, brazilian portuguese, punjabi, romanian, russian, serbian, slovak, slovenian, spanish, swahili, swedish, tagalog, tamil, telugu, thai, turkish, ukrainian, urdu, vietnamese, welsh, yoruba, zulustring
ISO 언어 코드를 사용하는 콘텐츠의 원본 언어입니다(예: 기본값:
en, es, fr, de, ja, zh).강력 권장: 자동 감지를 위해 이 항목을 비워 두십시오.언어 코드가 정확하고 유효한 ISO 형식임을 100% 확신하는 경우에만 이 매개변수를 제공하십시오. 잘못된 언어 코드는 전사 실패를 유발합니다. 당사의 자동 감지는 80개 이상의 언어를 지원하며 매우 정확합니다.
auto-detectstring
프로젝트의 사용자 지정 이름입니다. 대시보드에서 프로젝트를 식별하는 데 유용합니다.기본값: 제공되지 않으면 프로젝트 ID가 사용됩니다.
string
auto-detect 또는 1에서 32 사이의 정수입니다. 알려진 화자 수를 제공하면 화자 분리(diarization)가 향상될 수 있습니다.기본값: auto-detectstring
요청별 이름, 브랜드, 약어 또는 전문 용어의 JSON 문자열 배열입니다. 이러한 용어는 저장된 계정 또는 팀 용어집과 병합됩니다.
["VoiceCheap", "SmartSync", "ITC Global"]
boolean
전사 중에 일반적인 채움 단어를 제거합니다.기본값:
truestring
기존 원본 언어 SRT 전사본입니다. 제공되는 경우
originalLanguage은(는) auto-detect이(가) 아닌 명시적인 언어 코드여야 합니다.POST /v1/translate에서 처리합니다.
요청 예시
curl -X POST "https://api.voicecheap.ai/v1/projects" \
-H "x-api-key: YOUR_API_KEY" \
-F "file=@/path/to/video.mp4" \
-F "targetLanguage=french" \
-F "projectName=Launch Demo" \
-F "numberOfSpeakers=2" \
-F 'brandVocabulary=["VoiceCheap","SmartSync"]' \
-F "removeFillerWords=true"
응답 예시
{
"success": true,
"message": "Project created. Transcription started.",
"projectId": "project_123",
"projectName": "Launch Demo",
"targetLanguage": "french",
"status": "processing"
}
오류
| 상태 | 코드 | 설명 |
|---|---|---|
| 400 | FILE_REQUIRED | 요청과 함께 업로드된 파일이 없습니다 |
| 400 | INVALID_FILE_TYPE | 지원되지 않는 파일 형식입니다 |
| 400 | DURATION_DETECTION_FAILED | 업로드된 파일의 길이를 감지할 수 없습니다 |
| 400 | INVALID_MULTIPART_REQUEST | 멀티파트 폼 데이터가 잘못되었거나 필드 제한을 초과했습니다 |
| 400 | INVALID_BRAND_VOCABULARY | 요청별 용어집 항목이 유효하지 않습니다 |
| 400 | INVALID_SOURCE_SRT | 제공된 소스 SRT가 잘못되었습니다 |
| 400 | SOURCE_LANGUAGE_REQUIRED_FOR_SRT | sourceSrt에는 명시적인 originalLanguage가 필요합니다 |
| 400 | VIDEO_TOO_LONG | 미디어 길이가 사용자의 플랜 제한을 초과합니다 |
| 413 | FILE_TOO_LARGE | 업로드된 파일이 사용자의 플랜 제한을 초과합니다 |
| 401 | MISSING_API_KEY | API 키가 필요합니다 |
| 401 | INVALID_API_KEY_FORMAT | API 키는 vc_으로 시작해야 합니다 |
| 401 | INVALID_API_KEY | 제공된 API 키가 유효하지 않습니다 |
| 403 | API_ACCESS_REQUIRED | 이 계정에는 API 액세스가 필요합니다 |
| 403 | SUBSCRIPTION_REQUIRED | API 액세스에는 유료 구독이 필요합니다 |
| 429 | RATE_LIMIT_EXCEEDED | 요청이 너무 많습니다 (제한: 분당 10회 요청) |
| 429 | CONCURRENT_TRANSLATION_LIMIT_REACHED | 진행 중인 번역이 너무 많습니다 (제한: 동시 번역 10개) |
| 500 | INTERNAL_ERROR | 예기치 않은 서버 오류 |
이 페이지가 도움이 되었나요?

