Roles & Permissions

Role-based access control with four levels: viewer, member, admin, and owner. Deny-by-default enforcement on all API routes.

Deny by default

RBAC is enforced on every API route. If a request has no valid authentication context (missing or invalid API key, expired session), it is denied with a 403 Forbidden response. There is no anonymous passthrough.

Role Hierarchy

Ingate uses a linear role hierarchy. Each role is assigned a numeric level, and higher roles automatically inherit all permissions of lower roles.

RoleLevelDescription
viewer0Read access to logs, metrics, evals, prompts, usage
member1Viewer + create/update prompts, evals, apps. Proxy access.
admin2Member + manage teams, keys, budgets, webhooks, providers, org settings
owner3Admin + transfer/delete org, manage billing

A user with role level N can perform any action that requires level N or below. For example, an admin (level 2) can do everything a member (level 1) and viewer (level 0) can do.

Permissions by Resource

The table below shows the minimum role required for read and write access to each resource. A dash means that operation is not applicable to the resource.

ResourceReadWrite
Proxy (LLM requests)n/amember
Providersvieweradmin
Logsviewern/a
Metricsviewern/a
Usage analyticsviewern/a
Sessions & usersviewern/a
Promptsviewermember
Prompt renderviewern/a
Evalsviewermember
Appsviewermember
API keysn/amember
Key rotationn/aadmin
Teamsvieweradmin
Budgetsadminadmin
Webhooksadminadmin
Audit logviewern/a
Org settingsn/aadmin
Ingestion APIn/amember
OTel trace exportn/amember
Playgroundn/amember
Datasetsviewermember
BYOS storagen/aadmin (enterprise)

Error Responses

When a request lacks valid authentication or the authenticated user does not have the required role, the API returns 403 Forbidden:

json403 Response - missing authentication
{
  "error": "authentication required",
  "error_code": "forbidden"
}
json403 Response - insufficient role
{
  "error": "insufficient permissions",
  "error_code": "forbidden",
  "required_role": "admin"
}

Enforcement scope

RBAC middleware runs on all API routes including the proxy, management API, and ingestion endpoints. There are no unauthenticated routes except the public health check and the signup/login endpoints.