Or jump from this list on a smaller screen.

This is a page from the Audivra documentation. Developer exportsindex: http://127.0.0.1:3000/docs/llms.txt, full corpus: http://127.0.0.1:3000/docs/llms-full.txt, OpenAPI: http://127.0.0.1:3000/docs/openapi.json, Postman: http://127.0.0.1:3000/docs/postman.json. Press ⌘K to search docs.

Assets

Reusable media library — upload or register a URL, then pass asset_id into generate, dub, and batch.

POST
/api/v1/assets
Auth required

Multipart file or JSON { url, kind, name }. Returns asset_id and a fetch URL.

Parameters

NameTypeRequiredDescription
filefileNoMultipart field file (video, audio, or image)
urlstringNoPublic https URL (SSRF-checked)
kindstringNovideo · audio · image
namestringNoDisplay name

Request body

JSON
{ "url": "http://127.0.0.1:3000/api/docs/samples/example-video.mp4", "kind": "video", "name": "Presenter" }

Response

JSON
{
  "id": "a1b2c3d4",
  "kind": "video",
  "url": "/api/v1/assets/a1b2c3d4/file",
  "name": "Presenter"
}

Errors

StatusMeaning
400Unsupported media or unsafe URL
401Unauthorized

List, update, delete

GET /api/v1/assets lists your library. GET/PATCH/DELETE /api/v1/assets/{id} manage one record. GET /api/v1/assets/{id}/file streams bytes.

Upload then lipsync
curl -X POST http://127.0.0.1:3000/api/v1/assets \
  -H "Authorization: Bearer sk_live_…" \
  -F "file=@presenter.mp4" -F "kind=video"

curl -X POST http://127.0.0.1:3000/api/v1/generate \
  -H "Authorization: Bearer sk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"input":[{"type":"video","asset_id":"…"},{"type":"audio","url":"http://127.0.0.1:3000/api/docs/samples/example-audio.wav"}],"options":{"sync_mode":"cut_off"}}'

Generate · Media formats