Get presigned URLs for recording uploads
curl --request POST \
--url https://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"files": [
{
"filename": "<string>",
"file_size": 123,
"mime_type": "audio/wav"
}
]
}
'import requests
url = "https://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url"
payload = { "files": [
{
"filename": "<string>",
"file_size": 123,
"mime_type": "audio/wav"
}
] }
headers = {
"X-API-Key": "<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': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({files: [{filename: '<string>', file_size: 123, mime_type: 'audio/wav'}]})
};
fetch('https://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-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://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url",
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([
'files' => [
[
'filename' => '<string>',
'file_size' => 123,
'mime_type' => 'audio/wav'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url"
payload := strings.NewReader("{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"file_size\": 123,\n \"mime_type\": \"audio/wav\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"file_size\": 123,\n \"mime_type\": \"audio/wav\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"file_size\": 123,\n \"mime_type\": \"audio/wav\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"upload_url": "<string>",
"recording_id": "<string>",
"storage_key": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Workflow Recordings
Get presigned URLs for recording uploads
Request one or more audio upload URLs. PUT each file separately before creating recording metadata. Each file and batch must satisfy the schema’s size limits.
Get presigned URLs for recording uploads
curl --request POST \
--url https://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"files": [
{
"filename": "<string>",
"file_size": 123,
"mime_type": "audio/wav"
}
]
}
'import requests
url = "https://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url"
payload = { "files": [
{
"filename": "<string>",
"file_size": 123,
"mime_type": "audio/wav"
}
] }
headers = {
"X-API-Key": "<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': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({files: [{filename: '<string>', file_size: 123, mime_type: 'audio/wav'}]})
};
fetch('https://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-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://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url",
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([
'files' => [
[
'filename' => '<string>',
'file_size' => 123,
'mime_type' => 'audio/wav'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url"
payload := strings.NewReader("{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"file_size\": 123,\n \"mime_type\": \"audio/wav\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<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://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"file_size\": 123,\n \"mime_type\": \"audio/wav\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://athena.tryopencomputer.com/api/v1/workflow-recordings/upload-url")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"files\": [\n {\n \"filename\": \"<string>\",\n \"file_size\": 123,\n \"mime_type\": \"audio/wav\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"upload_url": "<string>",
"recording_id": "<string>",
"storage_key": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
ApiKeyAuthBearerAuth
Body
application/json
Request schema for getting presigned upload URLs for one or more files.
List of files to upload
Required array length:
1 - 20 elementsShow child attributes
Show child attributes
Response
Successful Response
Response schema with presigned upload URLs.
Upload URLs for each file
Show child attributes
Show child attributes