Skip to content
Getting started

Quickstart

Get a key, mint a token, and join your first room in about five minutes — no app required, just curl and a browser tab.

  1. 1
    Get an API key
    Create an account, a project, and a key. The key (sk_live_…) is your project secret — it stays on your backend.
  2. 2
    Mint a room token
    Your backend calls /v1/token with the key and gets a short-lived token for one room.
  3. 3
    Join the room
    Your app connects with that token and starts streaming.

1 · Get an API key

Run these once. In production you’ll do steps 1–3 from your dashboard; here’s the raw API so you can script it:

terminal
1# 1. create an account (returns a session token)2curl -X POST https://cloud.unitythink.com/auth/signup \3  -H 'Content-Type: application/json' \4  -d '{"email":"you@company.com","password":"a-strong-password","name":"You"}'5# → { "token": "<SESSION_JWT>", "account": { "id": "...", "email": "..." } }67# 2. create a project8curl -X POST https://cloud.unitythink.com/dashboard/projects \9  -H 'Authorization: Bearer <SESSION_JWT>' -H 'Content-Type: application/json' \10  -d '{"name":"My app"}'11# → { "project": { "_id": "<PROJECT_ID>", "name": "My app" } }1213# 3. create an API key  (shown ONCE — store it)14curl -X POST https://cloud.unitythink.com/dashboard/projects/<PROJECT_ID>/keys \15  -H 'Authorization: Bearer <SESSION_JWT>' -H 'Content-Type: application/json' \16  -d '{"label":"server"}'17# → { "apiKey": "sk_live_xxxxxxxx", "prefix": "sk_live_xxx…", "note": "Store this now — it is shown only once." }
Tip:A hosted console is coming; until then create keys with the Dashboard API above (or ask us to provision one). See all endpoints in the API reference.

2 · Mint a room token (backend)

The app never sees sk_live_…. Your server exchanges the key for a room token scoped to one room + identity:

terminal
1# Mint a room token from YOUR backend (never expose sk_live_ to the app)2curl -X POST https://cloud.unitythink.com/v1/token \3  -H 'x-api-key: sk_live_xxxxxxxx' -H 'Content-Type: application/json' \4  -d '{"room":"demo-room","identity":"alice"}'5# → { "token": "<ROOM_TOKEN>", "url": "wss://lk.unitythink.com", "room": "demo-room" }

3 · Join the room (browser)

Drop the url and token into the LiveKit client and you’re live. Open two browser tabs with tokens for two identities in the same room to see a call:

index.js
1import { Room } from "livekit-client";23// url + token come from POST /v1/token (above)4const room = new Room({ adaptiveStream: true, dynacast: true });5await room.connect(url, token);6await room.localParticipant.enableCameraAndMicrophone();78// you are now publishing to "demo-room".9// Open a second tab with a token for identity "bob" (same room) → you meet.10room.on("trackSubscribed", (track) => {11  document.body.appendChild(track.attach()); // render the other person12});
Note:That’s the raw media path. For real call invitations (ring/accept), offline push, chat, and a prebuilt call UI, use the client SDK — continue with Flutter or Web / React Native.