---
title: "Update a Buyer Persona"
method: PATCH
path: "/v1/buyer-personas/{id}"
tags: ["Buyer Personas", "v1"]
---

# Update a Buyer Persona

`PATCH /v1/buyer-personas/{id}`

Update an existing buyer persona. All attributes are optional; only the attributes you send are changed. Sending `filters` replaces every category, not just the one you name.

:::info
Requires the `buyer_personas:write` OAuth2 scope.
:::

## Path parameters

- `id` string, required

## Query parameters

- `account_id` string, required

## Request body

- BuyerPersonaRequestV1
  - `data` object, required
    - `type` 'buyer_persona', required — The type of the object
    - `attributes` object, required
      - `name` string — The human-readable name of the buyer persona
      - `filters` object — Contact-level filter criteria that define the buyer persona, grouped by category. At least one category must be present and non-empty. Omit a category rather than sending it empty.
        - `department` object[] — Department filters.
          - `search_value` 'business_project_management_department' | 'consulting_department' | 'engineering_department' | 'finance_controlling_department' | 'hr_department' | 'it_department' | 'legal_compliance_department' | 'logistics_department' | 'management_department' | 'marketing_department' | 'media_communications_department' | 'product_department' | 'production_department' | 'purchasing_department' | 'qm_department' | 'rd_department' | 'sales_department' | 'students_apprentices' | 'support_department', required — The department a contact works in.
          - `display_value` string — Human-readable label for the department. Defaults to `search_value` when omitted.
          - `negated` boolean — When true, the filter excludes rather than includes contacts in this department.
        - `seniority` object[] — Seniority filters.
          - `search_value` 'top_management' | 'middle_management' | 'employees', required — How senior the contact is. Map job levels onto these three rather than inventing a code.
          - `display_value` string — Human-readable label for the seniority. Defaults to `search_value` when omitted.
          - `negated` boolean — When true, the filter excludes rather than includes contacts at this level.
        - `job_title` object[] — Job title keyword filters.
          - `search_value` string, required — Free text matched against the contact's job title.
          - `display_value` string — Human-readable label for the keyword. Defaults to `search_value` when omitted.
          - `negated` boolean — When true, the filter excludes rather than includes contacts whose title matches.
        - `location` object[] — Location filters.
          - `search_value` string, required — The place to match, in the form the entry's `type` expects.
          - `type` 'country_code' | 'continent' | 'world_region' — What kind of place `search_value` names. `country_code` takes an ISO 3166-1 alpha-2 code (e.g. "DE"). `continent` takes one of `asia`, `north_america`, `africa`, `europe`, `south_america`, `antarctica`, `australia`. `world_region` takes one of `africa`, `latam`, `emea`, `amer`, `dach`, `apac`.
          - `display_value` string — Human-readable label for the place. Defaults to `search_value` when omitted.
          - `negated` boolean — When true, the filter excludes rather than includes contacts in this place.

## Response `200`

Success

- object
  - `data` BuyerPersonaV1, required
    - `type` string, required — The type of the object
    - `id` string, required — The unique identifier for the buyer persona
    - `attributes` object, required
      - `name` string, required — The human-readable name of the buyer persona
      - `created_at` string, date-time, required — Date and time when the buyer persona was created
      - `filters` object, required — Filter criteria that define this buyer persona, grouped by filter category. Categories with no configured criteria are omitted. The object is empty when the buyer persona has no filters configured.
        - `department` object[] — Department filters.
          - `search_value` string — The internal value used to match this filter (e.g. industry code, country code, employee range identifier).
          - `display_value` string, required — The human-readable label of the filter value.
          - `negated` boolean, required — When true, the filter excludes (rather than includes) matching results.
        - `job_title` object[] — Job title keyword filters.
          - `search_value` string — The internal value used to match this filter (e.g. industry code, country code, employee range identifier).
          - `display_value` string, required — The human-readable label of the filter value.
          - `negated` boolean, required — When true, the filter excludes (rather than includes) matching results.
        - `location` object[] — Location filters.
          - `search_value` string — The place this filter matches, in the form its `type` expects.
          - `type` 'country_code' | 'continent' | 'world_region' | 'region' — What kind of place `search_value` names. `country_code` is an ISO 3166-1 alpha-2 code, `continent` one of `asia`, `north_america`, `africa`, `europe`, `south_america`, `antarctica`, `australia`, and `world_region` one of `africa`, `latam`, `emea`, `amer`, `dach`, `apac`. `region` is legacy and read-only: it is rejected on create and update. May be absent on records created before the type was recorded; treat an absent value as `country_code`. Send it back unchanged when updating, or the filter is read as a country code and rejected.
          - `display_value` string, required — The human-readable label of the filter value.
          - `negated` boolean, required — When true, the filter excludes (rather than includes) matching results.
        - `seniority` object[] — Seniority filters.
          - `search_value` string — The internal value used to match this filter (e.g. industry code, country code, employee range identifier).
          - `display_value` string, required — The human-readable label of the filter value.
          - `negated` boolean, required — When true, the filter excludes (rather than includes) matching results.
  - `meta` object, required
    - `request_id` string, required — A unique identifier assigned to each API request for end-to-end traceability.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized. The request was rejected because the credentials are missing, invalid, expired, or have been revoked. The client must re-authenticate before retrying. Clients can differentiate via the `code` value of the first item in `errors`.
- `403` — Forbidden. The credentials are valid but the caller is not authorized to perform the request — typically because the user lacks the required permission, the OAuth scope is insufficient, the subscription plan does not include the required entitlement, the `account_id` does not belong to the authenticated user, or the target list is read-only and its members cannot be modified. Clients can differentiate via the `code` value of the first item in `errors`.
- `404` — Not found
- `422` — Unprocessable entity
- `429` — Too many requests. Either the per-second rate limit or the monthly quota configured for the API key / OAuth application has been exceeded. Clients can differentiate via the `code` value of the first item in `errors`.
- `500` — Internal server error
- `504` — Server timeout

## Changes

> 18 revisions in range; 1 not diffed.

- **2026-09-01** `885dcce2a6c2` — 1 breaking
  - removed the enum value `unknown_department` of the request property `data/attributes/filters/department/items/search_value`
- **2026-08-25** `eec8083439cb` — 1 info
  - added the optional property `data/attributes/filters/location/items/type` to the response with the `200` status
- **2026-08-24** `a12941d83e55` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/leadfeeder/apis/leadfeeder-public-api/changes/v1/buyer-personas/:id/patch.md)

---

[API](https://skmtc.dev/leadfeeder/apis/leadfeeder-public-api.md) · [All operations](https://skmtc.dev/leadfeeder/apis/leadfeeder-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/leadfeeder/leadfeeder-public-api/revisions/7a571092a308/schema)
