Skip to main content
GET
/
v1
/
video
/
{videoId}
curl -X GET "https://api.slidevid.ai/v1/video/vid_abc123" \
  -H "x-api-key: your_api_key_here"
{
  "id": "vid_abc123",
  "name": "Product Tutorial",
  "status": "COMPLETED",
  "url": "https://signed-s3-url.example.com/videos/vid_abc123.mp4",
  "durationInFrames": 6250,
  "projectId": "proj_class_001",
  "teamId": "team_xyz789",
  "thumbnail": "https://cdn.slidevid.ai/thumbnails/vid_abc123.jpg",
  "size": 15728640,
  "progress": 100,
  "message": "Video ready",
  "createdAt": "2024-01-15T10:00:00Z",
  "updatedAt": "2024-01-15T10:05:00Z"
}

Overview

This endpoint returns detailed information about a specific video. Use it to get the current status, download URL, duration, and other metadata for a video you’ve created.
The download URL (in the url field) is only available when the video status is COMPLETED. For processing videos, check back later or use polling with this endpoint.

Path Parameters

videoId
string
required
The ID of the video to retrieve details for
curl -X GET "https://api.slidevid.ai/v1/video/vid_abc123" \
  -H "x-api-key: your_api_key_here"
{
  "id": "vid_abc123",
  "name": "Product Tutorial",
  "status": "COMPLETED",
  "url": "https://signed-s3-url.example.com/videos/vid_abc123.mp4",
  "durationInFrames": 6250,
  "projectId": "proj_class_001",
  "teamId": "team_xyz789",
  "thumbnail": "https://cdn.slidevid.ai/thumbnails/vid_abc123.jpg",
  "size": 15728640,
  "progress": 100,
  "message": "Video ready",
  "createdAt": "2024-01-15T10:00:00Z",
  "updatedAt": "2024-01-15T10:05:00Z"
}

Response Fields

Polling for Video Completion

To wait for a video to complete, you can poll this endpoint:
Polling Example
async function waitForVideoCompletion(videoId, maxWaitTime = 600000) {
  const pollInterval = 5000; // 5 seconds
  const startTime = Date.now();

  while (Date.now() - startTime < maxWaitTime) {
    const response = await fetch(
      `https://api.slidevid.ai/v1/video/${videoId}`,
      { headers: { 'x-api-key': API_KEY } }
    );
    const video = await response.json();

    console.log(`Status: ${video.status} (${video.progress}%)`);

    if (video.status === 'COMPLETED') {
      console.log(`Video ready! Download at: ${video.url}`);
      return video;
    }

    if (video.status === 'FAILED') {
      throw new Error(`Video failed: ${video.message}`);
    }

    // Wait before next poll
    await new Promise(resolve => setTimeout(resolve, pollInterval));
  }

  throw new Error('Video generation timeout');
}

const video = await waitForVideoCompletion('vid_abc123');

Duration Calculation

Videos are rendered at 25 frames per second (fps). To calculate duration in seconds:
durationInSeconds = durationInFrames / 25
For example:
  • 6250 frames ÷ 25 fps = 250 seconds (4:10 minutes)
  • 3750 frames ÷ 25 fps = 150 seconds (2:30 minutes)

Error Responses

The video ID doesn’t exist or belongs to a different team
The video doesn’t belong to your team

Use Cases

Check Processing Status

Monitor video generation progress

Download Completed Video

Get the signed download URL when ready

Get Video Metadata

Retrieve duration, size, and other details

Integration

Integrate video generation into your workflow

Authorizations

x-api-key
string
header
required

Path Parameters

videoId
string
required

Video ID

Response

Video details retrieved successfully

id
string

Unique video identifier

name
string

Video name/title

status
enum<string>

Current video processing status

Available options:
STARTED,
COMPLETED,
FAILED
url
string

Signed URL to download the video (only available when status is COMPLETED)

durationInFrames
integer

Duration of the video in frames (at 25fps)

durationInSeconds
number

Duration of the video in seconds (calculated from durationInFrames)

projectId
string | null

Associated project ID if video belongs to a project

teamId
string

Team ID that owns this video

thumbnail
string | null

URL to video thumbnail image

size
integer

Video file size in bytes

progress
integer

Processing progress percentage (0-100)

Required range: 0 <= x <= 100
message
string | null

Status message or error details

createdAt
string<date-time>

Video creation timestamp

updatedAt
string<date-time>

Last update timestamp