POST
/
api
/
v1
/
realtime
/
turn
Stream a realtime avatar turn
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: JSON.stringify({avatar_id: '<string>'})
};

fetch('https://realtimeavatar.ai/api/v1/realtime/turn', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
"<string>"

Authorizations

Authorization
string
header
required

TIC API key as a bearer token: Authorization: Bearer tic_live_... or tic_test_.... Create keys in the dashboard at /platform/dashboard or via POST /api/v1/api-keys.

Headers

Idempotency-Key
string

Unique key per turn attempt; reusing a key returns 409.

Maximum string length: 180

Body

application/json
avatar_id
string
required

Platform avatar id (ava_...).

mode
enum<string>
default:chat

chat generates a reply from messages; speak_text renders text verbatim.

Available options:
chat,
speak_text
messages
object[]
Maximum array length: 24
text
string | null

Text to speak when mode is speak_text.

Required string length: 1 - 4000
voice_id
string | null
Required string length: 8 - 120
emotion
string
default:curious
language
string
default:en
speed
number
default:1
background_id
string
default:plain_white
source_kind
enum<string>
default:portrait
Available options:
portrait,
source_video
video_cache_id
string | null
low_latency_first_chunk
boolean
default:false

Render the first 200ms chunk as soon as current audio exists.

playout_delay_ms
integer
default:520
Required range: 0 <= x <= 2000
max_buffer_delay_ms
integer
default:120
Required range: 0 <= x <= 5000

Response

Audio-clocked avatar mux stream

The response is of type file.