UGC video, made by your agent.

Clipwright turns your script into a talking actor who says it. The clip comes back with no watermark. Vertical 1080 by 1920 by default, and other resolutions on request. Call it from MCP, the CLI, or REST.

Confirm your email and your account opens right away, with no credits on it: buy a pack of credits to render.

$ clipwright make --script "This clip began as a few lines of text…" --voice george
state: scripting
state: tts
state: avatar
…
state: uploading
…
state: succeeded
warning: voice track was recovered from an earlier paid generation of the same
  script, not synthesized again
warning: vendor returned 14.8s where 14.7428s was expected
https://…/runs/run_e9a37554646047709048236602c214a9/final.mp4?…

This is the run that produced the clip. Where you see an ellipsis, output was cut; nothing was added.

This frame is 9:16, the default shape of a Clipwright clip.

From a still photo to a clip

The pipeline goes from script to voice, then to a talking actor, then to a rendered clip.

A man facing the camera with his mouth closed.
The still photo we sent to the avatar backend.
The same man mid-sentence, mouth open, speaking.
The seventh second of the clip that came back.

Three ways to call it

A run that finishes reports succeeded or failed: those are the only two terminal states we recognise.

Add the Clipwright MCP server to your client, then ask the agent to call make_ugc.

@clipwright/mcp-server

The beta answers at https://api.clipwright.io. The clients we publish ship with the same address.

Script limits by speech model: eleven_v3: 5000 characters; eleven_flash_v2_5: 10000 characters; eleven_turbo_v2_5: 10000 characters. Count includes spaces, audio tags and stress marks; emoji may count as two characters. There is no word-count limit. Duration and price are estimates until measured.

What we do differently

Three decisions that make the service predictable for something that isn't watching.

No publishing

Never a post

There is no platform vendor in the code, and every public surface is pinned by name: commands, SDK methods, dashboard actions. Adding one is a decision, not an accident.

Unmet params

Nothing you asked for is dropped in silence.

A parameter we accept but cannot honor comes back in the warnings list, on the same run.

Refusals

Requests we cannot serve are refused at the door.

Before a paid vendor call, so a refusal never costs you credits.

What a run costs you

Four outcomes, and two of them cost you nothing.

  1. The run finished

    You pay for the length of the finished video, rounded up to the next whole second.

  2. It failed before the video was ordered

    You pay nothing. Work we bought along the way, like the voice track, is ours to cover.

  3. It failed after the vendor took on the video

    You pay for the run. We charge the measured length when we have it, and an estimate from your script when the failure took the measurement with it.

  4. We stopped it, lost the paid file, or owed the vendor

    You pay nothing, even if the vendor billed us.

Actors, voices, and your clips

Your agent chooses the face and the voice before a run starts, and finished clips stay on a page of their own.

The actor
Your agent lists the actor library and passes an actor_id to the run. It can send a photo of its own instead, or call create_actor, which builds an actor for the account from a written description; later runs use it by actor_id like any other.
The voice
The catalog holds 303 voices across 31 languages, filtered by language, gender, age and use case. Each one links to a sample of itself, so your agent can hear it before spending a credit.
Your clips
Finished videos of your account live on one page as a still frame from the delivered file, with the length of the clip and the day it finished. A tile with a frame plays the video itself.

Not supported in this beta

Two lists. The first is refused outright, before any paid vendor is called, so it never costs you anything. The second is accepted and comes back named in the warnings list, so you know exactly what we changed.

Refused before anything is charged

  • saved characters
  • b-roll
  • webhooks

Accepted, then reported back as not honored

  • person field on make_ugc
  • actor name
  • look
  • captions
  • caption style

Clipwright does not publish anywhere. The run carries a file link once it is ready.

How long it takes

Rendering is asynchronous. You get a run id right away and poll it until the run succeeds or fails. The run carries the video link once the file is ready.

  1. 01

    An identifier comes back

    Creating a run answers with an identifier.

  2. 02

    Succeeded or failed

    A run that finishes reports succeeded or failed. Those two are the whole terminal vocabulary.

  3. 03

    The link arrives with the run, once the file is ready

    The run response includes the video link when it is ready. The link is signed and expires; the quickstart names the window.

Confirm your email and your account opens right away, with no credits on it: buy a pack of credits to render.

Create an account