Realtime Avatar

Batch render

Render a pre-recorded audio URL to a talking-head MP4 URL.

Render is the simplest way to produce avatar video: pass a public audio URL plus an avatar, and the platform downloads the audio, renders the whole clip in one pass, stores the MP4, and returns its URL. No model, no realtime stream — ideal for backend jobs, batch pipelines, and pre-rendered content.

Request

POST /api/v1/render

FieldRequiredDescription
audioUrlyesPublic URL of the speech audio to render.
avatarIdone ofAn avatar you created (ava_…).
portraitUrlone ofA portrait image to register on the fly.
backgroundIdnoBackground id (defaults to plain).

Provide either avatarId or portraitUrl.

Example

import { RealtimeAvatarClient } from "realtime-avatar";

const client = RealtimeAvatarClient.platform({
  apiKey: process.env.REALTIME_AVATAR_API_KEY!,
});

const { url } = await client.render({
  audioUrl: "https://example.com/speech.mp3",
  avatarId: "ava_…",
});

console.log(url); // public MP4 URL
from realtime_avatar import RealtimeAvatarClient

client = RealtimeAvatarClient(api_key="tic_live_...")

result = client.render(
    audio_url="https://example.com/speech.mp3",
    avatar_id="ava_...",
)
print(result.url, result.duration_seconds)
curl -X POST https://realtimeavatar.ai/api/v1/render \
  -H "Authorization: Bearer $REALTIME_AVATAR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"audioUrl":"https://example.com/speech.mp3","avatarId":"ava_..."}'

Response

{
  "url": "https://.../render/rnd_….mp4",
  "avatarId": "ava_…",
  "frames": 150,
  "fps": 25,
  "durationSeconds": 6.0
}

Tip

Rendering scales with clip length, so a render call can take several seconds. Keep request timeouts generous (the SDKs default to a long timeout) and run batches concurrently.

Render bills realtime seconds against your wallet, the same as streaming turns. See Credits and billing.

On this page