---
title: "Make a faceless video from an idea or a script"
method: POST
path: "/videos/from-words"
---

# Make a faceless video from an idea or a script

`POST /videos/from-words`

## Request

- Base URL: `https://clypmint.com/api/v1`
- URL: `https://clypmint.com/api/v1/videos/from-words`
- Auth: HTTP bearer

Make a faceless video from an idea (Clypmint writes the narration) or an exact script, with no footage. 15, 30 or 60 seconds; formats, voice, style_id, sound_effects and instructions optional. dry_run: true answers the cost. Cost: About 4 credits for 30 seconds (3 + 1 a minute, + 3 per extra format). Same as the MCP tool create_video.

## Request body

- object
  - `script` string
  - `idea` string
  - `seconds` union: How long: 15, 30 or 60. With a script, leave it out: the script sets the length (about 2.5 words a second; at most 43 words for 15, 86 for 30, 172 for 60).
    - 15
    - 30
    - 60
  - `operation_id` string, required
  - `title` string
  - `instructions` string: Anything else the user asked for, in their own words: where each picture goes, the tone. Length, narrator, pictures and shapes go in their own fields. No rule lists. A link written here is not opened: import a picture first with import_asset.
  - `style_id` string
  - `format` 'vertical' | 'horizontal'
  - `asset_ids` string[]
  - `asset_staging_keys` string[]: Pictures the user wants shown (a portrait, a product shot, an app screen): import each with import_asset (its url) and list the keys here.
  - `purpose` 'organic' | 'ad' | 'youtube' | 'sales_page': organic (a post), ad (three openings by default), youtube (horizontal), sales_page.
  - `formats` string[]: Every shape to make, the main one first: 9:16, 16:9, 1:1, 4:5.
  - `voice` 'matilda' | 'sarah' | 'jessica' | 'alice' | 'liam' | 'chris' | 'brian' | 'george' | 'roger' | 'laura' | 'charlie' | 'river' | 'will' | 'eric' | 'bella' | 'daniel' | 'lily' | 'bill' | 'adam' | 'callum' | 'harry': The narrator for a video made from words: matilda, sarah, jessica, alice, liam, chris, brian, george, roger, laura, charlie, river, will, eric, bella, daniel, lily, bill, adam, callum, harry (sarah: calm, reassuring, health and money; alice: a clear British educator; brian: deep documentary; liam: energetic ads). Leave out to let Clypmint pick one that fits the words. "Voice: <name>" in instructions does the same.
  - `sound_effects` boolean
  - `music_staging_key` string: A song from import_asset (mp3, wav or m4a) to lay under the voice.
  - `style_version` integer
  - `dry_run` boolean: true: answer the credit cost and start nothing.
  - `music_bed` boolean: true: lay the style's own music bed under the narration (none unless asked); false: never. music_staging_key brings a song of your own instead.

## Response `200`

Make a faceless video from an idea or a script

- Result: The tool result, as the MCP tool of the same name returns it.

## Other responses

- `400`: The request is invalid. The message names each field to fix.
- `401`: A valid bearer token (API key or OAuth access token) is required.
- `402`: This account has no allowance left for this, or does not include it. error.checkout_url is where to add it.
- `403`: This needs publishing permission (scope clypmint.publish), or is not open on this account yet.
- `404`: The video, upload, memory or calendar was not found in this account.
- `409`: Busy: an upload or edit is already running, the video changed, or too many upload links are waiting.
- `413`: The request body is too large.
- `422`: Clypmint could not apply it as asked; error.problems names each part.
- `429`: A daily limit was reached (direct edits, caption fixes, upload links).
- `501`: This is not available on Clypmint yet; the message says what to use instead.
- `503`: Clypmint is busy. Try again in a moment.

---

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