Getting Started
This guide takes you from nothing to a working transcript. By the end you will have created a session, attached a transcription bot to an ODIN Voice room, and read back what was said — using the official TypeScript SDK.
It should take about 10 minutes.
Rather than using code you can also use the dashboard for almost everything. The new unified ODIN dashboard is currently available at https://ots.odin.4players.io/dashboard and will soon replace our current dashboard located at console.4players.io.
What you need
Before you start, make sure you have:
- A 4Players account and a project. Sign in at console.4players.io; if you don’t have a project yet, create one.
- ODIN Voice activated on that project, and ODIN Cortex activated as well. Both are activated from the dashboard.
- An ODIN Voice room with people (or a test client) talking in it. If you are new to Voice, follow the ODIN Voice getting started guide first — Cortex transcribes rooms that Voice creates.
- Node.js 18+ if you want to follow along with the SDK.
Cortex never creates audio — it listens. You point it at a room that already exists in
ODIN Voice (identified by its roomId), and a headless bot joins that room to capture and
transcribe audio. See Sessions & Gatherings.
Step 1 — Create an API key
Server-to-server calls to Cortex authenticate with an API key. Create one in the dashboard:
- Open your project and go to the Cortex section.
- Open API Keys and click Create API Key.
- Give it a name (e.g.
Backend). Optionally restrict it to specific scopes such assessionsandmessages. - Copy the key — it looks like
ots_live_...and is shown only once.
Treat the key like a password. Use it from your backend, never from a browser or shipped game client.
Use an API key for any backend or machine client, and a JWT for browser/dashboard sessions. Cortex also has an internal HMAC “project secret” mechanism used by other ODIN platform services — it isn’t the recommended path for your own integrations. Full details in Authentication.
Step 2 — Install the SDK
Create a client and scope it to your project:
Step 3 — Create and start a session
A session is an active transcription instance bound to one ODIN room. Creating a session and starting it makes the bot join the room.
externalRoomIdexternalRoomId is the ODIN Voice roomId your clients pass when they join the room.
That’s how Cortex knows which room to transcribe. See
Users & Participants for how speakers are
identified.
Step 4 — Read the transcript
Each spoken utterance becomes a message attributed to the participant who said it. Once people have talked for a bit, read them back:
When you’re done, stop the session (the bot leaves the room):
Step 5 — Watch it live (optional)
Polling works, but the real power is live updates. watch() loads the current state
over REST and then keeps it in sync over Server-Sent Events — new messages stream in as
they’re transcribed, no polling loop required:
See Real-time updates for the full pattern.
Prefer raw HTTP?
You don’t have to use the SDK. The same flow over the REST API:
Every endpoint is documented in the REST API reference.
Next steps
Sessions vs gatherings, participants, auth and multi-tenancy — the mental model behind the API.
Runnable, end-to-end walkthroughs: real-time captions, moderation, gatherings and serverless functions.