Skip to main content
A project represents one application or service you want to monitor with OTAS. Every agent you create, every event OTAS captures, and every SDK key you generate belongs to a project. When you set up OTAS for a new service, the first thing you create is a project for it.

Project fields

FieldDescription
idUUID, auto-generated. Use this as your project_id in API headers.
nameHuman-readable name for the project.
descriptionOptional short description.
domainThe base URL of your service (e.g., https://api.example.com). Used to classify events as in-domain or out-of-domain.
is_activeWhether the project is active. Inactive projects stop receiving events.
created_byThe user who created the project. They are automatically assigned the Admin role.

Project domain and event classification

The domain field tells OTAS what your service’s origin URL is. When an agent logs an API call, OTAS compares the event’s path against this domain to determine whether the call was made to your own backend (in-domain) or to an external service such as an LLM provider (out-of-domain). This distinction lets you filter and analyze your agents’ external API usage separately from internal traffic.

Team access and privileges

Project access is controlled through a UserProjectMapping, which links a user to a project with one of two privilege levels:
PrivilegeValueCapabilities
Admin1Create and manage agents, create and revoke SDK keys, view all events and sessions
Member2View agents, sessions, and events; cannot create agents or keys
The user who creates a project is automatically made an Admin. Only Admins can invite other users, create agents, and manage SDK keys.

Backend SDK keys

Backend SDK keys (BackendAPIKey) let your server-side middleware authenticate with OTAS and log events on behalf of agents without requiring a user JWT. Each key is scoped to a single project. Key format: otas_<prefix>_<secret>
The full key value is shown only once at creation time. OTAS stores only a hashed version in the database. Copy and store the key immediately.

Key lifecycle

1

Create a key

Send a POST request to /api/project/v1/sdk/backend/key/create/ with the validity field (1–300 days) in the body. You must be a project Admin.
POST /api/project/v1/sdk/backend/key/create/
X-OTAS-USER-TOKEN: <your-jwt>
X-OTAS-PROJECT-ID: <project-uuid>

{ "validity": 30 }
2

Use the key

Pass the key in the X-OTAS-SDK-KEY header when your backend middleware logs events. OTAS resolves the project from the key automatically.
3

Revoke the key

Send a POST request to /api/project/v1/sdk/backend/key/revoke/ with the sdk_key_id UUID. Revoked keys are immediately rejected and cannot be un-revoked.
POST /api/project/v1/sdk/backend/key/revoke/
X-OTAS-USER-TOKEN: <your-jwt>
X-OTAS-PROJECT-ID: <project-uuid>

{ "sdk_key_id": "<key-uuid>" }

Creating a project

You can create a project from the OTAS dashboard or directly via the API. API endpoint: POST /api/project/v1/create/
POST /api/project/v1/create/
X-OTAS-USER-TOKEN: <your-jwt>

{
  "project_name": "My AI Service",
  "project_description": "Production LLM backend",
  "project_domain": "https://api.example.com"
}
The response includes the new project’s id, which you’ll use as X-OTAS-PROJECT-ID in subsequent requests.
Only project Admins can create agents and SDK keys. When you create a project, you are automatically assigned the Admin role.

Build docs developers (and LLMs) love