---
title: "Browse the persona library"
method: GET
path: "/v1/library/personas"
tags: ["library"]
---

# Browse the persona library

`GET /v1/library/personas`

## Query parameters

- `tag` string, nullable
- `search` string, nullable
- `limit` integer
- `cursor` string, nullable

## Response `200`

Successful Response

- CursorPageLibraryPersonaResponse
  - `items` LibraryPersonaResponse[], required
    - `id` string, uuid, required
    - `name` string, required
    - `description` string, nullable, required
    - `body` string, required
    - `traits` object, required
    - `behavior_config` PersonaBehaviorConfig, required — Advanced simulation knobs attached to a persona. Stored as JSONB on ``personas.behavior_config``; per-run overrides will reuse this shape on ``SimulationRun`` (ENG-474).
      - `first_speaker` 'persona' | 'agent'
      - `cut_in` PersonaCutInConfig — Persona-as-interrupter — when the agent is speaking, when does the persona cut in? Mirrors voice ``interruption_*`` knobs on ``VoicePipelineConfig``.
        - `min_words` integer
        - `min_duration_ms` integer
        - `backoff_ms` integer
      - `language` string, nullable
      - `background_noise` 'none' | 'office' | 'cafe' | 'city' | 'keyboard_typing'
      - `background_noise_volume` number
      - `wait_seconds` number
      - `yield_on_overlap` PersonaYieldConfig — Persona-as-yielder — when the persona is speaking and the agent starts talking, when does the persona stop? Whichever threshold fires first triggers the yield. ``None`` disables that dimension.
        - `after_words` integer, nullable
        - `after_seconds` number, nullable
      - `interruption_mode` 'off' | 'low' | 'medium' | 'high'
      - `backchannel_style` 'neutral' | 'impatient' | 'polite'
      - `backchannel_overrides` string[], nullable
      - `reaction_pause_ms_min` integer
      - `reaction_pause_ms_max` integer
    - `tags` string[], required
    - `created_by` string, nullable, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `next_cursor` string, nullable
  - `has_more` boolean, required

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/versions/888bdd5c076e/schema)
