Generate a secure, time-limited signed URL for a SubVerse private asset
curl --request GET \
--url https://api-v2.subverseai.com/api/call/signed-recording-url \
--header 'x-api-key: <api-key>'import requests
url = "https://api-v2.subverseai.com/api/call/signed-recording-url"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api-v2.subverseai.com/api/call/signed-recording-url', 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-v2.subverseai.com/api/call/signed-recording-url",
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: <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-v2.subverseai.com/api/call/signed-recording-url"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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-v2.subverseai.com/api/call/signed-recording-url")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-v2.subverseai.com/api/call/signed-recording-url")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"responseCode": 200,
"message": "Signed url generated successfully!",
"data": {
"url": "https://example.com/recording.mp3?token=..."
}
}Storage
Generate Signed URL
Generates a secure, time-limited pre-signed URL for an asset stored in the SubVerse private S3 bucket, such as call recordings or session attachments. You must provide either ‘callId’ or ‘callRecordingUrl’ in the query parameters.
GET
/
call
/
signed-recording-url
Generate a secure, time-limited signed URL for a SubVerse private asset
curl --request GET \
--url https://api-v2.subverseai.com/api/call/signed-recording-url \
--header 'x-api-key: <api-key>'import requests
url = "https://api-v2.subverseai.com/api/call/signed-recording-url"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api-v2.subverseai.com/api/call/signed-recording-url', 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-v2.subverseai.com/api/call/signed-recording-url",
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: <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-v2.subverseai.com/api/call/signed-recording-url"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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-v2.subverseai.com/api/call/signed-recording-url")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-v2.subverseai.com/api/call/signed-recording-url")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"responseCode": 200,
"message": "Signed url generated successfully!",
"data": {
"url": "https://example.com/recording.mp3?token=..."
}
}Authorizations
Authentication header containing API key from SubVerse dashboard.
Query Parameters
Unique identifier for the call.
Example:
"12345"
A direct S3/Storage URL to a SubVerse private asset (e.g., a call recording, session attachment, etc.).
Example:
"https://s3.amazonaws.com/bucket/recording.mp3"