Sign an upload part
curl --request POST \
--url https://api.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber} \
--header 'accessKey: <accesskey>'import requests
url = "https://api.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}"
headers = {"accessKey": "<accesskey>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {accessKey: '<accesskey>'}};
fetch('https://api.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}', 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.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"accessKey: <accesskey>"
],
]);
$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.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("accessKey", "<accesskey>")
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.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}")
.header("accessKey", "<accesskey>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["accessKey"] = '<accesskey>'
response = http.request(request)
puts response.read_bodySpeech to Text
Sign an upload part
Get the temporary URL for uploading one part.
POST
/
sound_clone
/
api
/
v1
/
stt
/
uploads
/
{uploadId}
/
parts
/
{partNumber}
Sign an upload part
curl --request POST \
--url https://api.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber} \
--header 'accessKey: <accesskey>'import requests
url = "https://api.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}"
headers = {"accessKey": "<accesskey>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {accessKey: '<accesskey>'}};
fetch('https://api.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}', 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.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"accessKey: <accesskey>"
],
]);
$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.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("accessKey", "<accesskey>")
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.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}")
.header("accessKey", "<accesskey>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.myvocal.ai/sound_clone/api/v1/stt/uploads/{uploadId}/parts/{partNumber}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["accessKey"] = '<accesskey>'
response = http.request(request)
puts response.read_bodystring
required
MyVocal API key.
string
required
The upload id.
integer
required
One-based part number, up to
totalParts.data contains partNumber, url and expiresInSeconds.
PUT the exact part bytes to url, without an accessKey header, and retain the returned
ETag. Send partSizeBytes bytes per part except for the last part.
Complete the upload with all part numbers and ETags. Request a fresh signature if a URL expires.
Treat signed URLs as temporary credentials and do not log or publish them.