AvaClone

Changelog

What changed and when. Breaking changes to the API or widget get 30 days' notice here first.

A quicker start, and a simpler wait

17 October 2026

  • Starting a conversation when no GPU is warm now takes about 20 seconds, down from about three minutes. The widget, the hosted page and Test it live show the AvaClone emblem animating over the picture with "Connecting…" until the avatar is live, instead of a timer and an estimate. On plans without our branding the widget shows a plain spinner.

Agents know the date and time; conversations in your own time zone

17 October 2026

  • Ask any agent the time, the day, the date, the month or the year and it answers for where the visitor is: the widget and the hosted page pass along the browser's time zone (never a location). Your own app can do the same with timezone on POST /sessions; without one the agent answers in UTC and says so.
  • Conversations, the Overview and other dates in the dashboard now show in your own time zone. They were shown in UTC, so a conversation at 12:52 PM in New York read 4:52 PM.
  • A greeting nobody answered is no longer kept: a conversation is saved only once the visitor says or types something, and the greeting-only ones already saved have been removed.

Agents remember the conversation when a visitor comes back to it

17 October 2026

  • When the quiet cut-off ends a conversation and the visitor presses Resume Conversation, or closes the panel and opens it again, or reloads the page in the same tab, the agent now remembers what was said and carries on from there. Before, it started over and gave its first greeting again.
  • Agents, Persona: a new Return Greeting under Greeting, what the agent says when a visitor picks a conversation back up. Left blank, an English agent says "Welcome back! What else can I help you with?". It goes live with the next publish.
  • API: charter.return_greeting; POST /sessions takes resume_session_id (an earlier session with the same agent from the last 24 hours) and /sessions/from-embed takes resume; a new session reports resumed_from.

Remove the widget from a single-page site

17 October 2026

  • window.AvaCloneWidget.destroy() turns off the microphone and camera, ends the conversation and takes the widget off the page. Call it when a React, Vue or Next.js route the widget sits on goes away, so a visitor who clicks elsewhere mid-conversation is no longer heard or billed.

Clearer microphone and camera buttons in the widget

17 October 2026

  • In the embed and on the hosted agent page, the microphone, camera and send buttons are now white icons on Signal Blue (or your accent colour) instead of emoji.
  • While the microphone is on it turns red and pulses gently, so a visitor can always tell they are being heard. Click it again to stop.
  • The camera button moved to the top left of the picture, clear of the captions; hovering it reads Turn on camera. Once the camera is on, the visitor's own camera takes that spot: hovering it reads Turn off camera, and a click turns it off.
  • What the visitor says shows briefly on the picture in white on Signal Blue (or your accent colour), then gives way to the avatar's answer as it starts.

Studio: make face after face, and see the prompt behind each one

17 October 2026

  • The Studio now opens on a new face: a large box to describe it, with candidates, model and quality, instead of the last image you made. Create New Face, at the top of your images, brings the form back at any time.
  • Start from a photo by dropping it on the form, or click there to browse. Uploads are still free.
  • Click an image you made from words and its prompt shows under it; an edited image shows the original prompt and the edit. Use this prompt opens the form with those words, ready to tweak for a similar face. Images made before today show their prompts too.
  • After generating several candidates, all of them sit under the chosen one so you can compare and switch.
  • API: images carry prompt, the generate prompt or the edit instruction (null for uploads, styles and backgrounds).

Avatars are no longer cropped automatically

17 October 2026

  • New avatars are built from the photo as you framed it: the whole person, not a crop around the face. A full figure, a wide composition or an experiment stays as it is.
  • When the face would come out small that way, the avatar's page now says "Your avatar might look better with a crop." Crop to the face rebuilds it cropped, free; Keep it as it is hides the notice. You can switch either way any time from the Build panel.
  • API: POST /avatars takes framing (head_and_shoulders, the default, or portrait to crop to the face), POST /avatars/:id/rebuild takes { framing } to switch, and photo_check.crop_suggested says when the crop would likely look better. A rebuild without framing now keeps the avatar's framing instead of cropping.

A display name for your agent, and renaming avatars

17 October 2026

  • Agents, Persona: a new Display name, the name visitors see above the face in the widget and on the hosted page, and the name your agent gives when it introduces itself or is asked. Your agent's own name (say, "Front desk") stays your label in the dashboard. Left blank, visitors see the agent's name, as before. It goes live with the next publish.
  • Avatars: click an avatar's name at the top of its page to rename it. Enter saves, Escape cancels. The new name shows everywhere you pick or see that avatar, including the Avatar list on an agent's Persona tab.
  • API: agents take display_name (null or blank uses name). The widget's session start returns it as agent_name, and the realtime session message carries it as agent.

Choose the language your visitors speak

17 October 2026

  • Agents, Persona: a new Language setting, English by default, with Spanish, French, Portuguese, German, Chinese, Korean, Japanese and more. Your agent stays multilingual: a visitor who speaks another language is still understood and answered in it. The setting tells speech recognition what to expect and which language the agent answers in.
  • Fewer mix-ups from background sound: a quick "yeah" or a TV in the background was sometimes heard as a line of Korean or Chinese, and the agent could switch languages to answer it. A single short line like that is now ignored, and the agent doesn't switch languages on a stray phrase.
  • Conversations: each question now always shows above its answer.
  • API: agents take language (an ISO 639-1 code such as en or es; en by default).

The build timer no longer restarts

16 October 2026

  • While an avatar builds or rebuilds, its page counts the time since the build actually started. Leaving the page and coming back used to restart the count at 0s, which looked as if the build had started over. Past a minute it now reads in minutes and seconds.

Video scenes: describe your own, and choose the blur

16 October 2026

  • New video, A new scene: besides the six stock scenes you can now describe your own ("a calm yoga studio with plants and morning light"), up to 300 characters. People, animals, text and logos are left out. It costs the same as a stock scene, once per scene and frame, and the same words reuse it.
  • Choose how soft the scene is behind the avatar: Blurred (as before), Light blur or No blur. The scene is now painted sharp and the blur added when the video renders, so trying another blur on the same scene is free. Scenes painted before today came out blurred and are not reused; the first video with a scene paints it again.
  • API: POST /videos takes background.prompt (with scene: "custom") and background.blur (blurred, light or none; blurred by default). The video's background echoes both.

Delivery cues in the video script

16 October 2026

  • New video: above the script, a row of delivery cues ([laughs], [short pause], [warmly] and the rest) goes in where the cursor is with one click. The voice performs a cue rather than reading it, and the length estimate leaves cues out. On the Pro plan and above; on other plans the row shows the cues greyed out.

Agents know they have a face; banned words get a fixed reply

16 October 2026

  • Every agent now follows a short set of AvaClone rules that come before your own instructions. It knows it is an animated face the visitor can see: asked to smile, it says yes instead of claiming it has no face. Asked whether it is a person, it always says it is an AI, even if its instructions give it a human name. Requests for sexual, hateful, violent or illegal content, and attempts to make it ignore or reveal its instructions, get "Sorry, I can't help with that."
  • Banned words: when a visitor says or types a word on our banned list, the agent answers "Sorry, I can't help with that." straight away, and the message is never sent to the AI model. You still see the exchange in Conversations.

Conversation ended, with Resume Conversation

16 October 2026

  • When a conversation ends (after a quiet spell, when every line is busy, or when the connection drops) the widget and the hosted page now say so, "Conversation ended" with the reason, and offer Resume Conversation, which starts a new conversation at once. They used to show "Reconnecting…" and never get back, because a conversation's connection can be used only once. The chat so far stays on the page.
  • SDK 0.1.5: a new ended event ({ code, reason, why }) fires once when a session is over; the SDK no longer redials a closed session. Open a new session and mount a new avatar to carry on.

Agents no longer cut visitors off mid-sentence

16 October 2026

  • An agent now judges from what a visitor said whether they have finished, not only from a pause. "So I was wondering if…" followed by a pause is heard as unfinished, so the agent waits instead of answering half a question. In our tests every mid-sentence pause used to split the visitor's turn; now none did. Complete sentences are answered as fast as before, about 1.2 seconds after the last word; a sentence that trails off waits up to about 3 seconds.

A more expressive voice: ElevenLabs v4 Turbo and audio tags

16 October 2026

  • Every voice now speaks with ElevenLabs v4 Turbo, its realtime model: the first sound arrives as fast as before (about 175 ms from ElevenLabs, measured), it speaks 90+ languages, and it can perform delivery cues. Same price per minute.
  • Expressive voice, on the Pro plan and above: hosted agents use those cues when the moment calls for one, such as a chuckle when a visitor makes a joke, a sympathetic tone for an apology or a warm one for thanks. Plain questions get plain answers. The cue follows what is being said, never a guess about how the visitor feels, and always the tone you set on the Persona tab: a gruff or serious agent does not laugh and seldom uses a cue at all. It is on for every agent on Pro and above, existing ones included, and switches on by itself when an organization moves up to Pro; turn it off per agent on the Behavior tab.
  • You choose which cues an agent may use: untick any on the Behavior tab, or set voice_cues on PATCH /agents/:id. The voice drops any other, even if the model writes it. Turning expressive_voice on below Pro returns 403 plan.required.
  • On Pro and above your own text can carry them too, on stream sessions (sendText) and in video scripts: [laughs] [chuckles] [sighs] [exhales] [clears throat] [short pause] [long pause] [warmly] [softly] [happy] [excited] [curious] [thoughtful] [surprised] [sympathetic] [reassuring]. Put the cue just before the words it colours. Any other bracketed text, and every cue below Pro, is dropped rather than read aloud, and captions and transcripts never show cues.

Steadier skin colour in idle loops; no doubled blinks while speaking

16 October 2026

  • Idle loops hold the skin's colour still. The model makes the loop about a second at a time, and the skin's colour drifted from one second to the next: every few seconds the skin turned slightly cooler, which on a pale or bald head looked like green light passing over it. Each frame's colour is now pulled back to the loop's own average, without changing its brightness or detail. The step that evens out the loop's brightness also left faint green and pink blotches on light skin where the head moved against the green screen; it now measures the person alone and changes brightness only. The live stream never had either problem. Idle loops are being re-made, nothing to do.
  • Blinks are no longer added while an avatar speaks. The model already blinks naturally as it talks, about 18 times a minute, so the blinks we added sometimes landed right after one of its own and looked like a double blink. Added blinks now appear only while the avatar is listening or idle, and in a video's silent start and end.

No outline round a cut-out avatar

16 October 2026

  • An avatar shown over its photo's background no longer has a thin outline round the head, hair and shoulders: light against a pale backdrop, grey or reddish against a dark one. The keyer, which turns the avatar's green screen into transparency, made the outer half of every edge too see-through and the inner half too solid, and coloured those pixels wrongly. Along the edge it now measures how much of each pixel is the person, against the green right there and the person right there, and gives the edge the person's own colour, also just past the edge so the stream's compression has nothing dark to blend in. Measured on the model's own frames: the edge's first pixel was up to 48 levels lighter than it should be over a pale backdrop, now within about 10, and within 2 over a dark one. Fine hair stays free of green. Live sessions, idle loops and videos; idle loops are being re-made, nothing to do.

Every video renders on the Pro model

16 October 2026

  • Videos now render on the Pro model whatever the avatar's live tier: a finer image model, so sharper eyes, lips and teeth. One price for every video: 60 tokens a minute of finished video (it was 30 on Standard avatars), plus 5 with Face Restore, by the second, charged when the video is ready and never on failure. GET /organization returns video_tokens_per_minute.
  • A render takes about one and a half times the video's length (the Pro model is slower than realtime), plus a few minutes when the engine starts cold. Videos render one at a time: a new one waits in queued while another finishes, instead of failing. Live conversations are unchanged and stay on the realtime model.

Lips close after an answer, natural blinks, no green in fine hair, no flash of the idle loop

16 October 2026

  • Framing keeps the body centred and the photo's own composition. It centred on the face alone, so a head sitting a little off the shoulders' axis pushed the body to one side, and it cropped some photos tighter than they were shot (padding above the head). The square is now centred between the face and the shoulders, the face takes about 36 % of the width (it was 42 %), a photo already framed head-and-shoulders is kept as shot, and the square stays inside the photo. Rebuild an avatar (free) to apply it.
  • Blinks look like blinks. They used to stop halfway and hang for a moment, dissolving into a soft, half-shut picture of the eyes. Now the avatar's own upper lid comes all the way down and opens again with a real blink's rhythm (fast down, soft landing), the brow dips a hair and the cheek lifts a touch, and nothing is drawn on: every face keeps its own lashes. When: more often while the avatar speaks (about 20 a minute, sometimes as a phrase ends) and less while it listens (about 12), at irregular moments, with the odd partial or double blink, never on a beat. With Face Restore on, the blink is drawn after the restore, on the sharpened eye.
  • After an answer the lips used to part further for a couple of seconds, teeth showing, before closing: the model has no notion of closing the mouth, and silence after a word that ended mid-vowel left it open. A short, quiet closed-lips hum now follows every stretch of speech, live and in videos, and the mouth settles shut the way a person's does (measured: 57 of 100 frames open after an answer before, none after).
  • Fine hair no longer shows green glints against the background: the keyer holds back the key colour along the hair's edge, where strands are part plate, and everywhere else no longer lets it outrun the other colours.
  • Face Restore keeps every colour of the frame and only sharpens brightness detail, so lips no longer pick up orange or red edges and the light on the face no longer shifts as the mouth moves.
  • SDK 0.1.4: on a live session a late frame no longer switches the picture to the idle loop for a moment (a different head position and light) and back; the last frame stays on screen until the next arrives.

Face Restore without the jerks or the shimmer; every idle loop restored

15 October 2026

  • With Face Restore on, an idle avatar jerked: the head froze for a quarter of a second every second and jumped on, and the first words of an answer arrived late. A restored chunk takes longer to make (about 0.7 s instead of 0.4 s) and the stream only kept 0.45 s of video ahead of the viewer, so it ran dry. The lead now follows how long chunks really take, and idle video still being finished is dropped the moment an answer starts.
  • Face Restore no longer jitters. The restored eyes and lips shimmered at rest and jumped when speech began, because the face's alignment followed noisy keypoints and the moving mouth. The alignment now holds still unless the head really moves, uses the eyes and nose only, and the restored detail is carried over where the face is still. Frame-to-frame change at rest went from up to 80 % above the unrestored stream to within 3 %; speech stays as crisp.
  • Every idle loop is now made with Face Restore, free, whether or not the avatar has it on for live sessions: the first thing a visitor sees, before the stream is live, is the sharpest. GET /avatars/:id gains idle_restored. Loops of avatars built before today are being re-made.

Sharper faces: portrait framing, the photo check and Face Restore

15 October 2026

  • New avatars are framed on the face: the engine centres it and sizes it to about 40 % of the picture, where it used to fit the whole person (about 30 %). The eyes, lips and teeth get roughly twice the pixels and come out sharper. Free, nothing to do; GET /avatars/:id says framing: portrait. Avatars built before today say head_and_shoulders, and a free rebuild (the dashboard offers it on the avatar's page) reframes them.
  • Every photo is checked before the build, free. No face or more than one person is refused with 422 photo.no_face or photo.faces. An expression the avatar animates badly (teeth showing, a big smile, an open mouth, eyes looking away or shut) leaves the avatar in the new status needs_approval, with photo_check.findings and approval { url, tokens }: a person opens the link, signs in and approves, the photo is regenerated with a calm closed-mouth smile and nothing else changed, checked again and charged (40 tokens) only when it passes; then the avatar builds. The upload is kept as original_image_id. API keys cannot approve; POST /avatars/:id/approve answers 403 approval.dashboard with the link.
  • Face Restore (beta): PATCH /avatars/:id { face_restore: true } sharpens the eyes, lips and teeth on every frame of the avatar's live sessions and videos, for 5 more tokens a minute on either tier (restore_tokens_per_minute on GET /organization; the video framing endpoint's tokens_per_minute includes it). Charged only when it ran; when the GPU is busy a session can run without it.
  • Studio portraits are now asked for with a relaxed closed-mouth smile and eyes on the lens, and any framing you ask for is respected: the build centres the face for the avatar either way.

Looks for your own model: vision on stream sessions

14 October 2026

  • A stream session (your own model, our face and voice) now takes images too. Because your model is the brain, the relay does not answer; it looks: the same { type: "image", data, text?, id? } message comes back as { type: "image", ok: true, id, description, tokens }, a short plain-text description of what is in view (what it is, likely make and model, every piece of text read exactly, how sure; never people) for your model to read. Send the person's words as text so the description dwells on what matters.
  • A look draws look_tokens from your balance (one token today; the number is on GET /organization) and is refused with tokens.exhausted when none are left, or look.failed, uncharged, when the vision model did not answer. Ten a minute, 1,536 px, nothing stored, as for every image. Until now a stream session refused images with stream.
  • SDK 0.1.3: avatar.look(image, text?) resolves with the relay's answer; the image event carries id, description and tokens.

Vision over the API: show the agent anything

14 October 2026

  • Your own client can now show an agent what the visitor sees. Send an image on an agent session (SDK: avatar.sendImage(image, text?); wire: { type: "image", data, text? }) from any webcam, file picker or canvas. Without text it is what the visitor sees now and their next question, spoken or typed, is answered while seeing it; with text it is a turn of its own. Until now the agent could only ask the SDK's own CameraCapture for a still when the visitor's words referred to something in view; that still works, and both ways share the same rules: ten images a minute, 1,536 px, nothing stored, never people.
  • The relay answers every image with { type: "image", ok, reason? } (the SDK's image event): vision.off when the agent's camera is off, image.rate over the cap, image.large over 3 MB, image.invalid for anything but a JPEG, PNG or WebP data URL, stream on a stream session, which has no agent to look.
  • The realtime protocol is now written down in the API docs, message by message, up and down, with the close codes, for anyone building a client without the SDK.
  • SDK 0.1.2: sendImage, the image event, and sendImage accepts a Blob, a canvas, a video or img element, an ImageBitmap, a CameraCapture (its sharpest recent frame) or a data URL.

Videos: an avatar says your script, as an MP4

14 October 2026

  • Videos, a new page in the dashboard under Voices: pick an avatar, write what it should say (up to 3,000 characters, about 3.5 minutes), choose a frame (square 1080×1080, wide 1920×1080, tall 1080×1920 or portrait 1080×1440) and render. The avatar speaks in its own voice, lip-synced, with blinks and the same small movements as on a live stream. The video lands in your library to watch, download, rename or delete.
  • Price: the live rate per minute of speech (Standard 30 tokens, Premium 60), by the second, charged when the video is ready and never on failure. The form shows the estimate before you click.
  • Where the photo does not reach the edges of a wide or tall frame, choose blurred sides (free) or have the image model extend the scene around the photo (a Studio edit at high quality, paid once per avatar and frame, free on every later video). Avatars without a photo background get a flat colour or a generated scene.
  • An avatar that has no voice yet shows the voice picker in the video form; the choice is saved to the avatar, so it is never asked again.
  • API: POST /videos, GET /videos, GET/PATCH/DELETE /videos/:id, GET /videos/:id/download, and GET /avatars/:id/framing for what a video of an avatar can look like. Premium avatars render on the Pro model's own pool once it is live; until then they render on Standard and are charged as Standard.

SDK: the avatar never shows as a colour-and-mask strip

13 October 2026

  • Fixed: mounting with idleLoopUrl and no packed option showed the idle loop raw, the avatar on the left and its white mask on the right on black, until the stream was live (and for good when mounted lazily before the first line). The idle loop is now always drawn through the compositor, and whether frames are packed is read from the idle loop's X-Packed header, from ready and from every chunk; the stream's own word wins over the packed option, so a wrong value cannot show the strip either.
  • Without WebGL (a browser that refuses a context, or a page with too many of them) the SDK composites the same frames on the CPU instead of drawing them as they came.
  • An idle loop served without a CORS header is no longer drawn as a strip: an unpacked one plays as is, a packed one is left out with a console warning that says why.

No form per avatar; avatar ids in the open; the SDK on npm

13 October 2026

  • Building an avatar of a real person no longer asks the depicted person to sign a release in the form. The right to use the photo and the likeness is part of the terms of service you accepted (section 3); the form says so in one line. POST /avatars takes photo (or image_id), name, real_person, voice_id, background and engine; the release fields are optional and, when sent complete, kept on file. consent.incomplete is gone.
  • Every avatar shows its id with a Copy button on its page, and in the avatar list, for apps that ask for one.
  • GET /organization returns tokens_granted: what the period actually holds (the plan's tokens_included plus top-ups and grants), so tokens_left = tokens_granted − tokens_used. The OpenAPI Organisation schema now lists every field the endpoint returns.
  • SDK: a new audioDestination mount option plays the avatar's voice into a node of your AudioContext (a gain you duck, an analyser, a MediaStreamDestination for an echo gate) instead of straight to the speakers. @avaclone/sdk is published on npm; the CDN module stays.

Conversations, and an Overview worth opening

12 October 2026

  • Conversations: a new page in the dashboard, per agent, with every conversation an agent has had as a chat log: what the visitor asked (said or typed) and what the agent answered, with when, how long and how it ended. Kept for 30 days by default; owners and admins change that in Settings (7 days to a year). Visitors are never identified. Stream sessions are not recorded.
  • API: GET /conversations (agent_id, before, limit) and GET /conversations/:id with the messages; GET /organization returns transcript_days and PATCH /organization sets it.
  • Overview: tokens left, conversations and lines this period, lines in use right now, avatars, the latest conversations, each agent with its conversation count and hosted page, and your live avatars, each a link to its page. The 'Coming next' card is gone.

Your own model with our face and voice; spoken symbols

12 October 2026

  • Stream sessions take text: POST /sessions with kind stream, an avatar_id and an optional voice_id from your library, then sendText() each line your own model produces. The avatar says it in that voice, lip-synced; lines queue in order and interrupt() drops the rest. Sending your own speech audio still works. Previously a text frame on a stream session was treated as a question for an agent the session did not have.
  • Everything the voice says is first turned into spoken words: money ($20.10 → twenty dollars and ten cents), temperatures (72°F), percentages, fractions, units (mph, GB, sq ft), ranges (5–10), ™ © ® and arrows, plus markdown, links and emoji removed. Captions and transcripts keep the original text.

Voices over the API

12 October 2026

  • Train a voice from your server: POST /voices with a secret key, multipart name and one or more audio files (a single file field works too). The voice in the 201 is ready to use as voice_id on avatars and agents. GET /voices takes ?kind=cloned for only the voices you trained; sample_url is now an absolute URL, so a server can fetch the sample as given. GET /voices/:id returns one voice with used_by.
  • Uploads from HTTP clients that send no audio content type (curl, most SDKs) are accepted: the type comes from the file's extension or its first bytes.
  • The stock list never includes a voice another account trained, whichever AvaClone environment trained it.
  • The API docs have a Voices section with cURL, JavaScript and Python samples, and the OpenAPI contract covers every voices endpoint.

The hosted page is a share page; the launcher comes back

12 October 2026

  • Hosted page (app.avaclone.ai/a/<publishable id>): the avatar large and centred on the AvaClone canvas, with a scrollable log of the visit's questions and answers under it (kept for the tab) and a "Made with AvaClone" line at the foot. Share the link directly. The iframe snippet now points at ?embed=1, the compact panel sized by the frame.
  • Widget: closing the panel shrinks it into the corner and the launcher returns, a chat bubble that shows the avatar's idle loop once it has loaded. Inline mode now fills its target element (its styles never applied inside the Shadow DOM before). The default accent is AvaClone blue; your Embed tab's accent still wins.

Yearly billing, background pricing

12 October 2026

  • Plans can be paid yearly: a year costs ten months (two months free), chosen with the Monthly / Yearly toggle on the pricing page and in Settings. Tokens are still granted every month. POST /billing/checkout takes interval: month | year; GET /organization returns billing_interval and paid_until. Extra tokens on a yearly plan are invoiced at the end of each month.
  • Studio: background remove and replace are priced like an edit, by model and quality (they are image-model operations). Uploading, saving, downloading, history and use-as-avatar stay free.

Voices: train your own

12 October 2026

  • Voices page in the dashboard, under Avatars: your trained voices and the stock ones, each with a sample to play and the avatars and agents that use it. Train a voice by reading a short script in the browser or uploading audio; ready in under a minute. Pro keeps one trained voice, Business three; enterprise is set per account. No tokens are used.
  • API: GET /voices lists the stock voices and your own with sample_url and used_by; POST /voices (multipart name, files, recorded) trains one; PATCH /voices/:id renames; DELETE /voices/:id removes it and clears it from avatars and agent drafts, which fall back to Harper; GET /voices/:id/sample streams the sample. The ElevenLabs library voices stay in the stock list for every account (el_ ids); trained voices are private to the account that made them.
  • Agents: PATCH /agents/:id rejects a voice_id that is not in your library (400 voice.unknown).

Tokens, model choice in the Studio, voices, backgrounds

9 October 2026

  • Billing unit: tokens (1 token = $0.01). GET /organization now returns token_usd, tokens_included, tokens_left, tokens_used, tokens_available, live_tokens_per_minute and studio_tokens; minutes_left stays as a convenience. The minutes_* fields and the minutes.exhausted code are retired; out of allowance is 429 tokens.exhausted.
  • Studio: POST /images/generate and the edit, style and background operations accept model: google, google-nb21 or openai (Nano Banana Pro, Nano Banana 2.1, gpt-image-1). GET /styles lists the models available and the tokens per model and quality. Jobs report tokens instead of minutes.
  • Avatars: voice_id on create and PATCH /avatars/:id (name, voice_id); GET /voices lists stock voices and your ElevenLabs workspace's with preview_url. POST /avatars/:id/rebuild rebuilds from the stored photo as a new version.
  • Avatars keep the photo's background: sessions carry backdrop_url and the SDK takes backdropUrl; the widget composites it under the frames.
  • Widget: the Embed tab's appearance (captions, launcher label, theme, accent) applies at load; a data- attribute on the tag still wins. Session responses include branding.
  • SDK is served at https://cdn.avaclone.ai/v1/sdk.js as an ES module.
  • Docs: section navigation, and code samples in cURL, JavaScript and Python.

Teams, spending caps, the camera

7 October 2026

  • Team: GET/POST /team, DELETE /team/invites/:id, PATCH/DELETE /team/members/:userId, POST /team/switch. Seats are per plan.
  • Spending cap: PATCH /organization { spending_cap_usd }; usage past the plan's allowance runs under the cap and is billed with the next invoice.
  • Camera show-and-tell: the relay sends look, the SDK answers with one still from CameraCapture; agents with vision on describe what is shown and never identify people.
  • Stripe: plans as subscriptions; POST /billing/checkout and /billing/portal.

Studio, keys, publishing

6 October 2026

  • Avatar Studio: generate, edit with words, styles, background removal, a library, download, use as avatar.
  • Secret API keys with bearer auth on every endpoint.
  • Agents: draft and publish with versions and rollback; knowledge files (PDF, text, Markdown); embeds locked to domains; the hosted page.
  • Realtime relay: streaming transcription, barge-in, quiet cut-off, metering to the second.