---
title: "Create a video from a document"
method: POST
path: "/v1/videos/from-document"
tags: ["Videos"]
---

# Create a video from a document

`POST /v1/videos/from-document`

## Request

- Base URL: `https://api.vidocu.ai`
- URL: `https://api.vidocu.ai/v1/videos/from-document`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://vidocu.ai/oauth/authorize`, token URL `https://api.vidocu.ai/oauth/token`)

One video straight from a document (PDF, DOCX, PPTX, Keynote, TXT): read, planned, storyboarded and built into editable slides with narration. Optional pace and AI video (Business and Enterprise). Returns the videoId at once; poll the job.

**Scope:** `videos:write`

**Role permission:** `canCreate` (OAuth only — API keys carry full workspace permissions)

## Request body

- object
  - `fileUrl` string, uri, required
  - `filename` string, required
  - `instructions` string
  - `language` string
  - `projectId` string
  - `pace` 'snackable' | 'course' | 'inDepth'
  - `aiVideo` object
    - `enabled` boolean, required
    - `stylePresetId` string

## Response `202`

Started: { jobId, videoId }; poll GET /v1/jobs/:id

## Other responses

- `400`: Validation error
- `401`: Invalid or missing credentials
- `403`: Missing scope (`insufficient_scope`), insufficient role (`insufficient_role`), or quota exhausted (`limit_exceeded`)
- `429`: Rate limit exceeded (60 req/min)
- `500`: Server error

---

[API](https://skmtc.dev/vidocu/apis/vidocu-api.md) · [All operations](https://skmtc.dev/vidocu/apis/vidocu-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vidocu/apis/vidocu-api/revisions/cc813d2ca5d2?raw)
