> ## Documentation Index
> Fetch the complete documentation index at: https://docs.navtalk.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Generate digital human videos with the open Video Synthesis API using avatar IDs, uploaded files, or external media URLs

<Hero title="Video Synthesis API" subtitle="Submit asynchronous video composition tasks with avatar-based TTS, external audio, uploaded files, and full REST status polling" />

The **NavTalk Video Synthesis API** lets you create digital human videos through a public REST interface. You can submit a task with an avatar, image, or source video, then poll the task status and retrieve the finished video URL when processing completes.

## What This API Supports

<CardGroup cols={3}>
  <Card title="Three REST Endpoints" icon="arrows-rotate">
    Submit tasks with `POST /api/open/v1/video-compose/submit`, then use `GET /status` and `GET /list` for polling and task history.
  </Card>

  <Card title="Flexible Audio Input" icon="volume-high">
    Provide an uploaded audio file, a public audio URL, or plain text for TTS. Exactly one audio input method is required per task.
  </Card>

  <Card title="Flexible Character Input" icon="image">
    Provide an uploaded image or video, a public media URL, or a trained `avatarId`. Exactly one visual input method is required per task.
  </Card>

  <Card title="Avatar-Based TTS" icon="microphone-lines">
    When using `textContent`, the API reads the selected avatar's bound provider and voice automatically. OpenAI, ElevenLabs, and Cartesia are supported.
  </Card>

  <Card title="Asynchronous Workflow" icon="clock">
    Video generation runs as a background task. The submit endpoint returns a `taskId`, and you poll for `Processing`, `Published`, or `Fail`.
  </Card>

  <Card title="Public URLs in Responses" icon="link">
    The `/status` and `/list` responses return full public URLs for source audio, source video, thumbnails, and the final generated result.
  </Card>
</CardGroup>

## Authentication

This module uses the same authentication model as the other open APIs.

* Recommended: pass your API key through the `license` request header
* Compatible fallback: pass your API key as the `license` query parameter

## Input Rules

Each task must choose exactly one audio source and exactly one visual source.

### Audio source

* `audioFile`
* `audioUrl`
* `textContent`

### Visual source

* `characterFile`
* `characterUrl`
* `avatarId`

<Note>
  If you use `textContent`, `avatarId` is required. This is because the API needs the avatar's configured voice and provider to synthesize speech before video generation starts.
</Note>

## Recommended Usage

* Use `avatarId + textContent` when you want the cleanest TTS workflow and voice consistency.
* Use `audioFile + avatarId` when you already have recorded speech and want to lip-sync it to a trained avatar.
* Use `characterFile` or `characterUrl` for quick one-off synthesis without training an avatar first.

## Next Steps

* Start with the [Quick Start](/api/video-synthesis-api/quick-start)
* Review all request and response fields in the [API Reference](/api-reference/endpoint/navtalk/video-compose-submit)
* Learn how avatar-bound TTS works in [Avatar Voice and TTS Providers](/api/video-synthesis-api/voice-styles)
