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 138 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: autocaptions: bold-centermusic: upliftingstyle: autoratio: 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 over the API. Requests take the stock voices only. Narration in your own cloned voice, a presenter lip-syncing the script — one of ours, or one made from your own photo — and UGC product ads are Pro and Studio features in the app, not gaps. Cloned voices and presenters from a photo are made in the app, not over the API.
  • Three minutes is the ceiling. targetSeconds is 30, 60, 90 or 180 — paid plans to 180. There is no long-form mode past that.
  • Credits run out. When they are spent, POST /api/v1/videos answers 402 insufficient_credits until the account picks a plan in the app — or 402 plan_required for an account with no plan.
  • 29 languages, spoken by the same 20 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 8 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.