curl --request POST \
--url https://{your-subdomain}.neetorecord.com/api/external/v2/recordings/uploads \
--header 'Accept: <accept>' \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <x-api-key>' \
--data '
{
"file_size": 52428800,
"title": "Quarterly product demo",
"folder_id": "<string>",
"owner_email": "oliver@example.com"
}
'const options = {
method: 'POST',
headers: {
'X-Api-Key': '<x-api-key>',
Accept: '<accept>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
file_size: 52428800,
title: 'Quarterly product demo',
folder_id: '<string>',
owner_email: 'oliver@example.com'
})
};
fetch('https://{your-subdomain}.neetorecord.com/api/external/v2/recordings/uploads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{your-subdomain}.neetorecord.com/api/external/v2/recordings/uploads"
payload = {
"file_size": 52428800,
"title": "Quarterly product demo",
"folder_id": "<string>",
"owner_email": "oliver@example.com"
}
headers = {
"X-Api-Key": "<x-api-key>",
"Accept": "<accept>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"recording": {
"id": "3f6a1c58-9b2e-4d77-8a10-5c0b1e2f3a4d",
"title": "Quarterly product demo",
"url": "https://your-workspace.neetorecord.com/watch/x9y8z7w6v5u4t3s2"
},
"upload_url": "https://example-bucket.s3.amazonaws.com/.../video.mp4?X-Amz-Signature=...",
"upload_headers": {
"Content-Type": "video/mp4"
}
}{
"error": "<string>"
}{
"error": "Upload is not enabled for this workspace"
}{
"error": "<string>"
}{
"error": "File size must be a whole number of bytes between 1 and 2 GB."
}Start a video upload
Reserves a new recording for an MP4 video of up to 2 GB and returns a presigned URL to send the file to. Uploading a video takes three steps. First, call this endpoint. Second, send the raw file bytes with an HTTP PUT to upload_url, with every header in upload_headers. The URL is valid for 15 minutes. Do not send your X-Api-Key header on this PUT request, because the URL goes to storage and not to NeetoRecord. Third, call POST /recordings/{id}/complete-upload so the video is processed. Uploading needs a paid plan and enough upload storage left for the owner.
curl --request POST \
--url https://{your-subdomain}.neetorecord.com/api/external/v2/recordings/uploads \
--header 'Accept: <accept>' \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <x-api-key>' \
--data '
{
"file_size": 52428800,
"title": "Quarterly product demo",
"folder_id": "<string>",
"owner_email": "oliver@example.com"
}
'const options = {
method: 'POST',
headers: {
'X-Api-Key': '<x-api-key>',
Accept: '<accept>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
file_size: 52428800,
title: 'Quarterly product demo',
folder_id: '<string>',
owner_email: 'oliver@example.com'
})
};
fetch('https://{your-subdomain}.neetorecord.com/api/external/v2/recordings/uploads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{your-subdomain}.neetorecord.com/api/external/v2/recordings/uploads"
payload = {
"file_size": 52428800,
"title": "Quarterly product demo",
"folder_id": "<string>",
"owner_email": "oliver@example.com"
}
headers = {
"X-Api-Key": "<x-api-key>",
"Accept": "<accept>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"recording": {
"id": "3f6a1c58-9b2e-4d77-8a10-5c0b1e2f3a4d",
"title": "Quarterly product demo",
"url": "https://your-workspace.neetorecord.com/watch/x9y8z7w6v5u4t3s2"
},
"upload_url": "https://example-bucket.s3.amazonaws.com/.../video.mp4?X-Amz-Signature=...",
"upload_headers": {
"Content-Type": "video/mp4"
}
}{
"error": "<string>"
}{
"error": "Upload is not enabled for this workspace"
}{
"error": "<string>"
}{
"error": "File size must be a whole number of bytes between 1 and 2 GB."
}{your-subdomain} with your workspace’s subdomain. Learn how to find your subdomain in Workspace subdomain.
Headers
API key. Refer to Authentication for more information.
Must be application/json.
application/json Body
Size of the MP4 file in bytes. It must be between 1 and 2,147,483,648 bytes (2 GB).
1 <= x <= 214748364852428800
Title of the recording. A default title is used when omitted.
"Quarterly product demo"
Folder to put the recording in. Accepts the folder id from the folders API.
Email of the active workspace member who owns the recording. Required with a workspace API key. With a signed-in CLI session it defaults to the signed-in member, and naming another member needs the permission to manage every recording.
"oliver@example.com"
Response
The recording was reserved. Send the file to upload_url next.
Presigned URL to PUT the file to. Valid for 15 minutes.