---
title: "List Personas"
method: GET
path: "/v1/personas/"
tags: ["Agent Environment", "personas"]
---

# List Personas

`GET /v1/personas/`

List personas with filtering and pagination.

Requires persona:read permission and team_id query parameter. The user's JWT must be scoped to that team.

## Query parameters

- `team_id` string, uuid, nullable — Team scope (required); must match a team the user has access to
- `intents` string[], nullable — Filter by intent(s): benign, curious, adversarial, malicious
- `is_preset` boolean, nullable — Filter by preset status
- `search` string, nullable — Search in name, description, and role
- `limit` integer — Maximum number of results (default 10)
- `offset` integer — Number of results to skip for paging

## Response `200`

Successful Response

- PersonaListResponse — Response model for listing personas with pagination. - results: Items in the current page (length may be less than limit on last page). - total: Total number of items matching the query, before pagination.
  - `results` Persona[], required
    - `id` string, uuid, required
    - `team_id` string, uuid, required
    - `name` string, required
    - `description` string, nullable
    - `role` string, required
    - `role_description` string, nullable
    - `knowledge_level` 'beginner' | 'intermediate' | 'advanced' | 'expert' — Knowledge level of the persona.
    - `skill_level` 'novice' | 'competent' | 'proficient' | 'expert' — Skill level of the persona.
    - `intent` 'benign' | 'curious' | 'adversarial' | 'malicious' — Intent type of the persona.
    - `language` string
    - `access_permissions` union
      - PersonaAccessPermissions — Access permissions for persona - used for test scenario definition. NOTE: This is NOT for actual RBAC enforcement - it defines expected access for generating test cases to verify agent access control.
        - `privilege_level` 'guest' | 'user' | 'power_user' | 'admin' | 'super_admin' — Privilege level for persona access control testing.
        - `allowed_agents` string[], nullable
        - `allowed_tools` string[], nullable
        - `restricted_actions` string[], nullable
        - `data_access_scope` 'own' | 'team' | 'organization' | 'global' — Data access scope for persona testing.
      - object
    - `is_preset` boolean
    - `preset_category` string, nullable
    - `tags` string[], nullable
    - `icon_filename` string, nullable
    - `created_at` integer, required
    - `updated_at` integer, required
    - `created_by` string, uuid, required
  - `total` integer, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/vijilai/apis/vijil-console-api-combined.md) · [All operations](https://skmtc.net/vijilai/apis/vijil-console-api-combined/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/vijilai/vijil-console-api-combined/versions/a8b2ee2b2d06/schema)
