Multi-Tenancy & Projects
Cortex is multi-tenant by construction. Every durable resource is scoped, every query is filtered, and there is no API that crosses tenant boundaries.
Projects
A project is your top-level unit of organization — and it’s the same 4Players project you use for Voice, Rooms and Fleet. One project, one set of products, one billing relationship.
In Cortex, nearly every resource lives under a project. That’s why almost everything in the SDK starts from a project scope:
And in the REST API, most paths are nested under the project id:
A project id is the alphanumeric identifier from the 4Players platform — the same value everywhere across Voice, Rooms, Fleet and Cortex. You can have many projects (for example Dev, Staging and Production) under one account.
Tenants and isolation
Above projects sits a tenant — your account in Cortex. A single tenant can own many
projects. Every durable resource (sessions, messages, participants, gatherings, sanctions,
webhook subscriptions, functions…) carries a tenant and (almost always) a project
scope, and:
- Every API call is scoped to the caller’s tenant by their credentials.
- Every domain event carries
tenantIdandprojectId, so downstream consumers can filter precisely. - There is no cross-tenant “get everything” — isolation is mandatory, not optional.
Scoping your access
API keys can be scoped down to a single project (and to specific resource families). For production integrations, prefer a project-scoped key so a credential for one environment can never reach another.