---
title: "Update segment"
method: PATCH
path: "/segments/{segmentId}"
tags: ["Segments"]
---

# Update segment

`PATCH /segments/{segmentId}`

Updates a saved segment's name or filter definition.

## Path parameters

- `segmentId` string, required

## Request body

- object
  - `name` string
  - `filters` FilterLeaf[]
    - `kind` 'filter' — Required when the filter is inside a v2 root group.
    - `id` string, required
    - `field` 'status' | 'tag' | 'email' | 'emailProvider' | 'added' | 'firstName' | 'lastName' | 'list' | 'attribute' | 'event' | 'segment' | 'stripeProduct' | 'stripeCurrentProduct' | 'stripeTrialProduct' | 'emailSent' | 'emailOpened' | 'emailClicked' | 'emailBounced' | 'emailComplained', required
    - `operator` 'is' | 'is_not' | 'is_empty' | 'is_not_empty' | 'contains' | 'not_contains' | 'less_than' | 'more_than' | 'at_least' | 'less_than_count' | 'gte' | 'lte' | 'gt' | 'lt', required
    - `value` string, required — Event filters use `eventName:30d` or `eventName:5:30d`. Segment filters use a segment ID.
  - `filterJoinOperator` 'and' | 'or'
  - `root` FilterGroup — A nested AND/OR filter group.
    - `kind` 'group', required
    - `id` string, required
    - `joinOperator` 'and' | 'or', required
    - `children` union[], required
      - union
        - FilterLeaf — A single subscriber filter rule.
          - `kind` 'filter' — Required when the filter is inside a v2 root group.
          - `id` string, required
          - `field` 'status' | 'tag' | 'email' | 'emailProvider' | 'added' | 'firstName' | 'lastName' | 'list' | 'attribute' | 'event' | 'segment' | 'stripeProduct' | 'stripeCurrentProduct' | 'stripeTrialProduct' | 'emailSent' | 'emailOpened' | 'emailClicked' | 'emailBounced' | 'emailComplained', required
          - `operator` 'is' | 'is_not' | 'is_empty' | 'is_not_empty' | 'contains' | 'not_contains' | 'less_than' | 'more_than' | 'at_least' | 'less_than_count' | 'gte' | 'lte' | 'gt' | 'lt', required
          - `value` string, required — Event filters use `eventName:30d` or `eventName:5:30d`. Segment filters use a segment ID.
        - FilterGroup — recursive

## Response `200`

Segment updated

- object
  - `success` boolean
  - `segment` Segment
    - `id` string
    - `name` string
    - `filters` FilterLeaf[] — Legacy v1 flat filters, or flattened leaves for v2 responses.
      - `kind` 'filter' — Required when the filter is inside a v2 root group.
      - `id` string, required
      - `field` 'status' | 'tag' | 'email' | 'emailProvider' | 'added' | 'firstName' | 'lastName' | 'list' | 'attribute' | 'event' | 'segment' | 'stripeProduct' | 'stripeCurrentProduct' | 'stripeTrialProduct' | 'emailSent' | 'emailOpened' | 'emailClicked' | 'emailBounced' | 'emailComplained', required
      - `operator` 'is' | 'is_not' | 'is_empty' | 'is_not_empty' | 'contains' | 'not_contains' | 'less_than' | 'more_than' | 'at_least' | 'less_than_count' | 'gte' | 'lte' | 'gt' | 'lt', required
      - `value` string, required — Event filters use `eventName:30d` or `eventName:5:30d`. Segment filters use a segment ID.
    - `filterJoinOperator` 'and' | 'or'
    - `format` 'v1' | 'v2'
    - `root` FilterGroup — A nested AND/OR filter group.
      - `kind` 'group', required
      - `id` string, required
      - `joinOperator` 'and' | 'or', required
      - `children` union[], required
        - union
          - FilterLeaf — A single subscriber filter rule.
            - `kind` 'filter' — Required when the filter is inside a v2 root group.
            - `id` string, required
            - `field` 'status' | 'tag' | 'email' | 'emailProvider' | 'added' | 'firstName' | 'lastName' | 'list' | 'attribute' | 'event' | 'segment' | 'stripeProduct' | 'stripeCurrentProduct' | 'stripeTrialProduct' | 'emailSent' | 'emailOpened' | 'emailClicked' | 'emailBounced' | 'emailComplained', required
            - `operator` 'is' | 'is_not' | 'is_empty' | 'is_not_empty' | 'contains' | 'not_contains' | 'less_than' | 'more_than' | 'at_least' | 'less_than_count' | 'gte' | 'lte' | 'gt' | 'lt', required
            - `value` string, required — Event filters use `eventName:30d` or `eventName:5:30d`. Segment filters use a segment ID.
          - FilterGroup — recursive
    - `subscriberCount` integer
    - `activeSubscriberCount` integer

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `404` — Segment not found

## Changes

- **2026-04-21** `f15ee0724f9f` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/segments/:segmentId/patch.md)

---

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