livqenoDocs

Get startedAPI credentials

API credentials

Create an API key, keep it on your server, and never put it in your app.

An API key is how your backend proves to Livqeno that a request comes from you. Your backend uses it for one main job: making tokens for your users. Because it can do anything in its environment, treat it like a database password. Keep it on your server only.

Where this fits: project → API key → your backend makes tokens → your app joins. You need a project first.

Create a key

Make one key per environment your backend runs in. For example, a development key for your laptop and a production key for your live server. That way local testing can never touch real users' data.

Create it in the dashboard, or with the CLI on your computer:

Terminal
livqeno projects use <project-id>   # once, if you haven't selected a project yet
livqeno keys create --name backend --environment development

You'll see the key only once:

rvk_1dev_28Kd2nQxwYtLm3.aG9wZXlvdWFyZWhhdmluZ2Fsb3ZlbHlkYXk4
  1. 1prefix
  2. 2environment label, just for you to read
  3. 3public id
  4. 4secret part
Key format.

Copy it now and save it as LIVQENO_API_KEY in your backend's secrets. Livqeno can't show it again. If you lose it, create a new one.

What's inside a key

Key format
rvk_dev_8Kd2nQxwYtLm.aG9wZXlvdWFyZWhhdmluZ2Fsb3ZlbHlkYXk
└─┬─┘└┬┘└─────┬─────┘ └────────────────┬────────────────┘
  │   │       │                        │
  │   │       └ public id              └ secret part
  │   └ environment label (just for you to read)
  └ prefix

The public id identifies the key; the secret part proves you own it. Livqeno stores only a hash of the secret, which is why it can't show the key again.

Each key is tied to one environment on our side. A development key can never touch production data, whatever a request asks for. The dev label is only a hint so you can tell keys apart; changing it does nothing.

Use the key

Your backend needs two values, usually stored as environment variables or in your secrets manager:

VariableExampleWhat it's for
LIVQENO_API_KEYrvk_dev_...Proves the request is from you.
LIVQENO_API_URLhttps://api.livqeno.comWhere to send requests.
.env
LIVQENO_API_KEY=rvk_dev_...
LIVQENO_API_URL=https://api.livqeno.com

Add .env to your .gitignore. In production, set the same two names in your host's secrets settings instead of shipping a file.

On your backend, pass both to the server SDK yourself. It does not read environment variables on its own. This is deliberate: it means a production key sitting in your shell can't sneak into a dev process.

Create the client once, when your server starts, and reuse it for every request:

lib/livqeno.ts
import { Livqeno } from '@livqeno/server';
 
const livqeno = new Livqeno({
  apiKey: process.env.LIVQENO_API_KEY!,
  baseUrl: process.env.LIVQENO_API_URL!, // https://api.livqeno.com
});

Change or remove a key

Revoke a key when it may have leaked, when someone who had it leaves, or as regular hygiene. On your computer:

Terminal
livqeno keys list
livqeno keys revoke <keyId>

To rotate a key safely:

Create a new key

Create it in the same environment as the old one, with a name you can tell apart (for example backend-2026-10).

Deploy your backend with the new key

Update LIVQENO_API_KEY in your secrets and redeploy. Both keys work while the deploy rolls out.

Revoke the old key

Run livqeno keys revoke <keyId>, or revoke it in the dashboard.

Doing it in this order means your app never goes down: the new key works before the old one stops.

Tokens made by a revoked key keep working until they expire. Since tokens are short-lived, this window is small.

Never put the key in your app

Anything shipped to a user's device can be read by that user. A key inside a browser bundle, a mobile app, or a git commit is public, and anyone who finds it could create rooms, read messages, and use up your allowances.

Your app gets a token instead. A token is short-lived and only works for one room or conversation. See Mint a token.

Read Security before going live.

Common mistakes

MistakeWhat you'll seeFix
LIVQENO_API_URL not set in productionThe SDK refuses to start (with NODE_ENV=production)Set it to https://api.livqeno.com.
Using a development key on your live serverYour live app sees only development rooms and dataCreate a production key and use it there.
Lost the keyCan't be shown againCreate a new key, deploy it, revoke the old one.
Key committed to gitAnyone with repo access can use itRevoke it now, then rotate.

Next steps

Your backend can now talk to Livqeno. Next: