Skip to main content

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