Skip to main content
Version: 2.0

Role-based access control

Vectara uses Role-Based Access Control (RBAC) with four tiers of roles: API roles (account-wide), corpus roles (per-corpus), agent roles (per-agent), and platform roles (system-level). Each tier controls access to different resources. A user's effective permissions are the union of all their assigned roles.

API roles (account-level)

API roles control what a user or app client can do across the entire account.

RoleDescription
ownerFull account control including deletion and ownership transfer.
administratorManages users, app clients, LLMs, encoders, agents, corpora, tools, and instructions. Cannot delete the account or manage billing.
billing_administratorViews and edits billing activity only.
corpus_administratorCreates, deletes, and resets corpora. Has full read/write access to all corpus data.
corpus_developerIndexes, queries, and manages documents across all corpora. Cannot create or delete corpora.
corpus_viewerRead-only query and document listing across all corpora.
agent_administratorFull agent management: create, delete, replace agents, manage connectors, tool servers, and agent identity.
agent_developerUpdates agents, manages sessions, tools, instructions, and schedules. Cannot create or delete agents.
agent_viewerRead-only access to agents, sessions, events, tools, instructions, and schedules.
agent_userCan create agent sessions and send input to agents.
pipeline_administratorFull pipeline management: create, update, delete, and trigger pipelines.
pipeline_viewerRead-only access to pipelines and pipeline runs.
viewerRead-only access across corpora, agents, and pipelines. Combines corpus_viewer, agent_viewer, and pipeline_viewer.

API role hierarchy

Higher roles inherit all permissions of lower roles in their domain:

  • Corpus domain: corpus_viewercorpus_developercorpus_administratoradministratorowner
  • Agent domain: agent_user / agent_vieweragent_developeragent_administratoradministratorowner
  • Pipeline domain: pipeline_viewerpipeline_administratoradministratorowner

Corpus roles (per-corpus)

Corpus roles control what a user or app client can do within a specific corpus. They grant access to one corpus only, unlike API roles which apply account-wide.

RoleDescription
viewerQuery, search, list documents, view metadata and query history.
editorEverything in viewer, plus upload files, index documents, and delete documents.
administratorEverything in editor, plus update corpus settings, reset the corpus, and replace filter attributes.
ownerEverything in administrator, plus delete the corpus.

Corpus role hierarchy

viewereditoradministratorowner

note

A API role like corpus_developer grants access to all corpora, while a corpus role like editor grants access to one specific corpus.

Agent roles (per-agent)

Agent roles control what a user or app client can do with a specific agent.

RoleDescription
agent_userCreate sessions and send input (interact with the agent).
agent_viewerRead-only access: view agent config, sessions, events, schedules, tools, instructions, and artifacts.
agent_developerEverything in agent_viewer and agent_user, plus update the agent, manage sessions, create/update tools, instructions, and schedules.
agent_administratorEverything in agent_developer, plus delete the agent, manage connectors, tool servers, and agent identity.

Agent role hierarchy

agent_user / agent_vieweragent_developeragent_administrator

Note that agent_user and agent_viewer are independent — a viewer can inspect but not interact, while a user can interact but not inspect session history.

Platform roles (system-level)

Platform roles are for on-premises platform administration.

RoleDescription
platform_adminFull platform control across all customers. Implies administrator API role.
platform_viewerRead-only platform access.

How roles interact

A user's effective permissions come from the union of:

  1. Their API roles (account-wide)
  2. Their corpus roles (per-corpus grants)
  3. Their agent roles (per-agent grants)

For example, a user with the corpus_viewer API role can query any corpus. If they also have an editor corpus role on a specific corpus, they can index documents into that corpus but not others.

Baseline access

All authenticated users (regardless of role) can:

  • List corpora, rerankers, LLMs, encoders, generation presets, table extractors, and hallucination correctors
  • Manage their own API keys
  • View their own user profile
  • Use chat completions, factual consistency evaluation, and hallucination correction

Best practices

  • Assign only the roles a user needs (principle of least privilege).
  • Use corpus roles for per-corpus access control instead of broad API roles.
  • Use agent roles to give end users agent_user access without exposing agent configuration.
  • Review role assignments when rotating keys or changing team structure.

Common issues and solutions

SymptomCauseSolution
403 ForbiddenMissing role for the operationCheck the endpoint's required roles in the API reference
Can query but not indexUser has viewer corpus roleUpgrade to editor corpus role
Can't create agentsMissing agent_administrator API roleAssign the role to the user
Agent interaction failsMissing agent_user role on the agentGrant agent_user agent role

Example role assignments

ScenarioRole typeRoleScope
Frontend search app (read-only)CorpusviewerSpecific corpus
Backend service indexing dataCorpuseditorSpecific corpus
Agent chatbot for end usersAgentagent_userSpecific agent
Developer building an agentAPIagent_developerAccount-wide
Admin managing all corporaAPIcorpus_administratorAccount-wide
Platform operatorPlatformplatform_adminPlatform-wide