> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reply.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Filter contacts in sequence

> <Warning>
  **Coming soon.** This endpoint will be available by early November 2026.
</Warning>

<small>_Requires the `sequences:read` scope (or a broader one that includes it)._</small>

Filter one sequence's contacts by what happened in that sequence and by contact fields, with a free-text search term and a sort order. Returns the same items as `GET /v3/sequences/{id}/contacts`, paged with the top and skip query parameters.

Conditions are joined with AND, one condition per field: an `operator` with its `value`, an `and` list of rules that must all match, or an `or` list of alternatives. `GET /v3/sequences/{id}/contacts/filter/fields` lists the fields, operators and values your workspace accepts here; counts, dates and statuses are those of this sequence.



## OpenAPI

````yaml /api-reference/bundled.yaml post /v3/sequences/{id}/contacts/filter
openapi: 3.1.0
info:
  version: 3.0.0
  title: Reply API
  description: API for managing email sequences, contacts, and automation workflows
servers:
  - url: https://api.reply.io
security:
  - bearerAuth: []
tags:
  - name: Contacts
    description: Manage individual contacts
  - name: Contact Lists
    description: Manage contact lists and contact membership
  - name: Accounts
    description: Manage accounts (companies/organizations)
  - name: Account Lists
    description: Manage account lists and account membership
  - name: Custom Fields
    description: Manage custom contact fields
  - name: Prompt Actions
    description: Save reusable AI prompts and run them on contacts to fill custom fields
  - name: Contact Blacklist Rules
    description: Manage blacklist rules for domains, emails, and email exceptions
  - name: Live Data
    description: >-
      Find new contacts via Live Data searches and read typeahead values for the
      Live Data / Autopilot filter sidebar
  - name: Contact Enrichment
    description: >-
      Enrich contacts with emails, phone numbers, LinkedIn data, and AI-filled
      custom fields
  - name: Email Validations
    description: Estimate and schedule asynchronous email validation jobs
  - name: AI SDR Web Search
    description: Find contacts via AI-driven web search and review past searches
  - name: Sequences
    description: Manage email automation sequences
  - name: Sequence Steps
    description: Manage individual steps in sequences
  - name: Sequence Contacts
    description: Manage contacts within sequences
  - name: Sequence Folders
    description: Organize sequences into folders
  - name: Email Accounts
    description: Manage email accounts used for sending and receiving
  - name: Sequence Email Accounts
    description: Manage email accounts linked to sequences
  - name: LinkedIn Accounts
    description: Manage LinkedIn accounts for outreach
  - name: Sequence LinkedIn Accounts
    description: Manage LinkedIn accounts linked to sequences
  - name: Sequence Templates
    description: Manage sequence templates
  - name: Email Templates
    description: Manage email templates and template folders
  - name: Voices
    description: Manage cloned voices used for AI voice message steps
  - name: Schedules
    description: Manage email send schedules and timing
  - name: Holiday Calendars
    description: Manage holiday calendars for scheduling
  - name: Inbox
    description: >-
      Manage inbox threads — list/filter, read state, replies, category
      assignment, and meeting-intent flagging
  - name: Inbox Categories
    description: Manage per-team inbox thread categories and assign threads to them
  - name: Direct Outreach
    description: >-
      Send one-off outreach directly to a contact outside of any sequence —
      direct emails and LinkedIn connection requests, messages, InMails, and
      voice messages
  - name: Tasks
    description: Manage tasks and to-do items
  - name: Reports
    description: >-
      Generate and access performance reports across email, calls, tasks,
      LinkedIn, and team performance
  - name: AI SDR Sequences
    description: >-
      Manage AI SDR sequences and their AI SDR-specific settings — create, read
      settings, partial update, autopilot enable/disable/force-start, approval
      mode, sequence structure, and playbook/knowledge-base connections
  - name: AI SDR Sequence Structures
    description: >-
      Browse the sequence structures — reusable outlines of AI SDR sequence
      steps — that can be applied to AI SDR sequences
  - name: AI SDR Strategist
    description: Trigger AI Strategist runs
  - name: AI SDR Playbooks
    description: >-
      Manage AI SDR playbooks — tone, voice, and style guides applied during
      personalized message generation
  - name: AI SDR Knowledge Bases
    description: >-
      Manage AI SDR knowledge bases — collections of documents, links, reply
      handlers, and reengagement cards that inform the agent's responses
  - name: AI SDR Offers
    description: >-
      Manage AI SDR offers — bundles of company-context inputs (ICP, pain
      points, value propositions, etc.) used to personalize outreach
  - name: AI SDR Pending Approvals
    description: >-
      Review, send, regenerate, and provide feedback on AI-generated messages
      awaiting human approval
  - name: AI SDR Sequence Preview
    description: >-
      Read and regenerate per-contact previews of the messages a sequence will
      send, and provide feedback on preview messages
  - name: AI SDR Insights
    description: Read AI SDR insights for sequence contacts
  - name: AI SDR Intent Signals
    description: >-
      Read Reply industry IDs and technology slugs used in AI SDR intent-signal
      configuration (typeahead)
  - name: AI Prompts
    description: >-
      Manage the AI prompts used to configure sequence steps, and preview the
      output a prompt produces
  - name: AI SDR Learnings
    description: >-
      Manage the standing rules that shape how the AI writes — list, read,
      create, partially update and delete AI learnings
  - name: Registration
    description: Register the contact that domain purchases are filed under
  - name: Domains
    description: Find domains available to buy for outreach
  - name: Purchased Domains
    description: >-
      List the domains your team bought, with their subscription, setup and
      renewal state
  - name: Mailboxes
    description: Add mailboxes to domains your team already bought, priced before you order
  - name: User Account
    description: Account information and authentication verification
  - name: Teams
    description: Add existing users of your organization to its teams
  - name: Settings
    description: Manage team and user settings
  - name: Billing
    description: Subscription details and monthly active contacts usage
  - name: Rate Limits
    description: Your API rate limits and current usage
  - name: Webhooks
    description: Manage webhook subscriptions and inspect delivery history
  - name: Background Jobs
    description: >-
      Track and cancel asynchronous background operations (e.g., email
      validation)
  - name: Attachments
    description: >-
      Upload file attachments used across email templates, sequence steps, and
      direct emails
paths:
  /v3/sequences/{id}/contacts/filter:
    post:
      tags:
        - Sequence Contacts
      summary: Filter contacts in sequence
      description: >-
        <Warning>
          **Coming soon.** This endpoint will be available by early November 2026.
        </Warning>


        <small>_Requires the `sequences:read` scope (or a broader one that
        includes it)._</small>


        Filter one sequence's contacts by what happened in that sequence and by
        contact fields, with a free-text search term and a sort order. Returns
        the same items as `GET /v3/sequences/{id}/contacts`, paged with the top
        and skip query parameters.


        Conditions are joined with AND, one condition per field: an `operator`
        with its `value`, an `and` list of rules that must all match, or an `or`
        list of alternatives. `GET /v3/sequences/{id}/contacts/filter/fields`
        lists the fields, operators and values your workspace accepts here;
        counts, dates and statuses are those of this sequence.
      operationId: FilterSequenceContacts
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
          description: Sequence ID
        - name: top
          in: query
          required: false
          description: Maximum number of items to return (default 100, max 1000)
          schema:
            type: integer
        - name: skip
          in: query
          required: false
          description: Number of items to skip
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: Sequence contact filter request
              description: >-
                Conditions, search and sort for filtering one sequence's
                contacts.
              properties:
                conditions:
                  type: array
                  nullable: true
                  maxItems: 20
                  description: >-
                    Field conditions, joined with AND; one condition per field.
                    Counts, dates and statuses are those of this sequence. `GET
                    /v3/sequences/{id}/contacts/filter/fields` lists the fields,
                    their operators, value types and allowed values. Up to 200
                    branches per condition, 200 values per list and 500 values
                    across all conditions. Omit it, or send `null` or an empty
                    list, to get every contact of the sequence.
                  items:
                    type: object
                    title: Filter condition
                    description: >-
                      One field's rules: exactly one of `operator` (with `value`
                      unless the operator takes none), `and` (rules that must
                      all match) or `or` (alternatives, any of which may match).
                      Each field takes one condition, and each custom field (by
                      `customFieldKey`) takes one.
                    required:
                      - field
                    properties:
                      field:
                        type: string
                        description: >-
                          Field name from the fields list, matched
                          case-insensitively.
                      customFieldKey:
                        type: string
                        description: >-
                          Only with `customFields`. The custom field's key (its
                          id, as returned in `customFields`) or its name.
                      operator:
                        type: string
                        title: Filter operator
                        description: >-
                          Comparison a filter condition applies. Matched
                          case-insensitively. All date comparisons are in UTC.
                          `between`, `isToday` and `exactlyDaysAgo` match whole
                          UTC calendar days, starting at 00:00 UTC;
                          `withinLastDays` and `moreThanDaysAgo` count N days
                          back from the current UTC time.
                        enum:
                          - equals
                          - notEquals
                          - in
                          - notIn
                          - contains
                          - notContains
                          - containsAny
                          - containsAll
                          - startsWith
                          - greaterThan
                          - lessThan
                          - isEmpty
                          - isNotEmpty
                          - between
                          - withinLastDays
                          - moreThanDaysAgo
                          - isToday
                          - exactlyDaysAgo
                      value:
                        title: Filter condition value
                        description: >-
                          The value the operator compares against; its shape is
                          the operator's `valueType` in the fields list.
                        anyOf:
                          - type: string
                          - type: number
                          - type: boolean
                          - type: array
                            minItems: 1
                            maxItems: 200
                            items:
                              anyOf:
                                - type: string
                                - type: number
                          - type: object
                            title: Filter date range
                            description: >-
                              Calendar days for `between`, both inclusive,
                              compared in UTC.
                            required:
                              - from
                              - to
                            properties:
                              from:
                                type: string
                                format: date
                                description: First day of the range (`yyyy-MM-dd`).
                              to:
                                type: string
                                format: date
                                description: >-
                                  Last day of the range (`yyyy-MM-dd`), not
                                  before `from`.
                      and:
                        type: array
                        minItems: 1
                        maxItems: 200
                        description: >-
                          Rules on this field that must all match. Each branch
                          uses an operator from the field's `andOperators`; an
                          `and` of only `isEmpty` and `isNotEmpty` is rejected,
                          and an account field takes at most one `in` or `notIn`
                          branch.
                        items:
                          type: object
                          title: Filter condition branch
                          description: >-
                            One operator and its value inside a condition's
                            `and` or `or` list.
                          required:
                            - operator
                          properties:
                            operator:
                              type: string
                              title: Filter operator
                              description: >-
                                Comparison a filter condition applies. Matched
                                case-insensitively. All date comparisons are in
                                UTC. `between`, `isToday` and `exactlyDaysAgo`
                                match whole UTC calendar days, starting at 00:00
                                UTC; `withinLastDays` and `moreThanDaysAgo`
                                count N days back from the current UTC time.
                              enum:
                                - equals
                                - notEquals
                                - in
                                - notIn
                                - contains
                                - notContains
                                - containsAny
                                - containsAll
                                - startsWith
                                - greaterThan
                                - lessThan
                                - isEmpty
                                - isNotEmpty
                                - between
                                - withinLastDays
                                - moreThanDaysAgo
                                - isToday
                                - exactlyDaysAgo
                            value:
                              title: Filter condition value
                              description: >-
                                The value the operator compares against; its
                                shape is the operator's `valueType` in the
                                fields list.
                              anyOf:
                                - type: string
                                - type: number
                                - type: boolean
                                - type: array
                                  minItems: 1
                                  maxItems: 200
                                  items:
                                    anyOf:
                                      - type: string
                                      - type: number
                                - type: object
                                  title: Filter date range
                                  description: >-
                                    Calendar days for `between`, both inclusive,
                                    compared in UTC.
                                  required:
                                    - from
                                    - to
                                  properties:
                                    from:
                                      type: string
                                      format: date
                                      description: First day of the range (`yyyy-MM-dd`).
                                    to:
                                      type: string
                                      format: date
                                      description: >-
                                        Last day of the range (`yyyy-MM-dd`),
                                        not before `from`.
                      or:
                        type: array
                        minItems: 1
                        maxItems: 200
                        description: >-
                          Alternatives on this field, any of which may match.
                          Each branch uses an operator from the field's
                          `orOperators`; on an account field every branch uses
                          the same operator.
                        items:
                          type: object
                          title: Filter condition branch
                          description: >-
                            One operator and its value inside a condition's
                            `and` or `or` list.
                          required:
                            - operator
                          properties:
                            operator:
                              type: string
                              title: Filter operator
                              description: >-
                                Comparison a filter condition applies. Matched
                                case-insensitively. All date comparisons are in
                                UTC. `between`, `isToday` and `exactlyDaysAgo`
                                match whole UTC calendar days, starting at 00:00
                                UTC; `withinLastDays` and `moreThanDaysAgo`
                                count N days back from the current UTC time.
                              enum:
                                - equals
                                - notEquals
                                - in
                                - notIn
                                - contains
                                - notContains
                                - containsAny
                                - containsAll
                                - startsWith
                                - greaterThan
                                - lessThan
                                - isEmpty
                                - isNotEmpty
                                - between
                                - withinLastDays
                                - moreThanDaysAgo
                                - isToday
                                - exactlyDaysAgo
                            value:
                              title: Filter condition value
                              description: >-
                                The value the operator compares against; its
                                shape is the operator's `valueType` in the
                                fields list.
                              anyOf:
                                - type: string
                                - type: number
                                - type: boolean
                                - type: array
                                  minItems: 1
                                  maxItems: 200
                                  items:
                                    anyOf:
                                      - type: string
                                      - type: number
                                - type: object
                                  title: Filter date range
                                  description: >-
                                    Calendar days for `between`, both inclusive,
                                    compared in UTC.
                                  required:
                                    - from
                                    - to
                                  properties:
                                    from:
                                      type: string
                                      format: date
                                      description: First day of the range (`yyyy-MM-dd`).
                                    to:
                                      type: string
                                      format: date
                                      description: >-
                                        Last day of the range (`yyyy-MM-dd`),
                                        not before `from`.
                    example:
                      field: title
                      and:
                        - operator: contains
                          value: VP
                        - operator: notContains
                          value: Assistant
                searchTerm:
                  type: string
                  nullable: true
                  description: Free-text search term
                sortBy:
                  type: string
                  nullable: true
                  enum:
                    - addingDate
                    - email
                    - firstName
                    - lastName
                    - company
                    - statusInSequence
                    - currentStep
                    - emailAccountName
                  description: >-
                    Field to sort by, case-insensitive. Defaults to
                    `addingDate`, the date the contact was added to the
                    sequence. `currentStep` orders by step position with
                    finished contacts last; `emailAccountName` orders by the
                    address of the mailbox that sends to the contact in this
                    sequence.
                sortDirection:
                  type: string
                  nullable: true
                  enum:
                    - asc
                    - desc
                  description: Sort direction, case-insensitive. Defaults to `desc`.
              example:
                conditions:
                  - field: statusInSequence
                    operator: equals
                    value: active
                  - field: hasOpened
                    operator: equals
                    value: true
                  - field: hasReplied
                    operator: equals
                    value: false
                sortBy: currentStep
                sortDirection: asc
      responses:
        '200':
          description: Filtered contacts of the sequence
          content:
            application/json:
              schema:
                type: object
                title: Sequence Contacts List
                description: >-
                  Response model for listing contacts in a sequence with
                  pagination
                properties:
                  items:
                    type: array
                    description: Array of sequence contact items
                    items:
                      type: object
                      title: Sequence Contact
                      description: >-
                        A contact enrolled in a sequence with sequence-specific
                        metadata
                      properties:
                        contactId:
                          type: integer
                          description: Contact ID
                        sequenceId:
                          type: integer
                          description: Sequence ID
                        email:
                          type: string
                          nullable: true
                          description: Contact email address
                        firstName:
                          type: string
                          nullable: true
                          description: Contact first name
                        lastName:
                          type: string
                          nullable: true
                          description: Contact last name
                        company:
                          type: string
                          nullable: true
                          description: Contact company name
                        title:
                          type: string
                          nullable: true
                          description: Contact job title
                        statusInSequence:
                          type: string
                          enum:
                            - active
                            - paused
                            - finished
                            - inactive
                            - outOfOffice
                          description: >-
                            Contact's status in this sequence. The writable
                            subset (`active`, `paused`, `finished`,
                            `outOfOffice`) can be set via `POST
                            /v3/sequences/{id}/contacts/set-status-in-sequence`.
                            `inactive` is set by the system when the contact is
                            missing data needed to continue (e.g. no email when
                            the next step is an email step).
                        isOptedOut:
                          type: boolean
                          description: >-
                            Whether the contact has opted out (contact-level
                            flag, not sequence-scoped)
                        callStatus:
                          allOf:
                            - type: string
                              title: Contact Call Status
                              description: >-
                                Contact-level call status. Set via `PATCH
                                /v3/contacts/{id}` (`callStatus` field). Pass
                                `none` to clear.
                              enum:
                                - none
                                - toCall
                                - called
                          description: >-
                            Contact-level call status (`none` / `toCall` /
                            `called`).
                        meetingStatus:
                          allOf:
                            - type: string
                              title: Contact Meeting Status
                              description: >-
                                Contact-level meeting status. Set via `PATCH
                                /v3/contacts/{id}` (`meetingStatus` field). Pass
                                `none` to clear.
                              enum:
                                - none
                                - meetingBooked
                          description: >-
                            Contact-level meeting status (`none` /
                            `meetingBooked`).
                        emailDisposition:
                          type: object
                          nullable: true
                          description: >-
                            Reply/bounce status for the most recent email sent
                            to this contact in this sequence.


                            `null` when no email has been sent to this contact
                            yet in this sequence.

                            Otherwise an object with `isReplied` and `isBounced`
                            flags. `false`/`false` here means an email was sent

                            but no reply or bounce was registered — distinct
                            from the `null` "never sent" state.
                          required:
                            - isReplied
                            - isBounced
                          properties:
                            isReplied:
                              type: boolean
                              description: >-
                                Whether the contact has replied to any email in
                                this sequence
                            isBounced:
                              type: boolean
                              description: >-
                                Whether any email sent to this contact in this
                                sequence has bounced
                        currentStep:
                          type: object
                          description: >-
                            Current sequence step the contact is on. Always
                            present in the response.

                            When the contact has no in-progress step (e.g.
                            finished or paused at the end of the sequence),
                            `stepId` is `null` and `displayName` is
                            `"Finished"`.
                          required:
                            - stepId
                            - displayName
                          properties:
                            stepId:
                              type: integer
                              nullable: true
                              description: >-
                                Identifier of the current step. `null` when the
                                contact has no active step.
                            displayName:
                              type: string
                              nullable: true
                              description: >-
                                Display label of the current step (e.g. `"1"`,
                                `"2A"`, or `"Finished"`).
                        addingDate:
                          type: string
                          format: date-time
                          description: Date the contact was added to the sequence
                        emailAccountId:
                          type: integer
                          format: int64
                          nullable: true
                          description: >-
                            Identifier of the email account this contact is
                            assigned to send from in this sequence.

                            `null` when no email account is assigned (e.g. the
                            sequence has no email steps the contact has reached,
                            or the assignment hasn't been resolved yet).
                        linkedInAccountId:
                          type: integer
                          format: int64
                          nullable: true
                          description: >-
                            Identifier of the LinkedIn account this contact is
                            assigned to send from in this sequence.

                            `null` when no LinkedIn account is assigned (e.g.
                            the sequence has no LinkedIn steps the contact has
                            reached).
                      example:
                        contactId: 12345
                        sequenceId: 100
                        email: john.doe@company.com
                        firstName: John
                        lastName: Doe
                        company: Tech Solutions Inc
                        title: Senior Product Manager
                        statusInSequence: active
                        isOptedOut: false
                        callStatus: none
                        meetingStatus: none
                        emailDisposition:
                          isReplied: false
                          isBounced: false
                        currentStep:
                          stepId: 5421
                          displayName: '2'
                        addingDate: '2024-03-08T10:00:00+00:00'
                        emailAccountId: 101
                        linkedInAccountId: null
                  hasMore:
                    type: boolean
                    readOnly: true
                    description: Indicates if there are more items to fetch
        '400':
          description: >-
            Validation failure on the request body or query (a condition naming
            an unknown field or one this route does not offer, an operator or
            value the field does not take, a stage, custom field, owner or step
            your workspace or this sequence does not have, or a sort the route
            does not take), a body field this endpoint does not define (one
            `Field is not recognized.` error per field), or a business rule
            rejection.
          content:
            application/problem+json:
              schema:
                oneOf:
                  - allOf:
                      - allOf:
                          - type: object
                            title: Problem Details
                            description: >-
                              Bare RFC 9457 problem-details envelope. Returned
                              by middleware-level errors

                              that don't carry domain context: 401 Unauthorized
                              (auth middleware),

                              429 Too Many Requests (rate-limit middleware), and
                              route-level 404 / 405 /

                              415 (framework middleware).


                              Business and validation responses extend this
                              envelope and add additional

                              fields — see `business-problem.model.yaml` (adds
                              `code` slug) and

                              `validation-problem.model.yaml` (adds `errors[]`
                              array).
                            properties:
                              title:
                                type: string
                                description: Short, human-readable summary of the problem.
                              status:
                                type: integer
                                description: HTTP status code.
                                minimum: 100
                                maximum: 599
                              detail:
                                type: string
                                description: >-
                                  Human-readable explanation specific to this
                                  occurrence.
                          - type: object
                            properties:
                              errors:
                                type: array
                                description: >-
                                  List of field-level validation errors. Always
                                  non-empty when this

                                  envelope is returned. Each entry pins a single
                                  offending field

                                  via JSON Pointer plus a sanitized detail
                                  string.
                                items:
                                  type: object
                                  title: Validation Error
                                  description: A single field-level validation error.
                                  properties:
                                    pointer:
                                      type: string
                                      description: >-
                                        JSON Pointer (RFC 6901) to the offending
                                        field — e.g.

                                        `/steps/0/subject`.


                                        * An empty string (`""`) means the error
                                        applies to the whole
                                          request body (e.g. body is missing or unparseable).
                                        * For route or query parameter failures
                                        the pointer is the parameter
                                          name (e.g. `id`, `top`).
                                      example: /steps/0/subject
                                    detail:
                                      type: string
                                      description: >-
                                        Sanitized, human-readable explanation of
                                        this field's error. One of a

                                        small set of templates — `"Field is
                                        required."`, `"Value has an

                                        invalid type."`, `"Value has an invalid
                                        format."`, `"Request body is

                                        not valid JSON."`, `"The request body is
                                        required and cannot be

                                        empty."` — or a FluentValidator message
                                        on body endpoints.
                                      example: Field is required.
                        title: Validation Problem
                        description: >-
                          Input-validation error response at 400. Returned when
                          the request body

                          fails binding, FluentValidator rules, or when
                          route/query parameter

                          attribute validation (`[Range]`, `[Required]`) fails.
                          Route, query, and

                          body errors are combined into a single `errors[]`
                          array — clients should

                          not assume one error per request.
                      - example:
                          title: Validation failed
                          status: 400
                          detail: The request body contains validation errors.
                          errors:
                            - pointer: /name
                              detail: Field is required.
                  - allOf:
                      - allOf:
                          - type: object
                            title: Problem Details
                            description: >-
                              Bare RFC 9457 problem-details envelope. Returned
                              by middleware-level errors

                              that don't carry domain context: 401 Unauthorized
                              (auth middleware),

                              429 Too Many Requests (rate-limit middleware), and
                              route-level 404 / 405 /

                              415 (framework middleware).


                              Business and validation responses extend this
                              envelope and add additional

                              fields — see `business-problem.model.yaml` (adds
                              `code` slug) and

                              `validation-problem.model.yaml` (adds `errors[]`
                              array).
                            properties:
                              title:
                                type: string
                                description: Short, human-readable summary of the problem.
                              status:
                                type: integer
                                description: HTTP status code.
                                minimum: 100
                                maximum: 599
                              detail:
                                type: string
                                description: >-
                                  Human-readable explanation specific to this
                                  occurrence.
                          - type: object
                            properties:
                              code:
                                type: string
                                description: >-
                                  Stable, machine-readable error slug in the
                                  form

                                  `"<resource>.<variant>"`.


                                  * `resource` is the camelCased domain — e.g.
                                  `sequence`,
                                    `contact`, `inboxThread`, `blacklistDomainRule`.
                                  * `variant` is the camelCased specific failure
                                  mode — e.g.
                                    `notFound`, `forbidden`, `duplicateName`, `globalRuleReadOnly`.

                                  Use `code` for programmatic error handling;
                                  use `detail` for

                                  user-facing messages. Slugs are stable across
                                  server-side enum

                                  reorderings and never change meaning under a
                                  given resource.
                                pattern: ^[a-z][a-zA-Z0-9]*(\.[a-z][a-zA-Z0-9]*)+$
                                example: sequence.notFound
                        title: Business Problem
                        description: >-
                          Domain error response carrying a stable, namespaced
                          error slug.

                          Emitted for most 4xx responses (business 400, 403,
                          404, 409, …) and

                          for 503 when a downstream dependency is unavailable.
                      - example:
                          title: Bad Request
                          status: 400
                          detail: Pagination parameters are invalid.
                          code: sequence.invalidPagination
              examples:
                operator_not_allowed:
                  summary: Operator the field does not take
                  value:
                    title: Validation failed
                    status: 400
                    detail: The request body contains validation errors.
                    errors:
                      - pointer: /conditions/0/operator
                        detail: >-
                          Operator 'in' is not available for 'statusInSequence'.
                          Allowed operators: equals, notEquals.
                contact_only_field:
                  summary: Field this route does not offer
                  value:
                    title: Validation failed
                    status: 400
                    detail: The request body contains validation errors.
                    errors:
                      - pointer: /conditions/0/field
                        detail: >-
                          'addingDate' is not available on a sequence's
                          contacts.
                unknown_step:
                  summary: Step of another sequence
                  value:
                    title: Validation failed
                    status: 400
                    detail: The request body contains validation errors.
                    errors:
                      - pointer: /conditions/0/value
                        detail: Step 77 is not a step of sequence 42.
                unknown_sort:
                  summary: Sort field the route does not take
                  value:
                    title: Validation failed
                    status: 400
                    detail: The request body contains validation errors.
                    errors:
                      - pointer: /sortBy
                        detail: >-
                          sortBy must be one of: addingDate, email, firstName,
                          lastName, company, statusInSequence, currentStep,
                          emailAccountName
                unrecognized_field:
                  summary: Unrecognized body field
                  value:
                    title: Validation failed
                    status: 400
                    detail: The request body contains validation errors.
                    errors:
                      - pointer: /listId
                        detail: Field is not recognized.
                business_invalid_page_size:
                  summary: Page size out of range
                  value:
                    title: Bad Request
                    status: 400
                    detail: Parameter 'top' must be between 1 and 1000
                    code: sequenceContact.invalidInput
        '401':
          description: >-
            Unauthorized. The response body is empty; check the
            `WWW-Authenticate` header for the expected scheme.
          content:
            application/problem+json:
              schema:
                allOf:
                  - type: object
                    title: Problem Details
                    description: >-
                      Bare RFC 9457 problem-details envelope. Returned by
                      middleware-level errors

                      that don't carry domain context: 401 Unauthorized (auth
                      middleware),

                      429 Too Many Requests (rate-limit middleware), and
                      route-level 404 / 405 /

                      415 (framework middleware).


                      Business and validation responses extend this envelope and
                      add additional

                      fields — see `business-problem.model.yaml` (adds `code`
                      slug) and

                      `validation-problem.model.yaml` (adds `errors[]` array).
                    properties:
                      title:
                        type: string
                        description: Short, human-readable summary of the problem.
                      status:
                        type: integer
                        description: HTTP status code.
                        minimum: 100
                        maximum: 599
                      detail:
                        type: string
                        description: >-
                          Human-readable explanation specific to this
                          occurrence.
                  - example:
                      title: Unauthorized
                      status: 401
                      detail: Authentication credentials are missing or invalid.
        '404':
          description: The sequence does not exist or you cannot view it.
          content:
            application/problem+json:
              schema:
                allOf:
                  - allOf:
                      - type: object
                        title: Problem Details
                        description: >-
                          Bare RFC 9457 problem-details envelope. Returned by
                          middleware-level errors

                          that don't carry domain context: 401 Unauthorized
                          (auth middleware),

                          429 Too Many Requests (rate-limit middleware), and
                          route-level 404 / 405 /

                          415 (framework middleware).


                          Business and validation responses extend this envelope
                          and add additional

                          fields — see `business-problem.model.yaml` (adds
                          `code` slug) and

                          `validation-problem.model.yaml` (adds `errors[]`
                          array).
                        properties:
                          title:
                            type: string
                            description: Short, human-readable summary of the problem.
                          status:
                            type: integer
                            description: HTTP status code.
                            minimum: 100
                            maximum: 599
                          detail:
                            type: string
                            description: >-
                              Human-readable explanation specific to this
                              occurrence.
                      - type: object
                        properties:
                          code:
                            type: string
                            description: >-
                              Stable, machine-readable error slug in the form

                              `"<resource>.<variant>"`.


                              * `resource` is the camelCased domain — e.g.
                              `sequence`,
                                `contact`, `inboxThread`, `blacklistDomainRule`.
                              * `variant` is the camelCased specific failure
                              mode — e.g.
                                `notFound`, `forbidden`, `duplicateName`, `globalRuleReadOnly`.

                              Use `code` for programmatic error handling; use
                              `detail` for

                              user-facing messages. Slugs are stable across
                              server-side enum

                              reorderings and never change meaning under a given
                              resource.
                            pattern: ^[a-z][a-zA-Z0-9]*(\.[a-z][a-zA-Z0-9]*)+$
                            example: sequence.notFound
                    title: Business Problem
                    description: >-
                      Domain error response carrying a stable, namespaced error
                      slug.

                      Emitted for most 4xx responses (business 400, 403, 404,
                      409, …) and

                      for 503 when a downstream dependency is unavailable.
                  - example:
                      title: Not Found
                      status: 404
                      detail: The requested resource was not found.
                      code: sequence.notFound
              example:
                title: Not Found
                status: 404
                detail: Sequence 42 not found.
                code: sequenceContact.sequenceNotFound
        '429':
          description: Too Many Requests
          headers:
            Retry-After:
              description: Seconds to wait before retrying
              schema:
                type: integer
                minimum: 1
          content:
            application/problem+json:
              schema:
                allOf:
                  - type: object
                    title: Problem Details
                    description: >-
                      Bare RFC 9457 problem-details envelope. Returned by
                      middleware-level errors

                      that don't carry domain context: 401 Unauthorized (auth
                      middleware),

                      429 Too Many Requests (rate-limit middleware), and
                      route-level 404 / 405 /

                      415 (framework middleware).


                      Business and validation responses extend this envelope and
                      add additional

                      fields — see `business-problem.model.yaml` (adds `code`
                      slug) and

                      `validation-problem.model.yaml` (adds `errors[]` array).
                    properties:
                      title:
                        type: string
                        description: Short, human-readable summary of the problem.
                      status:
                        type: integer
                        description: HTTP status code.
                        minimum: 100
                        maximum: 599
                      detail:
                        type: string
                        description: >-
                          Human-readable explanation specific to this
                          occurrence.
              example:
                title: Too Many Requests
                status: 429
                detail: API calls quota exceeded! maximum admitted 100 per 1m.
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Authenticate every request with a Bearer token. Pass your Reply API key
        in the

        `Authorization` header:


        ```

        Authorization: Bearer <your-api-key>

        ```


        Get your API key from the Reply dashboard: **Settings → API Key**.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.