On this page
VEED API
The VEED API gives you programmatic access to VEED's AI video models over a simple REST interface.
Models we currently offer
- Fabric 1.0 — turn an image + audio into a talking, lip-synced video
- Lipsync 2.0 — re-sync an existing video to a new audio track (dubbing / voice replacement)
Authentication
The VEED API uses API keys to authenticate requests. Every request must include your workspace API key, sent as a bearer token in the Authorization header.
You can create and manage keys from your dedicated workspace. Keep your API key secret — don't share it or expose it in any client-side code (browsers, mobile apps). Requests without a valid key are rejected.
How generation works
Every generation endpoint is asynchronous and follows the same two steps:
-
Submit a job —
POSTyour inputs. The API either:- accepts it →
202 Acceptedwith ajob_idand statusPROCESSING, or - rejects it →
401(missing/invalid key),422(invalid inputs),429(rate limited) or500(server error). No job is created.
- accepts it →
-
Poll for the result —
GET /v1/.../{job_id}returns200with the job's current state:PROCESSING— still renderingCOMPLETED— the result holds the rendered videoFAILED— the error holds a failure code (the job was accepted, but rendering failed)
A
GETfor an unknownjob_idreturns404.
Note the two kinds of failure: a submit can be rejected at the HTTP layer (no job created), while an accepted job can still end in FAILED during rendering — reported through GET, not as an HTTP error.
Media & output
Pass inputs (image, audio, video) as public http(s) URLs. Generated results are returned as MP4 video URLs.
Pricing
Usage-based, billed per second of output.
Error format
Every HTTP error carries the same JSON envelope, with a stable machine-readable code and a request id you can share with support:
{
"error": {
"code": "invalid_request",
"message": "audio_url must be an http(s) URL",
"request_id": "3f6f2b6e-8b1a-4b9e-9f0e-2f4a1c9d7e51",
"details": [
{
"type": "validation",
"field": "audio_url",
"message": "must match an http(s) URL"
}
]
}
}Possible error codes:
invalid_requestunauthenticatedpermission_deniednot_foundconflictrate_limitedunavailableinternalAll endpoints
/v1/fabric-1.0Submit a fabric-1.0 job/v1/fabric-1.0/{job_id}Get a fabric-1.0 job/v1/lipsync-2.0Submit a Lipsync 2.0 job/v1/lipsync-2.0/{job_id}Get a Lipsync 2.0 job/v1/video-background-removalSubmit a video background removal job/v1/video-background-removal/{job_id}Get a video background removal job/v1/video-background-removal-fastSubmit a video background removal (fast) job/v1/video-background-removal-fast/{job_id}Get a video background removal (fast) job/v1/video-background-removal-green-screenSubmit a video background removal (green screen) job/v1/video-background-removal-green-screen/{job_id}Get a video background removal (green screen) job