Videos
Manage your videos, ask questions, and build applications with the Platform API. Explore the operations below for request details, responses, and examples.
No matching documentation. Try a different search.
Videos
Upload, process, and manage video files within a project.
GET/api/v1/projects/:projectId/videosList videos
List videos
Send the request to https://platform.endlessai.com/api/v1/projects/:projectId/videos using your project key or user token.
POST/api/v1/projects/:projectId/videos/uploadUpload video file
Upload video file
Multipart form-data. Field name: video. Max size: 1GB.
curl -X POST https://platform.endlessai.com/api/v1/projects/PROJECT_ID/videos/upload \
-H "X-Api-Key: YOUR_KEY" \
-F "video=@/path/to/video.mp4"import requests
with open("video.mp4", "rb") as f:
resp = requests.post(
f"{BASE}/projects/{PROJECT_ID}/videos/upload",
headers={"X-Api-Key": API_KEY},
files={"video": ("video.mp4", f, "video/mp4")},
)
print(resp.json())import { openAsBlob } from "node:fs";
const form = new FormData();
form.append("video", await openAsBlob("video.mp4", { type: "video/mp4" }));
const res = await fetch(
`${BASE}/projects/${projectId}/videos/upload`,
{ method: "POST", headers: { "X-Api-Key": API_KEY }, body: form }
);
console.log(await res.json());POST/api/v1/projects/:projectId/videos/upload-from-urlImport video from URL
Import video from URL
Downloads the video in the background. Returns 202 Accepted.
{ "url": "https://example.com/video.mp4", "name": "Remote Video" }GET/api/v1/projects/:projectId/videos/:videoIdGet video details
Get video details
Send the request to https://platform.endlessai.com/api/v1/projects/:projectId/videos/:videoId using your project key or user token.
PUT/api/v1/projects/:projectId/videos/:videoIdUpdate video metadata
Update video metadata
Send the request to https://platform.endlessai.com/api/v1/projects/:projectId/videos/:videoId using your project key or user token.
DELETE/api/v1/projects/:projectId/videos/:videoIdDelete video
Delete video
Send the request to https://platform.endlessai.com/api/v1/projects/:projectId/videos/:videoId using your project key or user token.
GET/api/v1/projects/:projectId/videos/:videoId/statusGet processing status
Get processing status
Poll this endpoint until status is completed.
{
"videoId": "VIDEO_ID",
"status": "completed",
"includeInQA": true
}POST/api/v1/projects/:projectId/videos/:videoId/processBetaProcess a video
Process a video
Beta: this operation may change before it is final.
Queues analysis using the project's processing settings. Poll the video status for completion.
GET/api/v1/projects/:projectId/videos/:videoId/progressPoll processing progress
Poll processing progress
Send the request to https://platform.endlessai.com/api/v1/projects/:projectId/videos/:videoId/progress using your project key or user token.
GET/api/v1/projects/:projectId/videos/:videoId/summaryGet video summary
Get video summary
Returns the video's summary. Use .../smart-scan/summary for its Overview scan summary.
GET/api/v1/projects/:projectId/videos/:videoId/thumbnailGet thumbnail URL
Get thumbnail URL
Send the request to https://platform.endlessai.com/api/v1/projects/:projectId/videos/:videoId/thumbnail using your project key or user token.
POST/api/v1/projects/:projectId/videos/:videoId/reprocessReprocess with specific tasks
Reprocess with specific tasks
Call processing-capabilities first to find the tasks available for this video.
{ "tasks": ["generate_summary"] }POST/api/v1/projects/:projectId/videosRegister a video by name or URL
Register a video by name or URL
Creates the video record without starting processing. To import and process a video from a URL, use upload-from-url. Send name or url. Returns 201. Needs write access.
{ "name": "Gate camera 2026-10-01", "url": "https://example.com/gate.mp4" }GET/api/v1/projects/:projectId/videos/:videoId/transcode/estimateCheck whether a video needs converting for playback
Check whether a video needs converting for playback
needed is true when converting would let the video play in every supported browser. Conversion does not use tokens.
{
"video_id": "VIDEO_ID",
"needed": true,
"verdict": "needs_transcode",
"in_progress": false,
"billed": false,
"estimate": { "duration_sec": 1740, "minutes": 29, "resolution_factor": 1 }
}POST/api/v1/projects/:projectId/videos/:videoId/transcodeConvert a video for playback
Convert a video for playback
Queues the conversion and returns 202; follow progress through the video status. 409 when there is nothing to convert or a conversion is already running. Needs write access.
// Response (202 Accepted)
{ "queued": true, "billed": false, "estimate": { "duration_sec": 1740, "minutes": 29, "resolution_factor": 1 } }