Lookalike API
The Lookalike API lets you create a digital human — an avatar with a face, a voice, and a personality — and bring it into a live, two-way conversation. You onboard an identity once, then stream it into realtime sessions your users can talk to, with sub-second latency over LiveKit.
Base URL
https://api.lookalike.com
Every endpoint lives under /v1.
Authentication
Every request is authenticated with an API key. Provision one in the Console, keep it on your server, and send it as a bearer token (or the X-API-Key header):
curl https://api.lookalike.com/v1/identities \
-H "Authorization: Bearer $LOOKALIKE_API_KEY"
Keys start with lk_. Treat them like passwords — keep them server-side, never in client code. A missing or invalid key returns 401.
The building blocks
The API is built around two objects:
- An identity is the avatar — its face, voice, and personality bundled into one
identity_id. You create it once and reuse it everywhere. - A session is a live conversation that brings an identity to life over LiveKit.
That's the whole model. See Core concepts for the details.
The journey, end to end
From zero to a live conversation is four steps.
1. Get an API key
Sign in to the Console and provision a key. This is also where you buy credits and watch usage.
2. Create an identity
One call uploads your reference media and trains the avatar. When you include a photo it comes back ready to use — no separate training step to wait on.
curl -sS -X POST https://api.lookalike.com/v1/identities \
-H "Authorization: Bearer $LOOKALIKE_API_KEY" \
-F "name=Ada" \
-F "prompt=You are Ada, a warm and concise product guide." \
-F "image=@ada.jpg;type=image/jpeg" \
-F "audio=@ada.wav;type=audio/wav"
# -> { "identity_id": "id_...", "status": "ready" }
Full field list: Create an Identity.
3. Start a session
Pass the identity_id and get back everything needed to join a LiveKit room — a room name, an access token, and the server URL.
curl -sS -X POST https://api.lookalike.com/v1/sessions/start \
-H "Authorization: Bearer $LOOKALIKE_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "identity_id": "id_..." }'
# -> { "room_name": "...", "token": "...", "livekit_url": "wss://..." }
4. Join and talk
Connect with any LiveKit client using livekit_url and token. The token is minted server-side, so your browser never sees your API key. The avatar listens and responds in real time, handling turns and interruptions on its own. Disconnect from the room to end the session.
import { Room } from 'livekit-client';
const room = new Room();
await room.connect(livekitUrl, token);
await room.localParticipant.setMicrophoneEnabled(true); // so the avatar can hear you
Full request, response, and client examples: Realtime API.
Billing
Usage is metered in credits from a single balance: onboarding an identity is a one-time charge, and a realtime session is charged per minute while the avatar is streaming. Buy credits and track usage in the Console. See Billing & credits for rates.
Next steps
- Core concepts — identities and sessions.
- Create an Identity — build and train an avatar.
- Realtime API — start a live session in one call.
- Billing & credits — how credits work.
- Migrate — bring an existing integration over.