---
title: "Animate a still into a clip"
method: POST
path: "/v1/ai-media/clips"
tags: ["Studio"]
---

# Animate a still into a clip

`POST /v1/ai-media/clips`

## Request

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

A 4, 6 or 8 second clip from a still, with generated ambient sound (place it at volume 0 for none). Usually takes under a minute: poll GET /v1/ai-media/:id. Charged when it completes.

**Scope:** `studio:write`

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

## Request body

- object
  - `stillId` string: A completed still to animate (the usual path)
  - `imageUrl` string, uri: Or any image file in this workspace
  - `shot` object: Overrides the still's shot, field by field
    - `subject` string
    - `action` string
    - `setting` string
    - `framing` string
    - `camera` string
    - `lighting` string
  - `preset` 'documentary' | 'studio' | 'onSite' | 'cinematic' | 'isometric3d' | 'flat2d' | 'cartoon3d' | 'storybook' | 'claymation' | 'whiteboard' | 'classroom' | 'brand'
  - `aspectRatio` '16:9' | '9:16'
  - `durationSec` number: 4, 6 or 8 seconds. Default 6
  - `resolution` '720p' | '1080p': Default 720p
  - `studioProjectId` string

## Response `202`

Clip generating

## Other responses

- `400`: Validation error
- `401`: Invalid or missing credentials
- `402`: Not enough credits, or not on a paid plan
- `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)
