Veedio

Public API v1

Create videos programmatically

One endpoint, four workflows. Send a prompt, an idea, a script or an article URL, and Veedio writes the scenes, generates a visual for each one, narrates them, burns word-timed captions, ducks a music bed under the voice and renders the file. A generation costs 3 credits plus a charge per scene that follows what fills it: 2 for a still or stock footage, 13 for a scene the video model sets in motion. A 5-scene short is 13 credits with stills and 68 animated. You can get that quote for free before you spend anything.

Quick start

Your first video in three steps

1Create a key

Settings → API keys. The plaintext is shown once and only its hash is stored, so a lost key is minted again rather than recovered. It looks like vd_live_….

Header

Authorization: Bearer vd_live_...

# also accepted
x-api-key: vd_live_...
x-veedio-api-key: vd_live_...
key: vd_live_...

2Start a generation

202 Accepted comes back with an id, the credit deposit and a link to the video's page. The video itself does not exist yet.

Show this example as

3Get the result

Generation is asynchronous and takes a few minutes. Poll until status is ready or failed; videoUrl is the finished MP4, and scenes[] fills in as it goes, so you can show progress rather than a spinner.

cURL

curl https://www.veedio.co/api/v1/videos/8f1c0f2e-... \
  -H "Authorization: Bearer $VEEDIO_API_KEY"
  • Poll no more than once every few seconds. There is no completion webhook yet — it is the next thing planned for this surface, and until then polling is the whole story.
  • Quote before you spend: POST /api/v1/credits/estimate takes the same body as the create call and ignores the fields it does not use.

All four workflows at a glance

What each one needs, and what you can set on top of it. Every optional field has a default, so the minimal request is two lines.

Prompt to video

prompt-to-video

A brief. We write the script, generate the visuals and cut it.

requires source.text

Script to video

script-to-video

Your script, narrated close to verbatim. You control every sentence.

requires source.text

Idea to video

idea-to-video

A bare idea, expanded into an angle and then a script.

requires source.text

Article to video

article-to-video

A link, read and turned into a short: an article, a video, a post, a thread or a PDF.

requires source.url

Send nothing but a source and you get:voice: rachelcaptions: bold-centermusic: upliftingstyle: cinematicratio: 9:16

Before you build

What this API cannot do

Stated plainly, because finding out at integration time wastes a day.

  • No file uploads over the API. It takes text and URLs, not bytes — so no captioning footage you already have and no podcast repurposing. Links go further than that sounds: photoUrl makes a hosted image the opening frame, and a url source pointing at a PDF is read as a document, so photo-to-video and PDF-to-video work when the file is reachable. The app's own uploader turns a local JPEG, PNG, WebP or PDF into exactly that kind of link.
  • No face swap and no voice cloning. A presenter avatar lip-syncing the script is a Pro and Studio feature, not a gap.
  • Three minutes is the ceiling. targetSeconds is 30, 60, 90 or 180 — free accounts up to 60, paid plans to 180. There is no long-form mode past that.
  • 29 languages, spoken by the same five voices. Image prompts and stock searches stay in English whichever you pick, because the image models read English.
  • No 4K. Output is 1080-class, and there are four caption styles, all burned in — no subtitle file to download and no custom font.
  • Every frame is generated, or licensed stock where the deployment has a Pexels key. No gameplay library, and no character kept consistent across scenes.
  • No webhooks yet. Poll GET /api/v1/videos/{id}; a completion callback is the next thing planned for this surface.
  • No scheduling through the API yet. Auto-Mode schedules are created in the app.