Give your AI a face.
Real-time, 60 fps, runs on the device. Works with any model. One line of code.
Paste one prompt into ChatGPT, Claude or Gemini. It gets a face.
Machine-readable version: /llms.txt
Zero install
Paste this into your assistant
It is self-contained: the link grammar is inside it, so an assistant with no browsing can still write a working link.
The prompt
Give yourself a face. When I ask you to say something out loud, answer normally and add a link of the form https://www.mimicur.com/say#c=wren&t=YOUR_ANSWER with the answer URL-encoded. Details, if you need them: https://www.mimicur.com/for-agents
The speak link
The grammar
One URL. A person taps it and a character reads the text on their own device.
Shape
https://www.mimicur.com/say#c=<character>&t=<url-encoded text>
- c is a character: its short name (wren), its catalogue id (cast- and 32 hex), or its rig id. Case does not matter and a two-word name is hyphenated.
- An unknown c is not an error — the page reads the text with a default character and says which one it picked. The names accepted today are listed on /for-agents.
- t is the text, URL-encoded. It sits in the fragment, so it never reaches our server.
- Text is capped at 600 characters; anything longer is cut at a word boundary and the page says so.
- No account, no key, no install. The page loads the face runtime and reads the text on the device.
Which names work
Any character's short name, its catalogue id, or its rig id. Names are matched without regard to case, and a two-word name is hyphenated. An unrecognised value is not an error — the page reads the text with a default character and says which one it picked.
Reading the current roster…
In your own product
Three lines
The hosted runtime, the element, and one call. Everything else is your own session route.
HTML
<script type="module" src="https://www.mimicur.com/face-sdk/v7.js"></script>
<mimicur-face rig-id="YOUR_RIG_ID" session-endpoint="/api/mimicur-session"></mimicur-face>
<script type="module">(await customElements.whenDefined('mimicur-face'), document.querySelector('mimicur-face')).speak('Hello there.')</script>/api/mimicur-session is a route on your own server. It authenticates your user, exchanges your key at POST https://www.mimicur.com/api/v1/face/sessions, and returns the short-lived session. Your permanent key never reaches a browser.
Keys and API docs
The runtime loader
Limits
In plain numbers
- Face playback: unlimited, on every tier, free. It renders on the device.
- Live speech: never metered by the minute.
- Speak link: 600 characters of text, in the fragment, no account.
- Face API session: 15 minutes, issued by your backend, scoped to an exact origin.
- One session covers at most 512 catalogue characters and 100 delegated saved characters.
- Session control JSON: 65,536 bytes and ten seconds.
- Exports and server lanes (model replies, server voice, video rendering) carry monthly allowances per tier. See /pricing.
What is true today
- Runs on the device; no video streams during speech (measured 2026-09-09, external-origin SDK run).
- Works with any model: text or audio in, face out.
- Real-time, targeting a 60 fps display cadence.
- The site is in beta and the preview gate is still on for some surfaces.