API reference
Video
/ v1/ orgs/ :orgId/ video/ files/ :fileId/ proxiesThe project's finished proxies: each one's media item (mediaRef), name, type and size. Read a proxy through Office's GET …/office/files/:fileId/media/:mediaId.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
orgIdOrganization id (
org_…).fileIdFile id, as returned when the upload was created.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/video/files/{fileId}/proxies' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
proxies: {
mediaId: string
mediaRef: null | string
name: string
mime: string
size: number
createdAt: number
}[]
}/ v1/ orgs/ :orgId/ video/ files/ :fileId/ proxiesStarts an upload into the project in parts: a proxy of a media item (mediaRef, MP4 or WebM, up to video.proxyMb) or, with purpose: "audio", the mixdown to transcribe. Answers mediaId, partSize, partCount and links for the first parts. Editors only.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
orgIdOrganization id (
org_…).fileIdFile id, as returned when the upload was created.
Request body
mediaRefstringUp to 64 characters.
namestringrequired1–255 characters.
sizeintegerrequired≥ 1.
mimestringrequiredUp to 100 characters.
purpose"proxy" | "audio"
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/video/files/{fileId}/proxies' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example",
"size": 1,
"mime": "example"
}'Response 201
{
mediaId: string
uploadId: string
partSize: number
partCount: number
urls: {
[key: number]: string
}
expiresIn: number
}/ v1/ orgs/ :orgId/ video/ files/ :fileId/ proxies/ :mediaId/ partsLinks for more parts (parts, 1 to 100 part numbers).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
orgIdOrganization id (
org_…).fileIdFile id, as returned when the upload was created.
mediaIdA picture's or other media's id in a document, spreadsheet, presentation or video project (
med_…): pictures, Video's proxies, its poster and transcription mixdowns.
Request body
partsinteger[]required1–100 items. Each 1–10000.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/video/files/{fileId}/proxies/{mediaId}/parts' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"parts": [
1
]
}'Response 200
{
urls: {
[key: number]: string
}
expiresIn: number
}/ v1/ orgs/ :orgId/ video/ files/ :fileId/ proxies/ :mediaId/ completeFinishes the upload once every part is in; it then counts against the space's storage.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
orgIdOrganization id (
org_…).fileIdFile id, as returned when the upload was created.
mediaIdA picture's or other media's id in a document, spreadsheet, presentation or video project (
med_…): pictures, Video's proxies, its poster and transcription mixdowns.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/video/files/{fileId}/proxies/{mediaId}/complete' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
mediaId: string
size: number
mime: string
}/ v1/ orgs/ :orgId/ video/ files/ :fileId/ proxies/ :mediaIdDeletes a proxy, a mixdown or an unfinished upload of one, giving its storage back (when its media item leaves the project, or to make it again). Editors only.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
orgIdOrganization id (
org_…).fileIdFile id, as returned when the upload was created.
mediaIdA picture's or other media's id in a document, spreadsheet, presentation or video project (
med_…): pictures, Video's proxies, its poster and transcription mixdowns.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/video/files/{fileId}/proxies/{mediaId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
deleted: boolean
}/ v1/ orgs/ :orgId/ video/ files/ :fileId/ posterSaves the project's poster frame (the body: a WebP or JPEG of at most 1 MB). Drive's thumbnail of the project follows. Editors only.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
orgIdOrganization id (
org_…).fileIdFile id, as returned when the upload was created.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.413Posters can be at most 1 MB.
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/video/files/{fileId}/poster' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
mediaId: string
size: number
mime: string
}/ v1/ orgs/ :orgId/ video/ files/ :fileId/ transcriptionsCaptions from speech: the uploaded mixdown (audioMediaId, duration in flicks) or one media item (source: "media", mediaId) into a new caption track of sequenceId from from, in language (or auto), with up to speakers voices told apart. 202 with the job; the track arrives in the project when it's done. Counts against your daily transcription minutes.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
orgIdOrganization id (
org_…).fileIdFile id, as returned when the upload was created.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/video/files/{fileId}/transcriptions' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 202
{
transcription: {
id: string
fileId: string
sequenceId: string
status: "queued" | "done" | "failed" | "running"
language: string
detected?: string
minutes: number
trackId?: string
cues?: number
error?: string
createdAt: number
}
}/ v1/ orgs/ :orgId/ video/ files/ :fileId/ transcriptions/ :transcriptionIdA transcription job: status (running, done, failed), the caption track it made (trackId) and its cue count, or why it failed.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
orgIdOrganization id (
org_…).fileIdFile id, as returned when the upload was created.
transcriptionIdA Video transcription job's id (
vtr_…).
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/video/files/{fileId}/transcriptions/{transcriptionId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
transcription: {
id: string
fileId: string
sequenceId: string
status: "queued" | "done" | "failed" | "running"
language: string
detected?: string
minutes: number
trackId?: string
cues?: number
error?: string
createdAt: number
}
}/ v1/ me/ video/ files/ :fileId/ proxiesThe project's finished proxies: each one's media item (mediaRef), name, type and size. Read a proxy through Office's GET …/office/files/:fileId/media/:mediaId.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
fileIdFile id, as returned when the upload was created.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl 'https://api.cactive.com.au/v1/me/video/files/{fileId}/proxies' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
proxies: {
mediaId: string
mediaRef: null | string
name: string
mime: string
size: number
createdAt: number
}[]
}/ v1/ me/ video/ files/ :fileId/ proxiesStarts an upload into the project in parts: a proxy of a media item (mediaRef, MP4 or WebM, up to video.proxyMb) or, with purpose: "audio", the mixdown to transcribe. Answers mediaId, partSize, partCount and links for the first parts. Editors only.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
fileIdFile id, as returned when the upload was created.
Request body
mediaRefstringUp to 64 characters.
namestringrequired1–255 characters.
sizeintegerrequired≥ 1.
mimestringrequiredUp to 100 characters.
purpose"proxy" | "audio"
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl -X POST 'https://api.cactive.com.au/v1/me/video/files/{fileId}/proxies' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example",
"size": 1,
"mime": "example"
}'Response 201
{
mediaId: string
uploadId: string
partSize: number
partCount: number
urls: {
[key: number]: string
}
expiresIn: number
}/ v1/ me/ video/ files/ :fileId/ proxies/ :mediaId/ partsLinks for more parts (parts, 1 to 100 part numbers).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
fileIdFile id, as returned when the upload was created.
mediaIdA picture's or other media's id in a document, spreadsheet, presentation or video project (
med_…): pictures, Video's proxies, its poster and transcription mixdowns.
Request body
partsinteger[]required1–100 items. Each 1–10000.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl -X POST 'https://api.cactive.com.au/v1/me/video/files/{fileId}/proxies/{mediaId}/parts' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"parts": [
1
]
}'Response 200
{
urls: {
[key: number]: string
}
expiresIn: number
}/ v1/ me/ video/ files/ :fileId/ proxies/ :mediaId/ completeFinishes the upload once every part is in; it then counts against the space's storage.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
fileIdFile id, as returned when the upload was created.
mediaIdA picture's or other media's id in a document, spreadsheet, presentation or video project (
med_…): pictures, Video's proxies, its poster and transcription mixdowns.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl -X POST 'https://api.cactive.com.au/v1/me/video/files/{fileId}/proxies/{mediaId}/complete' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
mediaId: string
size: number
mime: string
}/ v1/ me/ video/ files/ :fileId/ proxies/ :mediaIdDeletes a proxy, a mixdown or an unfinished upload of one, giving its storage back (when its media item leaves the project, or to make it again). Editors only.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
fileIdFile id, as returned when the upload was created.
mediaIdA picture's or other media's id in a document, spreadsheet, presentation or video project (
med_…): pictures, Video's proxies, its poster and transcription mixdowns.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl -X DELETE 'https://api.cactive.com.au/v1/me/video/files/{fileId}/proxies/{mediaId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
deleted: boolean
}/ v1/ me/ video/ files/ :fileId/ posterSaves the project's poster frame (the body: a WebP or JPEG of at most 1 MB). Drive's thumbnail of the project follows. Editors only.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
fileIdFile id, as returned when the upload was created.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.413Posters can be at most 1 MB.
curl -X PUT 'https://api.cactive.com.au/v1/me/video/files/{fileId}/poster' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
mediaId: string
size: number
mime: string
}/ v1/ me/ video/ files/ :fileId/ transcriptionsCaptions from speech: the uploaded mixdown (audioMediaId, duration in flicks) or one media item (source: "media", mediaId) into a new caption track of sequenceId from from, in language (or auto), with up to speakers voices told apart. 202 with the job; the track arrives in the project when it's done. Counts against your daily transcription minutes.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
fileIdFile id, as returned when the upload was created.
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl -X POST 'https://api.cactive.com.au/v1/me/video/files/{fileId}/transcriptions' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 202
{
transcription: {
id: string
fileId: string
sequenceId: string
status: "queued" | "done" | "failed" | "running"
language: string
detected?: string
minutes: number
trackId?: string
cues?: number
error?: string
createdAt: number
}
}/ v1/ me/ video/ files/ :fileId/ transcriptions/ :transcriptionIdA transcription job: status (running, done, failed), the caption track it made (trackId) and its cue count, or why it failed.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- drive:read
Path parameters
fileIdFile id, as returned when the upload was created.
transcriptionIdA Video transcription job's id (
vtr_…).
Errors
403Personal files are only for the person, signed in.403This key has no person behind it, so it can't open Drive files.403The person who made this key isn't in the organization any more.
curl 'https://api.cactive.com.au/v1/me/video/files/{fileId}/transcriptions/{transcriptionId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
transcription: {
id: string
fileId: string
sequenceId: string
status: "queued" | "done" | "failed" | "running"
language: string
detected?: string
minutes: number
trackId?: string
cues?: number
error?: string
createdAt: number
}
}/ v1/ video/ configVideo's limits (limits, from Admin → Limits), the export presets (presets, with the platform's changes) and what Transcribe offers (transcribe: whether it's on, its languages and the minutes allowed). People only.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Errors
403Video's settings are for people signed in.
curl 'https://api.cactive.com.au/v1/video/config' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
limits: {
"video.clipsPerProject": number
"video.tracksPerSequence": number
"video.mediaPerProject": number
"video.mediaGb": number
"video.proxyMb": number
"video.maxExportSide": number
"video.exportMinutes": number
"video.cacheGb": number
"video.historyStates": number
"video.transcribeMinutesPerDay": number
"video.transcribeMinutesPerJob": number
}
catalog: {
id: "video.clipsPerProject" | "video.tracksPerSequence" | "video.mediaPerProject" | "video.mediaGb" | "video.proxyMb" | "video.maxExportSide" | "video.exportMinutes" | "video.cacheGb" | "video.historyStates" | "video.transcribeMinutesPerDay" | "video.transcribeMinutesPerJob"
label: "History states" | "Clips per project" | "Tracks per sequence" | "Media items per project" | "Largest source file (GB)" | "Largest proxy (MB)" | "Largest export side (pixels)" | "Longest export (minutes)" | "Device cache, largest (GB)" | "Transcription per person per day (minutes)" | "Longest transcription (minutes)"
}[]
presets: {
id: string
label: string
description?: string
settings: {
container: "mp4" | "webm"
video: null | {
codec: "av1" | "avc" | "hevc" | "vp9"
width: number
height: number
frameRate: {
num: number
den: number
}
bitrate: number
bitrateMode: "variable" | "constant"
keyframeEvery: number
profile?: string
hardware: "no-preference" | "prefer-hardware" | "prefer-software"
}
audio: null | {
codec: "aac" | "opus"
sampleRate: 48000 | 44100
channels: 2 | 1
bitrate: number
}
timecodeOverlay?: boolean
loudness?: null | {
target: number
truePeak: number
}
}
}[]
transcribe: {
available: boolean
languages: [{
code: "en-AU"
label: "English (Australia)"
}, {
code: "en-US"
label: "English (US)"
}, {
code: "en-GB"
label: "English (UK)"
}, {
code: "en-NZ"
label: "English (New Zealand)"
}, {
code: "en-IN"
label: "English (India)"
}, {
code: "en-IE"
label: "English (Ireland)"
}, {
code: "en-ZA"
label: "English (South Africa)"
}, {
code: "zh-CN"
label: "Chinese (Simplified)"
}, {
code: "zh-TW"
label: "Chinese (Traditional)"
}, {
code: "zh-HK"
label: "Cantonese"
}, {
code: "es-ES"
label: "Spanish (Spain)"
}, {
code: "es-US"
label: "Spanish (US)"
}, {
code: "fr-FR"
label: "French (France)"
}, {
code: "fr-CA"
label: "French (Canada)"
}, {
code: "de-DE"
label: "German"
}, {
code: "it-IT"
label: "Italian"
}, {
code: "pt-BR"
label: "Portuguese (Brazil)"
}, {
code: "pt-PT"
label: "Portuguese (Portugal)"
}, {
code: "ja-JP"
label: "Japanese"
}, {
code: "ko-KR"
label: "Korean"
}, {
code: "hi-IN"
label: "Hindi"
}, {
code: "ar-SA"
label: "Arabic"
}, {
code: "ru-RU"
label: "Russian"
}, {
code: "nl-NL"
label: "Dutch"
}, {
code: "sv-SE"
label: "Swedish"
}, {
code: "da-DK"
label: "Danish"
}, {
code: "no-NO"
label: "Norwegian"
}, {
code: "fi-FI"
label: "Finnish"
}, {
code: "pl-PL"
label: "Polish"
}, {
code: "tr-TR"
label: "Turkish"
}, {
code: "el-GR"
label: "Greek"
}, {
code: "he-IL"
label: "Hebrew"
}, {
code: "id-ID"
label: "Indonesian"
}, {
code: "ms-MY"
label: "Malay"
}, {
code: "th-TH"
label: "Thai"
}, {
code: "vi-VN"
label: "Vietnamese"
}, {
code: "tl-PH"
label: "Filipino"
}, {
code: "uk-UA"
label: "Ukrainian"
}]
minutesPerDay: number
minutesPerJob: number
}
}