> ## 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.

# Create an AI SDR sequence

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

<small>_Requires the `ai-sdr:write` scope (or a broader one that includes it)._</small>

Creates a new AI SDR sequence with its full AI SDR settings payload. The sequence is seeded either from a saved offer (`offerId`) or from inline offer-context inputs (`offerGenerationInputs`) — exactly one is required.

Sequence steps are generated by the AI SDR — clients do not pass `steps` here. Generic sequence fields (`name`, `scheduleId`, `settings`, `emailAccounts`, `linkedInAccounts`) are accepted and applied after the AI SDR-specific setup.

Requires the AI SDR feature on the caller's team.



## OpenAPI

````yaml /api-reference/bundled.yaml post /v3/sequences/ai-sdr
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: User Account
    description: Account information and authentication verification
  - name: Accounts
    description: Manage accounts (companies/organizations)
  - 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 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, generated step types, and playbook/knowledge-base connections
  - name: AI SDR Web Search
    description: Find contacts via AI-driven web search and review past searches
  - name: Attachments
    description: >-
      Upload file attachments used across email templates, sequence steps, and
      direct emails
  - name: Account Lists
    description: Manage account lists and account membership
  - name: Background Jobs
    description: >-
      Track and cancel asynchronous background operations (e.g., email
      validation)
  - name: Custom Fields
    description: Manage custom contact fields
  - 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: Contact Blacklist Rules
    description: Manage blacklist rules for domains, emails, and email exceptions
  - name: Contact Enrichment
    description: >-
      Enrich contacts with emails, phone numbers, LinkedIn data, and AI-filled
      custom fields
  - name: Contact Lists
    description: Manage contact lists and contact membership
  - name: Contacts
    description: Manage individual contacts
  - name: Email Accounts
    description: Manage email accounts used for sending and receiving
  - name: Email Templates
    description: Manage email templates and template folders
  - name: Email Validations
    description: Estimate and schedule asynchronous email validation jobs
  - name: Holiday Calendars
    description: Manage holiday calendars for scheduling
  - name: Inbox
    description: >-
      Manage inbox threads and per-team thread categories — list/filter, read
      state, replies, category assignment, and meeting-intent flagging
  - name: LinkedIn Accounts
    description: Manage LinkedIn accounts for outreach
  - name: Live Data
    description: >-
      Find new contacts via Live Data searches and read typeahead values for the
      Live Data / Autopilot filter sidebar
  - 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 Playbooks
    description: >-
      Manage AI SDR playbooks — tone, voice, and style guides applied during
      personalized message generation
  - name: Reports
    description: >-
      Generate and access performance reports across email, calls, tasks,
      LinkedIn, and team performance
  - name: Schedules
    description: Manage email send schedules and timing
  - name: Settings
    description: Manage team and user settings
  - name: Sequence Contacts
    description: Manage contacts within sequences
  - name: Sequence Email Accounts
    description: Manage email accounts linked to sequences
  - name: Sequence Folders
    description: Organize sequences into folders
  - name: Sequence LinkedIn Accounts
    description: Manage LinkedIn accounts linked to sequences
  - 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: Sequence Steps
    description: Manage individual steps in sequences
  - name: Sequence Templates
    description: Manage sequence templates
  - name: Sequences
    description: Manage email automation sequences
  - name: AI SDR Strategist
    description: Trigger AI Strategist runs
  - name: Tasks
    description: Manage tasks and to-do items
  - name: Webhooks
    description: Manage webhook subscriptions and inspect delivery history
paths:
  /v3/sequences/ai-sdr:
    post:
      tags:
        - AI SDR Sequences
      summary: Create an AI SDR sequence
      description: >-
        <Warning>
          **Coming soon.** This endpoint will be available by early July 2026.
        </Warning>


        <small>_Requires the `ai-sdr:write` scope (or a broader one that
        includes it)._</small>


        Creates a new AI SDR sequence with its full AI SDR settings payload. The
        sequence is seeded either from a saved offer (`offerId`) or from inline
        offer-context inputs (`offerGenerationInputs`) — exactly one is
        required.


        Sequence steps are generated by the AI SDR — clients do not pass `steps`
        here. Generic sequence fields (`name`, `scheduleId`, `settings`,
        `emailAccounts`, `linkedInAccounts`) are accepted and applied after the
        AI SDR-specific setup.


        Requires the AI SDR feature on the caller's team.
      operationId: CreateAiSdrSequence
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: AI SDR sequence — create
              description: >-
                Create a new AI SDR sequence with its full AI SDR settings.
                Generic sequence fields (`name`, `scheduleId`, `settings`,
                `emailAccounts`, `linkedInAccounts`) are accepted here too —
                sequence steps are NOT, because the AI SDR generates steps
                automatically.


                Exactly one of `offerId` or `offerGenerationInputs` must be
                provided.


                At most one intent signal per `type` is allowed.
              required:
                - name
                - sequenceStructureSetup
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Display name of the sequence
                scheduleId:
                  type: integer
                  minimum: 1
                  nullable: true
                  description: Id of the send schedule to use
                settings:
                  allOf:
                    - type: object
                      title: Sequence Settings
                      description: Settings configuration for a sequence
                      required:
                        - emailsCountPerDay
                        - daysToFinishProspect
                        - emailSendingDelaySeconds
                        - dailyThrottling
                        - disableOpensTracking
                        - repliesHandlingType
                        - enableLinksTracking
                      properties:
                        emailsCountPerDay:
                          type: integer
                          description: Maximum number of emails sent daily
                        daysToFinishProspect:
                          type: integer
                          description: Days taken for a prospect to finish
                        emailSendingDelaySeconds:
                          type: integer
                          description: Delay between sending emails in seconds
                        dailyThrottling:
                          type: integer
                          description: Number of prospects processed within 24-hour period
                        useDailyThrottling:
                          type: boolean
                          description: Whether daily throttling is enabled
                        disableOpensTracking:
                          type: boolean
                          description: Whether to disable email open tracking
                        repliesHandlingType:
                          type: string
                          enum:
                            - markAsFinished
                            - continueSending
                          description: How replies are handled
                        enableLinksTracking:
                          type: boolean
                          description: Whether to enable link tracking
                        isSendingPlainTextEnabled:
                          type: boolean
                          description: Whether to send emails as plain text instead of HTML
                        isListUnsubscribeHeaderEnabled:
                          type: boolean
                          description: >-
                            Whether to include a List-Unsubscribe header in all
                            emails from this sequence
                        isSameDomainSendingLimitEnabled:
                          type: boolean
                          description: >-
                            Whether to limit the number of contacts from the
                            same domain contacted per day
                        numberOfSameDomainSendingLimit:
                          type: integer
                          nullable: true
                          description: >-
                            Maximum number of same-domain contacts per day
                            (applicable when `isSameDomainSendingLimitEnabled`
                            is true)
                        matchProspectToEmailAccountProvider:
                          type: boolean
                          description: >-
                            Whether to match prospect email provider to sender
                            email provider
                        callIsAutomatic:
                          type: boolean
                          description: >-
                            Whether calls are handled automatically in this
                            sequence
                        taskIsAutomatic:
                          type: boolean
                          description: >-
                            Whether tasks are handled automatically in this
                            sequence
                        generatedTaskOwner:
                          type: string
                          nullable: true
                          enum:
                            - contact
                            - sequence
                          default: sequence
                          description: >-
                            Who owns generated tasks — the contact owner or the
                            sequence owner. Defaults to `sequence` when omitted.
                  nullable: true
                  description: >-
                    Generic sequence settings (throttling, tracking, replies
                    handling). Optional — sensible defaults are applied when
                    omitted.
                emailAccounts:
                  type: array
                  nullable: true
                  description: Email account ids to link to the sequence
                  items:
                    type: integer
                    format: int64
                    minimum: 1
                linkedInAccounts:
                  type: array
                  nullable: true
                  description: LinkedIn account ids to link to the sequence
                  items:
                    type: integer
                    minimum: 1
                offerId:
                  type: integer
                  format: int64
                  minimum: 1
                  nullable: true
                  description: >-
                    Id of an existing offer to seed the sequence from. Mutually
                    exclusive with `offerGenerationInputs`.
                offerGenerationInputs:
                  allOf:
                    - type: object
                      title: Offer generation inputs
                      description: >-
                        Inline offer-context inputs used when the sequence is
                        created without referencing a saved offer. Mirrors the
                        shape of an offer.


                        On create, exactly one of `offerId` or
                        `offerGenerationInputs` must be provided.
                      properties:
                        companyName:
                          type: string
                          maxLength: 200
                          description: Name of the company being represented
                        companyDescription:
                          type: string
                          description: Short description of what the company does
                          maxLength: 3000
                        icp:
                          type: string
                          maxLength: 1000
                          description: >-
                            Ideal Customer Profile — who the outreach is meant
                            for
                        reasonForOutreach:
                          type: string
                          maxLength: 1000
                          description: >-
                            Free-form rationale shown to the AI SDR for why this
                            outreach is being made
                        caseStudies:
                          type: array
                          maxItems: 10
                          description: Case studies that demonstrate the company's value
                          items:
                            type: string
                            minLength: 1
                            maxLength: 1000
                        painPoints:
                          type: array
                          maxItems: 10
                          description: Customer pain points this outreach addresses
                          items:
                            type: string
                            minLength: 1
                            maxLength: 1000
                        proofPoints:
                          type: array
                          maxItems: 10
                          description: Proof points that back up the offer's claims
                          items:
                            type: string
                            minLength: 1
                            maxLength: 1000
                        valuePropositions:
                          type: array
                          maxItems: 10
                          description: Value propositions presented in messaging
                          items:
                            type: string
                            minLength: 1
                            maxLength: 1000
                        callToActions:
                          type: array
                          maxItems: 10
                          description: Call-to-action phrasings the AI SDR can use
                          items:
                            type: string
                            minLength: 1
                            maxLength: 1000
                  nullable: true
                  description: >-
                    Inline offer-context inputs. Mutually exclusive with
                    `offerId`.
                toneOfVoice:
                  allOf:
                    - type: object
                      title: Tone of voice settings (request)
                      description: >-
                        Tone-of-voice configuration on create/patch. All fields
                        are optional on create — omitted fields fall back to
                        defaults (English (US), Confident tone, Medium length,
                        Man).
                      properties:
                        language:
                          allOf:
                            - type: string
                              title: Sales agent language
                              description: >-
                                Language used by the AI SDR when generating
                                outreach messages.
                              enum:
                                - englishUS
                                - englishUK
                                - spanish
                                - albanian
                                - armenian
                                - bengali
                                - bosnian
                                - bulgarian
                                - catalan
                                - chinese
                                - croatian
                                - czech
                                - danish
                                - dutch
                                - estonian
                                - finnish
                                - french
                                - georgian
                                - german
                                - greek
                                - hindi
                                - hungarian
                                - icelandic
                                - indonesian
                                - italian
                                - japanese
                                - kazakh
                                - korean
                                - latvian
                                - lithuanian
                                - macedonian
                                - malay
                                - mongolian
                                - norwegian
                                - persian
                                - polish
                                - portugueseEU
                                - portugueseBR
                                - romanian
                                - serbian
                                - slovak
                                - slovenian
                                - swedish
                                - thai
                                - turkish
                                - ukrainian
                                - vietnamese
                                - arabic
                                - uzbek
                                - hebrew
                          nullable: true
                        toneOfVoice:
                          allOf:
                            - type: string
                              title: Sales agent tone of voice
                              description: >-
                                Tone of voice used by the AI SDR when generating
                                outreach messages.
                              enum:
                                - confident
                                - persuasive
                                - witty
                                - straightforward
                                - empathetic
                          nullable: true
                        messageLength:
                          allOf:
                            - type: string
                              title: Personalized message length
                              description: >-
                                Target length for AI-generated personalized
                                messages.
                              enum:
                                - superShort
                                - short
                                - medium
                                - long
                          nullable: true
                        gender:
                          allOf:
                            - type: string
                              title: Sales agent gender
                              description: >-
                                Gender used by the AI SDR persona when
                                generating outreach messages.
                              enum:
                                - man
                                - woman
                          nullable: true
                  nullable: true
                  description: >-
                    Tone-of-voice configuration. Omitted fields fall back to
                    defaults (English (US), Confident, Medium, Man).
                sequenceStructureSetup:
                  type: object
                  title: Sequence structure setup
                  description: >-
                    Shape of the sequence steps the AI SDR should generate on
                    create.
                  required:
                    - generatedStepTypes
                  properties:
                    generatedStepTypes:
                      type: array
                      minItems: 1
                      description: >-
                        Step channels the AI SDR is allowed to generate. Must be
                        non-empty and contain no duplicates.
                      items:
                        type: string
                        title: Generated step type
                        description: >-
                          Channel of a step the AI SDR is allowed to generate
                          when building the sequence.
                        enum:
                          - email
                          - linkedIn
                          - call
                          - linkedInInMail
                          - linkedInAiVoice
                    generateConditional:
                      type: boolean
                      nullable: true
                      description: >-
                        When `true`, the AI SDR generates conditional branches
                        between steps and the step count is derived from the
                        branching structure. Defaults to `true` when omitted.
                    numberOfSteps:
                      type: integer
                      minimum: 1
                      maximum: 10
                      nullable: true
                      description: >-
                        Target number of steps to generate (1-10). Applies only
                        when `generateConditional` is `false`; ignored
                        otherwise. Defaults to `5` when omitted.
                providerLLM:
                  allOf:
                    - type: string
                      title: AI content provider
                      description: >-
                        LLM provider that generates the outreach content for the
                        AI SDR sequence.
                      enum:
                        - claude
                        - openAi
                        - gemini
                        - mistral
                  nullable: true
                  description: >-
                    LLM provider that generates the outreach content. Defaults
                    to `claude` when omitted.
                personalizationPoints:
                  allOf:
                    - type: object
                      title: Personalization points
                      description: >-
                        Which research signals the AI SDR is allowed to weave
                        into personalized messages. Every leaf is optional;
                        absent flags are treated as "no preference / keep the
                        current value".
                      properties:
                        basicResearch:
                          type: boolean
                          nullable: true
                          description: >-
                            Allow lightweight, low-cost personalization based on
                            basic contact and company facts
                        companyResearch:
                          type: object
                          nullable: true
                          description: >-
                            Per-aspect toggles for company-level research
                            signals
                          properties:
                            description:
                              type: boolean
                              nullable: true
                            mission:
                              type: boolean
                              nullable: true
                            techStack:
                              type: boolean
                              nullable: true
                            tenKReport:
                              type: boolean
                              nullable: true
                            recentReportForInvestors:
                              type: boolean
                              nullable: true
                            financialReport:
                              type: boolean
                              nullable: true
                            fundraisingResearch:
                              type: boolean
                              nullable: true
                            challenges:
                              type: boolean
                              nullable: true
                            recentNews:
                              type: boolean
                              nullable: true
                            predictChallengesAndCompetitors:
                              type: boolean
                              nullable: true
                            productsServicesDeepDive:
                              type: boolean
                              nullable: true
                            mergersAcquisitions:
                              type: boolean
                              nullable: true
                            customerReviews:
                              type: boolean
                              nullable: true
                        prospectResearch:
                          type: object
                          nullable: true
                          description: >-
                            Per-aspect toggles for prospect-level research
                            signals
                          properties:
                            aboutSection:
                              type: boolean
                              nullable: true
                            hobbiesInterests:
                              type: boolean
                              nullable: true
                            quotes:
                              type: boolean
                              nullable: true
                            achievements:
                              type: boolean
                              nullable: true
                            careerSummary:
                              type: boolean
                              nullable: true
                            jobResponsibilitiesInCurrentCompany:
                              type: boolean
                              nullable: true
                            achievementsInCurrentCompany:
                              type: boolean
                              nullable: true
                        industryResearch:
                          type: object
                          nullable: true
                          description: >-
                            Per-aspect toggles for industry-level research
                            signals
                          properties:
                            recentIndustryNews:
                              type: boolean
                              nullable: true
                            industryTrends:
                              type: boolean
                              nullable: true
                            competitorsOverviewNews:
                              type: boolean
                              nullable: true
                        contactFields:
                          type: object
                          nullable: true
                          description: >-
                            Which contact-record fields the AI SDR may
                            reference. Default fields and custom fields are
                            selected independently — `defaultFields` is an array
                            of enum values, `customFieldIds` is an array of
                            integer ids.
                          properties:
                            enabled:
                              type: boolean
                              nullable: true
                              description: >-
                                Master toggle for using contact fields in
                                personalization
                            defaultFields:
                              type: array
                              nullable: true
                              description: >-
                                Built-in contact fields to reference. Must
                                contain no duplicates.
                              items:
                                type: string
                                title: Contact default field
                                description: >-
                                  Built-in contact field selectable for AI SDR
                                  personalization.
                                enum:
                                  - firstName
                                  - lastName
                                  - title
                                  - companySize
                                  - industry
                                  - city
                                  - state
                                  - country
                            customFieldIds:
                              type: array
                              nullable: true
                              description: >-
                                Ids of custom contact fields to reference. Each
                                id must be positive; the array must contain no
                                duplicates.
                              items:
                                type: integer
                                minimum: 1
                        customResearch:
                          type: object
                          nullable: true
                          description: >-
                            Free-form custom research instructions the AI SDR
                            may follow
                          properties:
                            enabled:
                              type: boolean
                              nullable: true
                              description: Master toggle for using custom research
                            instructions:
                              type: string
                              nullable: true
                              maxLength: 2000
                              description: >-
                                Free-form prompt describing the custom research
                                the AI SDR should perform
                  nullable: true
                  description: >-
                    Research signals the AI SDR is allowed to use in
                    personalized messages
                autopilot:
                  allOf:
                    - type: object
                      title: Autopilot settings (create)
                      description: >-
                        Autopilot configuration applied at sequence-create time.
                        When `enabled` is `true`, the sequence is set to
                        actively search for and add new contacts immediately
                        after creation.
                      required:
                        - enabled
                      properties:
                        enabled:
                          type: boolean
                          description: Whether autopilot is enabled for the sequence
                        filters:
                          allOf:
                            - type: object
                              title: Autopilot filters
                              description: >-
                                Account- and contact-level filter configuration
                                used by autopilot when searching for new
                                contacts to add to the sequence.


                                Most collections are capped at 25 items.
                                `accountKeywords` and `contactKeywords` are
                                always present and non-null in responses even
                                when empty (`{ "values": [], "type": "or" }`).
                              properties:
                                accountListIds:
                                  type: array
                                  maxItems: 25
                                  description: >-
                                    Saved account-list ids the search is scoped
                                    to
                                  items:
                                    type: object
                                    title: Integer filter value
                                    description: >-
                                      A single integer value used in an
                                      autopilot filter, with include/exclude
                                      polarity.
                                    required:
                                      - value
                                    properties:
                                      value:
                                        type: integer
                                        minimum: 1
                                        description: The literal integer id to match
                                      type:
                                        allOf:
                                          - type: string
                                            title: Filter polarity
                                            description: >-
                                              Whether matching values are included in
                                              or excluded from the autopilot search.
                                            enum:
                                              - include
                                              - exclude
                                        description: >-
                                          Whether the value is included in or
                                          excluded from the search. Defaults to
                                          `include`.
                                industries:
                                  type: array
                                  maxItems: 25
                                  description: Industry filters
                                  items:
                                    type: object
                                    title: Filter value
                                    description: >-
                                      A single string value used in an autopilot
                                      filter, with include/exclude polarity.
                                    required:
                                      - value
                                    properties:
                                      value:
                                        type: string
                                        maxLength: 200
                                        description: The literal value to match (non-empty)
                                      type:
                                        allOf:
                                          - type: string
                                            title: Filter polarity
                                            description: >-
                                              Whether matching values are included in
                                              or excluded from the autopilot search.
                                            enum:
                                              - include
                                              - exclude
                                        description: >-
                                          Whether the value is included in or
                                          excluded from the search. Defaults to
                                          `include`.
                                companyLocations:
                                  type: array
                                  maxItems: 25
                                  description: Company location filters
                                  items:
                                    type: object
                                    title: Filter value
                                    description: >-
                                      A single string value used in an autopilot
                                      filter, with include/exclude polarity.
                                    required:
                                      - value
                                    properties:
                                      value:
                                        type: string
                                        maxLength: 200
                                        description: The literal value to match (non-empty)
                                      type:
                                        allOf:
                                          - type: string
                                            title: Filter polarity
                                            description: >-
                                              Whether matching values are included in
                                              or excluded from the autopilot search.
                                            enum:
                                              - include
                                              - exclude
                                        description: >-
                                          Whether the value is included in or
                                          excluded from the search. Defaults to
                                          `include`.
                                companySizes:
                                  type: array
                                  maxItems: 25
                                  description: Company size bands to include
                                  items:
                                    type: string
                                    title: Company size
                                    description: >-
                                      Headcount band used when filtering
                                      companies for autopilot search.
                                    enum:
                                      - none
                                      - selfEmployed
                                      - ten
                                      - fifty
                                      - twoHundred
                                      - fiveHundred
                                      - oneThousand
                                      - fiveThousand
                                      - tenThousand
                                      - overTenThousand
                                headcountGrowth:
                                  allOf:
                                    - type: object
                                      title: Headcount growth range
                                      description: >-
                                        Min/max range applied to the company's
                                        total headcount growth (percent). Either
                                        bound may be omitted.


                                        When both are provided, `min` must be
                                        less than or equal to `max`.
                                      properties:
                                        min:
                                          type: integer
                                          minimum: 0
                                          nullable: true
                                          description: Lower bound (inclusive), percent
                                        max:
                                          type: integer
                                          minimum: 0
                                          nullable: true
                                          description: Upper bound (inclusive), percent
                                  nullable: true
                                  description: Overall company headcount growth range
                                departmentHeadcountGrowth:
                                  allOf:
                                    - type: object
                                      title: Department headcount growth range
                                      description: >-
                                        Min/max range applied to a specific
                                        department's headcount growth (percent).
                                        Either bound may be omitted.


                                        When both are provided, `min` must be
                                        less than or equal to `max`.
                                      required:
                                        - department
                                      properties:
                                        min:
                                          type: integer
                                          minimum: 0
                                          nullable: true
                                          description: Lower bound (inclusive), percent
                                        max:
                                          type: integer
                                          minimum: 0
                                          nullable: true
                                          description: Upper bound (inclusive), percent
                                        department:
                                          type: string
                                          maxLength: 200
                                          description: >-
                                            Department name the growth range applies
                                            to (non-empty)
                                  nullable: true
                                  description: Per-department headcount growth range
                                minRevenue:
                                  allOf:
                                    - type: string
                                      title: Company revenue tier
                                      description: >-
                                        Annual revenue tier used when filtering
                                        companies for autopilot search.
                                      enum:
                                        - zeroMillion
                                        - halfMillion
                                        - oneMillion
                                        - twoAndHalfMillion
                                        - fiveMillion
                                        - tenMillion
                                        - twentyMillion
                                        - fiftyMillion
                                        - oneHundredMillion
                                        - fiveHundredMillion
                                        - oneThousandMillion
                                        - overOneThousandMillion
                                  nullable: true
                                  description: Minimum company revenue tier
                                maxRevenue:
                                  allOf:
                                    - type: string
                                      title: Company revenue tier
                                      description: >-
                                        Annual revenue tier used when filtering
                                        companies for autopilot search.
                                      enum:
                                        - zeroMillion
                                        - halfMillion
                                        - oneMillion
                                        - twoAndHalfMillion
                                        - fiveMillion
                                        - tenMillion
                                        - twentyMillion
                                        - fiftyMillion
                                        - oneHundredMillion
                                        - fiveHundredMillion
                                        - oneThousandMillion
                                        - overOneThousandMillion
                                  nullable: true
                                  description: >-
                                    Maximum company revenue tier. When both
                                    `minRevenue` and `maxRevenue` are provided,
                                    `minRevenue` must be less than or equal to
                                    `maxRevenue`.
                                accountKeywords:
                                  allOf:
                                    - type: object
                                      title: Keyword filter
                                      description: >-
                                        Boolean keyword filter applied to
                                        account or contact searches.


                                        In responses this field is always
                                        present and non-null even when no
                                        keywords are configured (`{ "values":
                                        [], "type": "or" }`).
                                      properties:
                                        values:
                                          type: array
                                          maxItems: 25
                                          description: >-
                                            Keyword values combined according to
                                            `type`
                                          items:
                                            type: object
                                            title: Filter value
                                            description: >-
                                              A single string value used in an
                                              autopilot filter, with include/exclude
                                              polarity.
                                            required:
                                              - value
                                            properties:
                                              value:
                                                type: string
                                                maxLength: 200
                                                description: The literal value to match (non-empty)
                                              type:
                                                allOf:
                                                  - type: string
                                                    title: Filter polarity
                                                    description: >-
                                                      Whether matching values are included in
                                                      or excluded from the autopilot search.
                                                    enum:
                                                      - include
                                                      - exclude
                                                description: >-
                                                  Whether the value is included in or
                                                  excluded from the search. Defaults to
                                                  `include`.
                                        type:
                                          allOf:
                                            - type: string
                                              title: Keyword combination
                                              description: >-
                                                Boolean combinator applied across
                                                keyword filter values.
                                              enum:
                                                - or
                                                - and
                                          description: >-
                                            Boolean combinator across `values`.
                                            Defaults to `or`.
                                  description: >-
                                    Free-text keyword filter applied at the
                                    account level. Always present and non-null
                                    in responses.
                                isHiringOnLinkedIn:
                                  type: boolean
                                  description: >-
                                    When `true`, restrict to companies currently
                                    hiring on LinkedIn. `false` (the default)
                                    applies no filter — it is treated the same
                                    as omitting the field.
                                contactLocations:
                                  type: array
                                  maxItems: 25
                                  description: Contact location filters
                                  items:
                                    type: object
                                    title: Filter value
                                    description: >-
                                      A single string value used in an autopilot
                                      filter, with include/exclude polarity.
                                    required:
                                      - value
                                    properties:
                                      value:
                                        type: string
                                        maxLength: 200
                                        description: The literal value to match (non-empty)
                                      type:
                                        allOf:
                                          - type: string
                                            title: Filter polarity
                                            description: >-
                                              Whether matching values are included in
                                              or excluded from the autopilot search.
                                            enum:
                                              - include
                                              - exclude
                                        description: >-
                                          Whether the value is included in or
                                          excluded from the search. Defaults to
                                          `include`.
                                jobTitles:
                                  type: array
                                  maxItems: 25
                                  description: Contact job-title filters
                                  items:
                                    type: object
                                    title: Filter value
                                    description: >-
                                      A single string value used in an autopilot
                                      filter, with include/exclude polarity.
                                    required:
                                      - value
                                    properties:
                                      value:
                                        type: string
                                        maxLength: 200
                                        description: The literal value to match (non-empty)
                                      type:
                                        allOf:
                                          - type: string
                                            title: Filter polarity
                                            description: >-
                                              Whether matching values are included in
                                              or excluded from the autopilot search.
                                            enum:
                                              - include
                                              - exclude
                                        description: >-
                                          Whether the value is included in or
                                          excluded from the search. Defaults to
                                          `include`.
                                departments:
                                  type: array
                                  maxItems: 25
                                  description: Contact department filters
                                  items:
                                    type: object
                                    title: Filter value
                                    description: >-
                                      A single string value used in an autopilot
                                      filter, with include/exclude polarity.
                                    required:
                                      - value
                                    properties:
                                      value:
                                        type: string
                                        maxLength: 200
                                        description: The literal value to match (non-empty)
                                      type:
                                        allOf:
                                          - type: string
                                            title: Filter polarity
                                            description: >-
                                              Whether matching values are included in
                                              or excluded from the autopilot search.
                                            enum:
                                              - include
                                              - exclude
                                        description: >-
                                          Whether the value is included in or
                                          excluded from the search. Defaults to
                                          `include`.
                                seniorities:
                                  type: array
                                  maxItems: 25
                                  description: Seniority slugs to include
                                  items:
                                    type: string
                                    minLength: 1
                                    maxLength: 200
                                yearsInCompany:
                                  type: array
                                  maxItems: 25
                                  description: Tenure bands to include
                                  items:
                                    type: string
                                    title: Years in current company
                                    description: >-
                                      Tenure band used when filtering contacts
                                      for autopilot search.
                                    enum:
                                      - none
                                      - lessThanOneYear
                                      - oneToTwoYears
                                      - threeToFiveYears
                                      - sixToTenYears
                                      - moreThanTenYears
                                contactKeywords:
                                  allOf:
                                    - type: object
                                      title: Keyword filter
                                      description: >-
                                        Boolean keyword filter applied to
                                        account or contact searches.


                                        In responses this field is always
                                        present and non-null even when no
                                        keywords are configured (`{ "values":
                                        [], "type": "or" }`).
                                      properties:
                                        values:
                                          type: array
                                          maxItems: 25
                                          description: >-
                                            Keyword values combined according to
                                            `type`
                                          items:
                                            type: object
                                            title: Filter value
                                            description: >-
                                              A single string value used in an
                                              autopilot filter, with include/exclude
                                              polarity.
                                            required:
                                              - value
                                            properties:
                                              value:
                                                type: string
                                                maxLength: 200
                                                description: The literal value to match (non-empty)
                                              type:
                                                allOf:
                                                  - type: string
                                                    title: Filter polarity
                                                    description: >-
                                                      Whether matching values are included in
                                                      or excluded from the autopilot search.
                                                    enum:
                                                      - include
                                                      - exclude
                                                description: >-
                                                  Whether the value is included in or
                                                  excluded from the search. Defaults to
                                                  `include`.
                                        type:
                                          allOf:
                                            - type: string
                                              title: Keyword combination
                                              description: >-
                                                Boolean combinator applied across
                                                keyword filter values.
                                              enum:
                                                - or
                                                - and
                                          description: >-
                                            Boolean combinator across `values`.
                                            Defaults to `or`.
                                  description: >-
                                    Free-text keyword filter applied at the
                                    contact level. Always present and non-null
                                    in responses.
                                changedJobIn90Days:
                                  type: boolean
                                  description: >-
                                    When `true`, restrict to contacts who
                                    changed jobs in the past 90 days. `false`
                                    (the default) applies no filter — it is
                                    treated the same as omitting the field.
                          nullable: true
                          description: Autopilot account/contact filter configuration
                        referenceUrl:
                          type: string
                          nullable: true
                          description: >-
                            Optional reference URL used to seed the autopilot
                            search
                        maxPeoplePerCompany:
                          type: integer
                          minimum: 1
                          nullable: true
                          description: Maximum contacts to add per company
                        maxPeopleToAddPerDay:
                          type: integer
                          minimum: 1
                          nullable: true
                          description: Maximum contacts to add per day
                        searchContactPhones:
                          type: boolean
                          nullable: true
                          description: When `true`, enrich phone numbers during search
                        addContactsWithoutEmailAddresses:
                          type: boolean
                          nullable: true
                          description: >-
                            When `true`, contacts without an email address are
                            still added to the sequence
                  nullable: true
                  description: >-
                    Autopilot configuration applied immediately after sequence
                    creation
                playbookId:
                  type: string
                  minLength: 1
                  nullable: true
                  description: >-
                    Composite playbook id (`{prefix}-{numericId}`) to attach to
                    the sequence. Prefix encodes the playbook scope: `g` for
                    global, `o` for organization, `t` for team (e.g. `g-1`,
                    `o-42`, `t-7`).
                knowledgeBaseId:
                  type: integer
                  format: int64
                  minimum: 1
                  nullable: true
                  description: Id of a knowledge base to connect to the sequence
                approvalMode:
                  allOf:
                    - type: object
                      title: Approval mode (create)
                      description: >-
                        Initial approval mode for the sequence — whether
                        AI-generated messages require human approval before
                        being sent.
                      required:
                        - enabled
                      properties:
                        enabled:
                          type: boolean
                          description: >-
                            When `true`, messages require human approval before
                            sending
                  nullable: true
                  description: >-
                    Initial approval-mode setting. Cannot be changed via the AI
                    SDR sequence PATCH — use `PUT .../approval-mode` after
                    creation.
                intentSignals:
                  type: array
                  nullable: true
                  description: Intent signals to attach. At most one per `type`.
                  items:
                    type: object
                    title: Intent signal
                    description: >-
                      Tagged-union intent signal. Exactly one of `postEngagers`,
                      `competitorFollowers`, `technologyUsed`, `jobHiring` is
                      populated, matching `type`. The other three must be
                      omitted or `null`.


                      A sequence may have at most one signal per `type`.
                      `technologyUsed` and `jobHiring` are mutually exclusive —
                      a sequence may include at most one of the two.
                    required:
                      - type
                    properties:
                      type:
                        type: string
                        title: Intent signal type
                        description: >-
                          Discriminator selecting which intent-signal sub-object
                          is populated.


                          - `linkedInPostEngagers` — populate `postEngagers`.

                          - `competitorFollowers` — populate
                          `competitorFollowers`.

                          - `technologyUsed` — populate `technologyUsed`.

                          - `jobHiring` — populate `jobHiring`.
                        enum:
                          - linkedInPostEngagers
                          - competitorFollowers
                          - technologyUsed
                          - jobHiring
                      postEngagers:
                        type: object
                        nullable: true
                        description: Populated when `type` = `linkedInPostEngagers`.
                        required:
                          - mode
                        properties:
                          mode:
                            type: string
                            title: LinkedIn post engagers mode
                            description: >-
                              Selects which sub-object of the LinkedIn post
                              engagers signal is populated.


                              - `monitorProfiles` — populate `monitorProfiles`.

                              - `monitorPosts` — populate `monitorPosts`.
                            enum:
                              - monitorProfiles
                              - monitorPosts
                          icpFitPercentage:
                            type: integer
                            description: >-
                              Minimum ICP fit percentage to consider an engager.
                              Must be one of `20`, `40`, `60`, `80`, `100`.
                            enum:
                              - 20
                              - 40
                              - 60
                              - 80
                              - 100
                          monitorProfiles:
                            type: object
                            nullable: true
                            description: Populated when `mode` = `monitorProfiles`.
                            required:
                              - monitorForDays
                            properties:
                              monitorForDays:
                                type: integer
                                description: >-
                                  Window over which to track engagement. Must be
                                  one of `2`, `3`, `5`, `7`, `15`, `30`.
                                enum:
                                  - 2
                                  - 3
                                  - 5
                                  - 7
                                  - 15
                                  - 30
                              profiles:
                                type: array
                                maxItems: 10
                                description: LinkedIn profiles to monitor (at most 10)
                                items:
                                  type: object
                                  required:
                                    - linkedInUrl
                                  properties:
                                    linkedInUrl:
                                      type: string
                                      minLength: 1
                                      maxLength: 2048
                                      description: Public LinkedIn profile URL
                                    numberOfPosts:
                                      type: integer
                                      description: >-
                                        How many recent posts of this profile to
                                        monitor. Must be one of `3`, `5`, `10`,
                                        `15`, `20`.
                                      enum:
                                        - 3
                                        - 5
                                        - 10
                                        - 15
                                        - 20
                          monitorPosts:
                            type: object
                            nullable: true
                            description: Populated when `mode` = `monitorPosts`.
                            properties:
                              postUrls:
                                type: array
                                maxItems: 10
                                description: >-
                                  Public LinkedIn post URLs to monitor (at most
                                  10)
                                items:
                                  type: string
                                  minLength: 1
                                  maxLength: 2048
                      competitorFollowers:
                        type: object
                        nullable: true
                        description: Populated when `type` = `competitorFollowers`.
                        properties:
                          linkedInUrls:
                            type: array
                            maxItems: 10
                            description: Competitor LinkedIn company URLs (at most 10)
                            items:
                              type: string
                              minLength: 1
                              maxLength: 2048
                          entitiesToFind:
                            type: integer
                            minimum: 100
                            maximum: 500
                            description: Number of follower contacts to surface (100-500)
                          icpFitPercentage:
                            type: integer
                            description: >-
                              Minimum ICP fit percentage. Must be one of `20`,
                              `40`, `60`, `80`, `100`.
                            enum:
                              - 20
                              - 40
                              - 60
                              - 80
                              - 100
                      technologyUsed:
                        type: object
                        nullable: true
                        description: Populated when `type` = `technologyUsed`.
                        properties:
                          industryId:
                            type: integer
                            minimum: 1
                            nullable: true
                            description: Optional industry filter
                          technologies:
                            type: array
                            maxItems: 10
                            description: Technology slugs to match (at most 10)
                            items:
                              type: string
                              minLength: 1
                              maxLength: 200
                          useAndLogicInTechnologies:
                            type: boolean
                            description: >-
                              When `true`, all listed technologies must be
                              present (AND); otherwise any match (OR).
                          entitiesToFind:
                            type: integer
                            minimum: 1
                            maximum: 500
                            description: Number of matching contacts to surface (1-500)
                      jobHiring:
                        type: object
                        nullable: true
                        description: Populated when `type` = `jobHiring`.
                        required:
                          - keyword
                        properties:
                          keyword:
                            type: string
                            minLength: 1
                            maxLength: 200
                            description: Job-posting keyword to match
                          industries:
                            type: array
                            maxItems: 10
                            description: Industry ids to scope the search (at most 10)
                            items:
                              type: integer
                              minimum: 1
                          entitiesToFind:
                            type: integer
                            minimum: 1
                            maximum: 500
                            description: Number of matching contacts to surface (1-500)
      responses:
        '201':
          description: AI SDR sequence created
          content:
            application/json:
              schema:
                allOf:
                  - allOf:
                      - type: object
                        properties:
                          id:
                            type: integer
                            readOnly: true
                            description: Unique identifier for the sequence
                          ownerUserId:
                            type: integer
                            readOnly: true
                            description: Identifier of the user who owns the sequence
                          name:
                            type: string
                            description: Name of the sequence
                          created:
                            type: string
                            format: date-time
                            readOnly: true
                            description: Sequence creation timestamp with timezone offset
                          status:
                            type: string
                            enum:
                              - new
                              - active
                              - paused
                            readOnly: true
                            description: Current status of the sequence
                          isArchived:
                            type: boolean
                            readOnly: true
                            description: Indicates if the sequence is archived
                          health:
                            type: string
                            description: >-
                              Overall health status of the sequence. Indicates
                              whether the sequence can operate normally or has
                              issues that need attention.


                              - `healthy` — Sequence is functioning normally
                              with no issues

                              - `stalled` — Sequence has stalled and is not
                              progressing

                              - `degraded` — Sequence is running but with
                              reduced effectiveness

                              - `blocked` — Sequence cannot proceed due to
                              critical issues
                            enum:
                              - healthy
                              - stalled
                              - degraded
                              - blocked
                            readOnly: true
                        example:
                          id: 12345
                          ownerUserId: 42
                          name: Sales Outreach
                          created: '2024-03-08T10:00:00+00:00'
                          status: active
                          isArchived: false
                          health: healthy
                      - type: object
                        properties:
                          scheduleId:
                            type: integer
                            description: Schedule ID
                          emailAccounts:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: integer
                                  format: int64
                                  description: Email account ID
                                email:
                                  type: string
                                  description: Email address
                              required:
                                - id
                                - email
                            description: >-
                              Email accounts used to send emails for this
                              sequence
                          linkedInAccounts:
                            type: array
                            items:
                              type: object
                              title: LinkedIn Account
                              description: A LinkedIn account linked to a sequence
                              properties:
                                id:
                                  type: integer
                                  description: Unique identifier for the LinkedIn account
                                name:
                                  type: string
                                  description: Name of the LinkedIn account
                                profileUrl:
                                  type: string
                                  nullable: true
                                  description: LinkedIn profile URL
                                status:
                                  type: string
                                  enum:
                                    - disabled
                                    - enabled
                                    - dailyLimitReached
                                    - cookieInvalid
                                  description: Current status of the LinkedIn account
                              example:
                                id: 42
                                name: John Doe
                                profileUrl: https://www.linkedin.com/in/johndoe
                                status: enabled
                            description: LinkedIn accounts linked to this sequence
                          settings:
                            type: object
                            title: Sequence Settings
                            description: Settings configuration for a sequence
                            required:
                              - emailsCountPerDay
                              - daysToFinishProspect
                              - emailSendingDelaySeconds
                              - dailyThrottling
                              - disableOpensTracking
                              - repliesHandlingType
                              - enableLinksTracking
                            properties:
                              emailsCountPerDay:
                                type: integer
                                description: Maximum number of emails sent daily
                              daysToFinishProspect:
                                type: integer
                                description: Days taken for a prospect to finish
                              emailSendingDelaySeconds:
                                type: integer
                                description: Delay between sending emails in seconds
                              dailyThrottling:
                                type: integer
                                description: >-
                                  Number of prospects processed within 24-hour
                                  period
                              useDailyThrottling:
                                type: boolean
                                description: Whether daily throttling is enabled
                              disableOpensTracking:
                                type: boolean
                                description: Whether to disable email open tracking
                              repliesHandlingType:
                                type: string
                                enum:
                                  - markAsFinished
                                  - continueSending
                                description: How replies are handled
                              enableLinksTracking:
                                type: boolean
                                description: Whether to enable link tracking
                              isSendingPlainTextEnabled:
                                type: boolean
                                description: >-
                                  Whether to send emails as plain text instead
                                  of HTML
                              isListUnsubscribeHeaderEnabled:
                                type: boolean
                                description: >-
                                  Whether to include a List-Unsubscribe header
                                  in all emails from this sequence
                              isSameDomainSendingLimitEnabled:
                                type: boolean
                                description: >-
                                  Whether to limit the number of contacts from
                                  the same domain contacted per day
                              numberOfSameDomainSendingLimit:
                                type: integer
                                nullable: true
                                description: >-
                                  Maximum number of same-domain contacts per day
                                  (applicable when
                                  `isSameDomainSendingLimitEnabled` is true)
                              matchProspectToEmailAccountProvider:
                                type: boolean
                                description: >-
                                  Whether to match prospect email provider to
                                  sender email provider
                              callIsAutomatic:
                                type: boolean
                                description: >-
                                  Whether calls are handled automatically in
                                  this sequence
                              taskIsAutomatic:
                                type: boolean
                                description: >-
                                  Whether tasks are handled automatically in
                                  this sequence
                              generatedTaskOwner:
                                type: string
                                nullable: true
                                enum:
                                  - contact
                                  - sequence
                                default: sequence
                                description: >-
                                  Who owns generated tasks — the contact owner
                                  or the sequence owner. Defaults to `sequence`
                                  when omitted.
                          steps:
                            type: array
                            items:
                              title: Sequence Step
                              discriminator:
                                propertyName: type
                                mapping:
                                  email:
                                    $ref: '#/components/schemas/email.type'
                                  linkedIn:
                                    $ref: '#/components/schemas/linkedin.type'
                                  call:
                                    $ref: '#/components/schemas/call.type'
                                  sms:
                                    $ref: '#/components/schemas/sms.type'
                                  whatsApp:
                                    $ref: '#/components/schemas/whatsapp.type'
                                  zapier:
                                    $ref: '#/components/schemas/zapier.type'
                                  task:
                                    $ref: '#/components/schemas/task.type'
                                  condition:
                                    $ref: '#/components/schemas/condition.type'
                              oneOf:
                                - type: object
                                  title: Email
                                  description: Email step with variant configuration
                                  properties:
                                    id:
                                      type: integer
                                      nullable: true
                                      readOnly: true
                                      description: Unique identifier for the step
                                    parentId:
                                      type: integer
                                      nullable: true
                                      description: ID of the parent step (for branching)
                                    ifConditionPositive:
                                      type: boolean
                                      nullable: true
                                      description: >-
                                        Whether this step is on the positive
                                        branch of a condition
                                    type:
                                      type: string
                                      enum:
                                        - email
                                      description: Step type discriminator
                                    delayInMinutes:
                                      type: integer
                                      minimum: 0
                                      description: >-
                                        Delay in minutes before executing this
                                        step
                                    executionMode:
                                      type: string
                                      description: Execution mode for the email step
                                      enum:
                                        - automatic
                                        - manual
                                    variants:
                                      type: array
                                      description: >-
                                        Array of email variants (A/B test
                                        versions)
                                      items:
                                        type: object
                                        title: Email Variant
                                        description: >-
                                          Individual email variant within an email
                                          step.
                                        properties:
                                          id:
                                            type: integer
                                            description: Unique identifier for this email variant
                                          subject:
                                            type: string
                                            nullable: true
                                            description: Email subject line.
                                          message:
                                            type: string
                                            nullable: true
                                            description: Email message content.
                                          attachmentIds:
                                            type: array
                                            nullable: true
                                            writeOnly: true
                                            maxItems: 3
                                            items:
                                              type: integer
                                            description: >-
                                              **Write-only.** IDs of previously
                                              uploaded attachments to attach to this
                                              variant. Upload files via `POST
                                              /v3/attachments` first to obtain
                                              attachment IDs.

                                              A variant may carry up to 3 attachments.
                                              Omit to leave attachments unset.

                                              Not returned on read — use
                                              `hasAttachments` to detect presence.
                                          hasAttachments:
                                            type: boolean
                                            readOnly: true
                                            description: >-
                                              Whether the variant has any attachments.
                                              Returned on read; ignored on write.
                                  required:
                                    - type
                                    - delayInMinutes
                                    - executionMode
                                    - variants
                                - title: LinkedIn
                                  description: >-
                                    LinkedIn step with action type
                                    sub-discriminator. Uses type "linkedIn" with
                                    a second discriminator actionType to select
                                    the specific LinkedIn action.
                                  discriminator:
                                    propertyName: actionType
                                    mapping:
                                      message:
                                        $ref: >-
                                          #/components/schemas/linkedin-message.type
                                      connect:
                                        $ref: >-
                                          #/components/schemas/linkedin-connect.type
                                      inMail:
                                        $ref: >-
                                          #/components/schemas/linkedin-inmail.type
                                      viewProfile:
                                        $ref: >-
                                          #/components/schemas/linkedin-view-profile.type
                                      endorseSkills:
                                        $ref: >-
                                          #/components/schemas/linkedin-endorse-skills.type
                                      voiceMessage:
                                        $ref: >-
                                          #/components/schemas/linkedin-voice-message.type
                                      likeRecentPosts:
                                        $ref: >-
                                          #/components/schemas/linkedin-like-recent-posts.type
                                      followProfile:
                                        $ref: >-
                                          #/components/schemas/linkedin-follow-profile.type
                                  oneOf:
                                    - type: object
                                      title: LinkedIn Message
                                      description: LinkedIn message action step
                                      properties:
                                        id:
                                          type: integer
                                          nullable: true
                                          readOnly: true
                                          description: Unique identifier for the step
                                        parentId:
                                          type: integer
                                          nullable: true
                                          description: ID of the parent step (for branching)
                                        ifConditionPositive:
                                          type: boolean
                                          nullable: true
                                          description: >-
                                            Whether this step is on the positive
                                            branch of a condition
                                        type:
                                          type: string
                                          enum:
                                            - linkedIn
                                          description: Step type discriminator
                                        actionType:
                                          type: string
                                          enum:
                                            - message
                                          description: LinkedIn action type discriminator
                                        delayInMinutes:
                                          type: integer
                                          minimum: 0
                                          description: >-
                                            Delay in minutes before executing this
                                            step
                                        executionMode:
                                          type: string
                                          description: Execution mode for the action
                                          enum:
                                            - automatic
                                            - manual
                                        variants:
                                          type: array
                                          description: >-
                                            Array of LinkedIn message variants (A/B
                                            test versions)
                                          items:
                                            type: object
                                            title: LinkedIn Variant
                                            description: >-
                                              Individual LinkedIn message/connect
                                              variant
                                            properties:
                                              id:
                                                type: integer
                                                description: >-
                                                  Unique identifier for this LinkedIn
                                                  variant
                                              message:
                                                type: string
                                                description: Message content
                                              isEnabled:
                                                type: boolean
                                                description: Indicates whether the variant is enabled
                                            required:
                                              - message
                                              - isEnabled
                                      required:
                                        - type
                                        - actionType
                                        - delayInMinutes
                                        - executionMode
                                        - variants
                                    - type: object
                                      title: LinkedIn Connect
                                      description: LinkedIn connect action step
                                      properties:
                                        id:
                                          type: integer
                                          nullable: true
                                          readOnly: true
                                          description: Unique identifier for the step
                                        parentId:
                                          type: integer
                                          nullable: true
                                          description: ID of the parent step (for branching)
                                        ifConditionPositive:
                                          type: boolean
                                          nullable: true
                                          description: >-
                                            Whether this step is on the positive
                                            branch of a condition
                                        type:
                                          type: string
                                          enum:
                                            - linkedIn
                                          description: Step type discriminator
                                        actionType:
                                          type: string
                                          enum:
                                            - connect
                                          description: LinkedIn action type discriminator
                                        delayInMinutes:
                                          type: integer
                                          minimum: 0
                                          description: >-
                                            Delay in minutes before executing this
                                            step
                                        executionMode:
                                          type: string
                                          description: Execution mode for the action
                                          enum:
                                            - automatic
                                            - manual
                                        variants:
                                          type: array
                                          description: >-
                                            Array of LinkedIn connect variants (A/B
                                            test versions). Message is optional, max
                                            300 characters.
                                          items:
                                            type: object
                                            title: LinkedIn Variant
                                            description: >-
                                              Individual LinkedIn message/connect
                                              variant
                                            properties:
                                              id:
                                                type: integer
                                                description: >-
                                                  Unique identifier for this LinkedIn
                                                  variant
                                              message:
                                                type: string
                                                description: Message content
                                              isEnabled:
                                                type: boolean
                                                description: Indicates whether the variant is enabled
                                            required:
                                              - message
                                              - isEnabled
                                      required:
                                        - type
                                        - actionType
                                        - delayInMinutes
                                        - executionMode
                                        - variants
                                    - type: object
                                      title: LinkedIn InMail
                                      description: LinkedIn InMail action step
                                      properties:
                                        id:
                                          type: integer
                                          nullable: true
                                          readOnly: true
                                          description: Unique identifier for the step
                                        parentId:
                                          type: integer
                                          nullable: true
                                          description: ID of the parent step (for branching)
                                        ifConditionPositive:
                                          type: boolean
                                          nullable: true
                                          description: >-
                                            Whether this step is on the positive
                                            branch of a condition
                                        type:
                                          type: string
                                          enum:
                                            - linkedIn
                                          description: Step type discriminator
                                        actionType:
                                          type: string
                                          enum:
                                            - inMail
                                          description: LinkedIn action type discriminator
                                        delayInMinutes:
                                          type: integer
                                          minimum: 0
                                          description: >-
                                            Delay in minutes before executing this
                                            step
                                        executionMode:
                                          type: string
                                          description: Execution mode for the InMail
                                          enum:
                                            - automatic
                                            - manual
                                        variants:
                                          type: array
                                          description: >-
                                            Array of LinkedIn InMail variants (A/B
                                            test versions)
                                          items:
                                            type: object
                                            title: LinkedIn InMail Variant
                                            description: Individual LinkedIn InMail variant
                                            properties:
                                              id:
                                                type: integer
                                                description: >-
                                                  Unique identifier for this LinkedIn
                                                  InMail variant
                                              subject:
                                                type: string
                                                description: InMail subject line
                                              message:
                                                type: string
                                                description: InMail message content
                                              isEnabled:
                                                type: boolean
                                                description: Indicates whether the variant is enabled
                                            required:
                                              - subject
                                              - message
                                              - isEnabled
                                      required:
                                        - type
                                        - actionType
                                        - delayInMinutes
                                        - executionMode
                                        - variants
                                    - type: object
                                      title: LinkedIn View Profile
                                      description: LinkedIn view profile action step
                                      properties:
                                        id:
                                          type: integer
                                          nullable: true
                                          readOnly: true
                                          description: Unique identifier for the step
                                        parentId:
                                          type: integer
                                          nullable: true
                                          description: ID of the parent step (for branching)
                                        ifConditionPositive:
                                          type: boolean
                                          nullable: true
                                          description: >-
                                            Whether this step is on the positive
                                            branch of a condition
                                        type:
                                          type: string
                                          enum:
                                            - linkedIn
                                          description: Step type discriminator
                                        actionType:
                                          type: string
                                          enum:
                                            - viewProfile
                                          description: LinkedIn action type discriminator
                                        delayInMinutes:
                                          type: integer
                                          minimum: 0
                                          description: >-
                                            Delay in minutes before executing this
                                            step
                                        executionMode:
                                          type: string
                                          description: Execution mode for the action
                                          enum:
                                            - automatic
                                            - manual
                                        description:
                                          type: string
                                          description: >-
                                            Description or notes for the profile
                                            view
                                      required:
                                        - type
                                        - actionType
                                        - delayInMinutes
                                        - executionMode
                                    - type: object
                                      title: LinkedIn Endorse Skills
                                      description: LinkedIn endorse skills action step
                                      properties:
                                        id:
                                          type: integer
                                          nullable: true
                                          readOnly: true
                                          description: Unique identifier for the step
                                        parentId:
                                          type: integer
                                          nullable: true
                                          description: ID of the parent step (for branching)
                                        ifConditionPositive:
                                          type: boolean
                                          nullable: true
                                          description: >-
                                            Whether this step is on the positive
                                            branch of a condition
                                        type:
                                          type: string
                                          enum:
                                            - linkedIn
                                          description: Step type discriminator
                                        actionType:
                                          type: string
                                          enum:
                                            - endorseSkills
                                          description: LinkedIn action type discriminator
                                        delayInMinutes:
                                          type: integer
                                          minimum: 0
                                          description: >-
                                            Delay in minutes before executing this
                                            step
                                        numberOfSkills:
                                          type: integer
                                          minimum: 1
                                          maximum: 3
                                          description: Number of skills to endorse (1-3)
                                      required:
                                        - type
                                        - actionType
                                        - delayInMinutes
                                        - numberOfSkills
                                    - type: object
                                      title: LinkedIn Voice Message
                                      description: LinkedIn voice message action step
                                      properties:
                                        id:
                                          type: integer
                                          nullable: true
                                          readOnly: true
                                          description: Unique identifier for the step
                                        parentId:
                                          type: integer
                                          nullable: true
                                          description: ID of the parent step (for branching)
                                        ifConditionPositive:
                                          type: boolean
                                          nullable: true
                                          description: >-
                                            Whether this step is on the positive
                                            branch of a condition
                                        type:
                                          type: string
                                          enum:
                                            - linkedIn
                                          description: Step type discriminator
                                        actionType:
                                          type: string
                                          enum:
                                            - voiceMessage
                                          description: LinkedIn action type discriminator
                                        delayInMinutes:
                                          type: integer
                                          minimum: 0
                                          description: >-
                                            Delay in minutes before executing this
                                            step
                                        audioFile:
                                          type: string
                                          description: The audio file URL for the voice message
                                      required:
                                        - type
                                        - actionType
                                        - delayInMinutes
                                        - audioFile
                                    - type: object
                                      title: LinkedIn Like Recent Posts
                                      description: LinkedIn like recent posts action step
                                      properties:
                                        id:
                                          type: integer
                                          nullable: true
                                          readOnly: true
                                          description: Unique identifier for the step
                                        parentId:
                                          type: integer
                                          nullable: true
                                          description: ID of the parent step (for branching)
                                        ifConditionPositive:
                                          type: boolean
                                          nullable: true
                                          description: >-
                                            Whether this step is on the positive
                                            branch of a condition
                                        type:
                                          type: string
                                          enum:
                                            - linkedIn
                                          description: Step type discriminator
                                        actionType:
                                          type: string
                                          enum:
                                            - likeRecentPosts
                                          description: LinkedIn action type discriminator
                                        delayInMinutes:
                                          type: integer
                                          minimum: 0
                                          description: >-
                                            Delay in minutes before executing this
                                            step
                                      required:
                                        - type
                                        - actionType
                                        - delayInMinutes
                                    - type: object
                                      title: LinkedIn Follow Profile
                                      description: LinkedIn follow profile action step
                                      properties:
                                        id:
                                          type: integer
                                          nullable: true
                                          readOnly: true
                                          description: Unique identifier for the step
                                        parentId:
                                          type: integer
                                          nullable: true
                                          description: ID of the parent step (for branching)
                                        ifConditionPositive:
                                          type: boolean
                                          nullable: true
                                          description: >-
                                            Whether this step is on the positive
                                            branch of a condition
                                        type:
                                          type: string
                                          enum:
                                            - linkedIn
                                          description: Step type discriminator
                                        actionType:
                                          type: string
                                          enum:
                                            - followProfile
                                          description: LinkedIn action type discriminator
                                        delayInMinutes:
                                          type: integer
                                          minimum: 0
                                          description: >-
                                            Delay in minutes before executing this
                                            step
                                      required:
                                        - type
                                        - actionType
                                        - delayInMinutes
                                - type: object
                                  title: Call
                                  description: Call step with script/notes
                                  properties:
                                    id:
                                      type: integer
                                      nullable: true
                                      readOnly: true
                                      description: Unique identifier for the step
                                    parentId:
                                      type: integer
                                      nullable: true
                                      description: ID of the parent step (for branching)
                                    ifConditionPositive:
                                      type: boolean
                                      nullable: true
                                      description: >-
                                        Whether this step is on the positive
                                        branch of a condition
                                    type:
                                      type: string
                                      enum:
                                        - call
                                      description: Step type discriminator
                                    delayInMinutes:
                                      type: integer
                                      minimum: 0
                                      description: >-
                                        Delay in minutes before executing this
                                        step
                                    message:
                                      type: string
                                      description: Notes or script for the call
                                  required:
                                    - type
                                    - delayInMinutes
                                - type: object
                                  title: SMS
                                  description: SMS step with message content
                                  properties:
                                    id:
                                      type: integer
                                      nullable: true
                                      readOnly: true
                                      description: Unique identifier for the step
                                    parentId:
                                      type: integer
                                      nullable: true
                                      description: ID of the parent step (for branching)
                                    ifConditionPositive:
                                      type: boolean
                                      nullable: true
                                      description: >-
                                        Whether this step is on the positive
                                        branch of a condition
                                    type:
                                      type: string
                                      enum:
                                        - sms
                                      description: Step type discriminator
                                    delayInMinutes:
                                      type: integer
                                      minimum: 0
                                      description: >-
                                        Delay in minutes before executing this
                                        step
                                    executionMode:
                                      type: string
                                      description: Execution mode for the SMS step
                                      enum:
                                        - automatic
                                        - manual
                                    message:
                                      type: string
                                      description: SMS message content
                                  required:
                                    - type
                                    - delayInMinutes
                                    - executionMode
                                    - message
                                - type: object
                                  title: WhatsApp
                                  description: WhatsApp step with message content
                                  properties:
                                    id:
                                      type: integer
                                      nullable: true
                                      readOnly: true
                                      description: Unique identifier for the step
                                    parentId:
                                      type: integer
                                      nullable: true
                                      description: ID of the parent step (for branching)
                                    ifConditionPositive:
                                      type: boolean
                                      nullable: true
                                      description: >-
                                        Whether this step is on the positive
                                        branch of a condition
                                    type:
                                      type: string
                                      enum:
                                        - whatsApp
                                      description: Step type discriminator
                                    delayInMinutes:
                                      type: integer
                                      minimum: 0
                                      description: >-
                                        Delay in minutes before executing this
                                        step
                                    message:
                                      type: string
                                      description: WhatsApp message content
                                  required:
                                    - type
                                    - delayInMinutes
                                    - message
                                - type: object
                                  title: Zapier
                                  description: Zapier integration step
                                  properties:
                                    id:
                                      type: integer
                                      nullable: true
                                      readOnly: true
                                      description: Unique identifier for the step
                                    parentId:
                                      type: integer
                                      nullable: true
                                      description: ID of the parent step (for branching)
                                    ifConditionPositive:
                                      type: boolean
                                      nullable: true
                                      description: >-
                                        Whether this step is on the positive
                                        branch of a condition
                                    type:
                                      type: string
                                      enum:
                                        - zapier
                                      description: Step type discriminator
                                    delayInMinutes:
                                      type: integer
                                      minimum: 0
                                      description: >-
                                        Delay in minutes before executing this
                                        step
                                    name:
                                      type: string
                                      description: Name of the Zapier step
                                    action:
                                      type: string
                                      description: Zapier action type
                                      enum:
                                        - immediately
                                        - wait
                                  required:
                                    - type
                                    - delayInMinutes
                                    - name
                                    - action
                                - type: object
                                  title: Task
                                  description: Task step for manual actions
                                  properties:
                                    id:
                                      type: integer
                                      nullable: true
                                      readOnly: true
                                      description: Unique identifier for the step
                                    parentId:
                                      type: integer
                                      nullable: true
                                      description: ID of the parent step (for branching)
                                    ifConditionPositive:
                                      type: boolean
                                      nullable: true
                                      description: >-
                                        Whether this step is on the positive
                                        branch of a condition
                                    type:
                                      type: string
                                      enum:
                                        - task
                                      description: Step type discriminator
                                    delayInMinutes:
                                      type: integer
                                      minimum: 0
                                      description: >-
                                        Delay in minutes before executing this
                                        step
                                    actionType:
                                      type: string
                                      description: Type of task action to perform
                                      enum:
                                        - toDo
                                        - meeting
                                    description:
                                      type: string
                                      description: Task description or instructions
                                  required:
                                    - type
                                    - delayInMinutes
                                    - actionType
                                    - description
                                - type: object
                                  title: Condition
                                  description: >-
                                    Condition step that evaluates rules before
                                    proceeding
                                  properties:
                                    id:
                                      type: integer
                                      nullable: true
                                      readOnly: true
                                      description: Unique identifier for the step
                                    parentId:
                                      type: integer
                                      nullable: true
                                      description: ID of the parent step (for branching)
                                    ifConditionPositive:
                                      type: boolean
                                      nullable: true
                                      description: >-
                                        Whether this step is on the positive
                                        branch of a condition
                                    type:
                                      type: string
                                      enum:
                                        - condition
                                      description: Step type discriminator
                                    delayInMinutes:
                                      type: integer
                                      minimum: 0
                                      description: >-
                                        Delay in minutes before executing this
                                        step
                                    waitInMinutes:
                                      type: integer
                                      minimum: 0
                                      description: >-
                                        Wait time in minutes for condition
                                        evaluation
                                    conditions:
                                      type: array
                                      description: Array of condition templates to evaluate
                                      items:
                                        type: object
                                        title: ConditionTemplate
                                        description: >-
                                          Template defining a condition with
                                          property and rules
                                        properties:
                                          property:
                                            type: string
                                            description: Property name to evaluate
                                          rules:
                                            type: array
                                            description: Set of rules to apply to the property
                                            items:
                                              type: object
                                              title: ConditionRule
                                              description: >-
                                                Rule defining operator and value for
                                                condition
                                              properties:
                                                operator:
                                                  type: string
                                                  description: >-
                                                    Comparison operator (e.g., `isSet`,
                                                    `isNotSet`, `equals`, etc.)
                                                value:
                                                  type: string
                                                  nullable: true
                                                  description: >-
                                                    Value to compare against. Null for
                                                    operators like `isSet`/`isNotSet`.
                                              required:
                                                - operator
                                        required:
                                          - property
                                          - rules
                                  required:
                                    - type
                                    - delayInMinutes
                                    - waitInMinutes
                                    - conditions
                            description: Array of sequence steps
                    example:
                      id: 123
                      ownerUserId: 42
                      name: Sales Outreach 2024
                      status: active
                      created: '2024-03-08T14:30:00+00:00'
                      isArchived: false
                      health: degraded
                      scheduleId: 1
                      emailAccounts:
                        - id: 1
                          email: sales@company.com
                        - id: 2
                          email: outreach@company.com
                      linkedInAccounts:
                        - id: 42
                          name: John Doe
                          profileUrl: https://www.linkedin.com/in/johndoe
                          status: enabled
                      settings:
                        emailsCountPerDay: 50
                        daysToFinishProspect: 14
                        emailSendingDelaySeconds: 30
                        dailyThrottling: 200
                        disableOpensTracking: false
                        repliesHandlingType: markAsFinished
                        enableLinksTracking: true
                      steps:
                        - id: 1323
                          type: email
                          delayInMinutes: 0
                          executionMode: automatic
                          variants:
                            - id: 1
                              subject: Quick question about {{companyName}}
                              message: >-
                                <p>Hi {{firstName}},</p><p>I noticed you are
                                leading initiatives at {{companyName}} and
                                wanted to reach out.</p><p>Best regards,
                                John</p>
                        - id: 43432
                          type: linkedIn
                          actionType: message
                          delayInMinutes: 2880
                          executionMode: automatic
                          variants:
                            - id: 2
                              message: >-
                                Hi {{firstName}}, I noticed your great work at
                                {{companyName}}. Would love to connect!
                              isEnabled: true
                  - type: object
                    description: >-
                      AI SDR sequence creation response — extends the generic
                      sequence response with the AI SDR-specific settings under
                      `aiSdr`.
                    properties:
                      aiSdr:
                        type: object
                        title: AI SDR sequence settings
                        description: >-
                          AI SDR-specific settings of a sequence. Returned by
                          `GET .../settings` and `PATCH .../settings`. Generic
                          sequence fields (name, schedule, accounts, etc.) come
                          from the generic `GET /v3/sequences/{id}` and are NOT
                          included here.
                        properties:
                          offerId:
                            type: integer
                            format: int64
                            nullable: true
                            description: >-
                              Id of the saved offer the sequence was seeded
                              from. `null` when the sequence was created with
                              inline `offerGenerationInputs`.
                            readOnly: true
                          offerGenerationInputs:
                            type: object
                            title: Offer generation inputs
                            description: >-
                              Inline offer-context inputs used when the sequence
                              is created without referencing a saved offer.
                              Mirrors the shape of an offer.


                              On create, exactly one of `offerId` or
                              `offerGenerationInputs` must be provided.
                            properties:
                              companyName:
                                type: string
                                maxLength: 200
                                description: Name of the company being represented
                              companyDescription:
                                type: string
                                description: Short description of what the company does
                                maxLength: 3000
                              icp:
                                type: string
                                maxLength: 1000
                                description: >-
                                  Ideal Customer Profile — who the outreach is
                                  meant for
                              reasonForOutreach:
                                type: string
                                maxLength: 1000
                                description: >-
                                  Free-form rationale shown to the AI SDR for
                                  why this outreach is being made
                              caseStudies:
                                type: array
                                maxItems: 10
                                description: >-
                                  Case studies that demonstrate the company's
                                  value
                                items:
                                  type: string
                                  minLength: 1
                                  maxLength: 1000
                              painPoints:
                                type: array
                                maxItems: 10
                                description: Customer pain points this outreach addresses
                                items:
                                  type: string
                                  minLength: 1
                                  maxLength: 1000
                              proofPoints:
                                type: array
                                maxItems: 10
                                description: Proof points that back up the offer's claims
                                items:
                                  type: string
                                  minLength: 1
                                  maxLength: 1000
                              valuePropositions:
                                type: array
                                maxItems: 10
                                description: Value propositions presented in messaging
                                items:
                                  type: string
                                  minLength: 1
                                  maxLength: 1000
                              callToActions:
                                type: array
                                maxItems: 10
                                description: Call-to-action phrasings the AI SDR can use
                                items:
                                  type: string
                                  minLength: 1
                                  maxLength: 1000
                          toneOfVoice:
                            type: object
                            title: Tone of voice (response)
                            description: >-
                              Tone-of-voice configuration as returned in
                              sequence responses. All four fields are always
                              populated.
                            properties:
                              language:
                                type: string
                                title: Sales agent language
                                description: >-
                                  Language used by the AI SDR when generating
                                  outreach messages.
                                enum:
                                  - englishUS
                                  - englishUK
                                  - spanish
                                  - albanian
                                  - armenian
                                  - bengali
                                  - bosnian
                                  - bulgarian
                                  - catalan
                                  - chinese
                                  - croatian
                                  - czech
                                  - danish
                                  - dutch
                                  - estonian
                                  - finnish
                                  - french
                                  - georgian
                                  - german
                                  - greek
                                  - hindi
                                  - hungarian
                                  - icelandic
                                  - indonesian
                                  - italian
                                  - japanese
                                  - kazakh
                                  - korean
                                  - latvian
                                  - lithuanian
                                  - macedonian
                                  - malay
                                  - mongolian
                                  - norwegian
                                  - persian
                                  - polish
                                  - portugueseEU
                                  - portugueseBR
                                  - romanian
                                  - serbian
                                  - slovak
                                  - slovenian
                                  - swedish
                                  - thai
                                  - turkish
                                  - ukrainian
                                  - vietnamese
                                  - arabic
                                  - uzbek
                                  - hebrew
                              toneOfVoice:
                                type: string
                                title: Sales agent tone of voice
                                description: >-
                                  Tone of voice used by the AI SDR when
                                  generating outreach messages.
                                enum:
                                  - confident
                                  - persuasive
                                  - witty
                                  - straightforward
                                  - empathetic
                              messageLength:
                                type: string
                                title: Personalized message length
                                description: >-
                                  Target length for AI-generated personalized
                                  messages.
                                enum:
                                  - superShort
                                  - short
                                  - medium
                                  - long
                              gender:
                                type: string
                                title: Sales agent gender
                                description: >-
                                  Gender used by the AI SDR persona when
                                  generating outreach messages.
                                enum:
                                  - man
                                  - woman
                          generatedStepTypes:
                            type: array
                            description: Step channels the AI SDR is allowed to generate
                            items:
                              type: string
                              title: Generated step type
                              description: >-
                                Channel of a step the AI SDR is allowed to
                                generate when building the sequence.
                              enum:
                                - email
                                - linkedIn
                                - call
                                - linkedInInMail
                                - linkedInAiVoice
                          providerLLM:
                            type: string
                            title: AI content provider
                            description: >-
                              LLM provider that generates the outreach content
                              for the AI SDR sequence.
                            enum:
                              - claude
                              - openAi
                              - gemini
                              - mistral
                          personalizationPoints:
                            type: object
                            title: Personalization points
                            description: >-
                              Which research signals the AI SDR is allowed to
                              weave into personalized messages. Every leaf is
                              optional; absent flags are treated as "no
                              preference / keep the current value".
                            properties:
                              basicResearch:
                                type: boolean
                                nullable: true
                                description: >-
                                  Allow lightweight, low-cost personalization
                                  based on basic contact and company facts
                              companyResearch:
                                type: object
                                nullable: true
                                description: >-
                                  Per-aspect toggles for company-level research
                                  signals
                                properties:
                                  description:
                                    type: boolean
                                    nullable: true
                                  mission:
                                    type: boolean
                                    nullable: true
                                  techStack:
                                    type: boolean
                                    nullable: true
                                  tenKReport:
                                    type: boolean
                                    nullable: true
                                  recentReportForInvestors:
                                    type: boolean
                                    nullable: true
                                  financialReport:
                                    type: boolean
                                    nullable: true
                                  fundraisingResearch:
                                    type: boolean
                                    nullable: true
                                  challenges:
                                    type: boolean
                                    nullable: true
                                  recentNews:
                                    type: boolean
                                    nullable: true
                                  predictChallengesAndCompetitors:
                                    type: boolean
                                    nullable: true
                                  productsServicesDeepDive:
                                    type: boolean
                                    nullable: true
                                  mergersAcquisitions:
                                    type: boolean
                                    nullable: true
                                  customerReviews:
                                    type: boolean
                                    nullable: true
                              prospectResearch:
                                type: object
                                nullable: true
                                description: >-
                                  Per-aspect toggles for prospect-level research
                                  signals
                                properties:
                                  aboutSection:
                                    type: boolean
                                    nullable: true
                                  hobbiesInterests:
                                    type: boolean
                                    nullable: true
                                  quotes:
                                    type: boolean
                                    nullable: true
                                  achievements:
                                    type: boolean
                                    nullable: true
                                  careerSummary:
                                    type: boolean
                                    nullable: true
                                  jobResponsibilitiesInCurrentCompany:
                                    type: boolean
                                    nullable: true
                                  achievementsInCurrentCompany:
                                    type: boolean
                                    nullable: true
                              industryResearch:
                                type: object
                                nullable: true
                                description: >-
                                  Per-aspect toggles for industry-level research
                                  signals
                                properties:
                                  recentIndustryNews:
                                    type: boolean
                                    nullable: true
                                  industryTrends:
                                    type: boolean
                                    nullable: true
                                  competitorsOverviewNews:
                                    type: boolean
                                    nullable: true
                              contactFields:
                                type: object
                                nullable: true
                                description: >-
                                  Which contact-record fields the AI SDR may
                                  reference. Default fields and custom fields
                                  are selected independently — `defaultFields`
                                  is an array of enum values, `customFieldIds`
                                  is an array of integer ids.
                                properties:
                                  enabled:
                                    type: boolean
                                    nullable: true
                                    description: >-
                                      Master toggle for using contact fields in
                                      personalization
                                  defaultFields:
                                    type: array
                                    nullable: true
                                    description: >-
                                      Built-in contact fields to reference. Must
                                      contain no duplicates.
                                    items:
                                      type: string
                                      title: Contact default field
                                      description: >-
                                        Built-in contact field selectable for AI
                                        SDR personalization.
                                      enum:
                                        - firstName
                                        - lastName
                                        - title
                                        - companySize
                                        - industry
                                        - city
                                        - state
                                        - country
                                  customFieldIds:
                                    type: array
                                    nullable: true
                                    description: >-
                                      Ids of custom contact fields to reference.
                                      Each id must be positive; the array must
                                      contain no duplicates.
                                    items:
                                      type: integer
                                      minimum: 1
                              customResearch:
                                type: object
                                nullable: true
                                description: >-
                                  Free-form custom research instructions the AI
                                  SDR may follow
                                properties:
                                  enabled:
                                    type: boolean
                                    nullable: true
                                    description: Master toggle for using custom research
                                  instructions:
                                    type: string
                                    nullable: true
                                    maxLength: 2000
                                    description: >-
                                      Free-form prompt describing the custom
                                      research the AI SDR should perform
                          autopilot:
                            type: object
                            title: Autopilot settings (response)
                            description: >-
                              Autopilot configuration as returned in sequence
                              responses.
                            properties:
                              status:
                                type: string
                                title: Autopilot status
                                description: >-
                                  Current autopilot status of the AI SDR
                                  sequence.


                                  - `enabled` — autopilot is actively searching
                                  and adding contacts.

                                  - `disabled` — autopilot is turned off.

                                  - `paused` — autopilot is paused.

                                  - `disabledByLackOfContacts` — autopilot was
                                  auto-disabled because no matching contacts
                                  were found.

                                  - `disabledByContactsLimitExceeded` —
                                  autopilot was auto-disabled because the team
                                  contacts limit was reached.
                                enum:
                                  - enabled
                                  - disabled
                                  - paused
                                  - disabledByLackOfContacts
                                  - disabledByContactsLimitExceeded
                              isSearchInProgress:
                                type: boolean
                                description: >-
                                  Whether an autopilot contact search is
                                  currently running for this sequence
                              filters:
                                allOf:
                                  - type: object
                                    title: Autopilot filters
                                    description: >-
                                      Account- and contact-level filter
                                      configuration used by autopilot when
                                      searching for new contacts to add to the
                                      sequence.


                                      Most collections are capped at 25 items.
                                      `accountKeywords` and `contactKeywords`
                                      are always present and non-null in
                                      responses even when empty (`{ "values":
                                      [], "type": "or" }`).
                                    properties:
                                      accountListIds:
                                        type: array
                                        maxItems: 25
                                        description: >-
                                          Saved account-list ids the search is
                                          scoped to
                                        items:
                                          type: object
                                          title: Integer filter value
                                          description: >-
                                            A single integer value used in an
                                            autopilot filter, with include/exclude
                                            polarity.
                                          required:
                                            - value
                                          properties:
                                            value:
                                              type: integer
                                              minimum: 1
                                              description: The literal integer id to match
                                            type:
                                              allOf:
                                                - type: string
                                                  title: Filter polarity
                                                  description: >-
                                                    Whether matching values are included in
                                                    or excluded from the autopilot search.
                                                  enum:
                                                    - include
                                                    - exclude
                                              description: >-
                                                Whether the value is included in or
                                                excluded from the search. Defaults to
                                                `include`.
                                      industries:
                                        type: array
                                        maxItems: 25
                                        description: Industry filters
                                        items:
                                          type: object
                                          title: Filter value
                                          description: >-
                                            A single string value used in an
                                            autopilot filter, with include/exclude
                                            polarity.
                                          required:
                                            - value
                                          properties:
                                            value:
                                              type: string
                                              maxLength: 200
                                              description: The literal value to match (non-empty)
                                            type:
                                              allOf:
                                                - type: string
                                                  title: Filter polarity
                                                  description: >-
                                                    Whether matching values are included in
                                                    or excluded from the autopilot search.
                                                  enum:
                                                    - include
                                                    - exclude
                                              description: >-
                                                Whether the value is included in or
                                                excluded from the search. Defaults to
                                                `include`.
                                      companyLocations:
                                        type: array
                                        maxItems: 25
                                        description: Company location filters
                                        items:
                                          type: object
                                          title: Filter value
                                          description: >-
                                            A single string value used in an
                                            autopilot filter, with include/exclude
                                            polarity.
                                          required:
                                            - value
                                          properties:
                                            value:
                                              type: string
                                              maxLength: 200
                                              description: The literal value to match (non-empty)
                                            type:
                                              allOf:
                                                - type: string
                                                  title: Filter polarity
                                                  description: >-
                                                    Whether matching values are included in
                                                    or excluded from the autopilot search.
                                                  enum:
                                                    - include
                                                    - exclude
                                              description: >-
                                                Whether the value is included in or
                                                excluded from the search. Defaults to
                                                `include`.
                                      companySizes:
                                        type: array
                                        maxItems: 25
                                        description: Company size bands to include
                                        items:
                                          type: string
                                          title: Company size
                                          description: >-
                                            Headcount band used when filtering
                                            companies for autopilot search.
                                          enum:
                                            - none
                                            - selfEmployed
                                            - ten
                                            - fifty
                                            - twoHundred
                                            - fiveHundred
                                            - oneThousand
                                            - fiveThousand
                                            - tenThousand
                                            - overTenThousand
                                      headcountGrowth:
                                        allOf:
                                          - type: object
                                            title: Headcount growth range
                                            description: >-
                                              Min/max range applied to the company's
                                              total headcount growth (percent). Either
                                              bound may be omitted.


                                              When both are provided, `min` must be
                                              less than or equal to `max`.
                                            properties:
                                              min:
                                                type: integer
                                                minimum: 0
                                                nullable: true
                                                description: Lower bound (inclusive), percent
                                              max:
                                                type: integer
                                                minimum: 0
                                                nullable: true
                                                description: Upper bound (inclusive), percent
                                        nullable: true
                                        description: Overall company headcount growth range
                                      departmentHeadcountGrowth:
                                        allOf:
                                          - type: object
                                            title: Department headcount growth range
                                            description: >-
                                              Min/max range applied to a specific
                                              department's headcount growth (percent).
                                              Either bound may be omitted.


                                              When both are provided, `min` must be
                                              less than or equal to `max`.
                                            required:
                                              - department
                                            properties:
                                              min:
                                                type: integer
                                                minimum: 0
                                                nullable: true
                                                description: Lower bound (inclusive), percent
                                              max:
                                                type: integer
                                                minimum: 0
                                                nullable: true
                                                description: Upper bound (inclusive), percent
                                              department:
                                                type: string
                                                maxLength: 200
                                                description: >-
                                                  Department name the growth range applies
                                                  to (non-empty)
                                        nullable: true
                                        description: Per-department headcount growth range
                                      minRevenue:
                                        allOf:
                                          - type: string
                                            title: Company revenue tier
                                            description: >-
                                              Annual revenue tier used when filtering
                                              companies for autopilot search.
                                            enum:
                                              - zeroMillion
                                              - halfMillion
                                              - oneMillion
                                              - twoAndHalfMillion
                                              - fiveMillion
                                              - tenMillion
                                              - twentyMillion
                                              - fiftyMillion
                                              - oneHundredMillion
                                              - fiveHundredMillion
                                              - oneThousandMillion
                                              - overOneThousandMillion
                                        nullable: true
                                        description: Minimum company revenue tier
                                      maxRevenue:
                                        allOf:
                                          - type: string
                                            title: Company revenue tier
                                            description: >-
                                              Annual revenue tier used when filtering
                                              companies for autopilot search.
                                            enum:
                                              - zeroMillion
                                              - halfMillion
                                              - oneMillion
                                              - twoAndHalfMillion
                                              - fiveMillion
                                              - tenMillion
                                              - twentyMillion
                                              - fiftyMillion
                                              - oneHundredMillion
                                              - fiveHundredMillion
                                              - oneThousandMillion
                                              - overOneThousandMillion
                                        nullable: true
                                        description: >-
                                          Maximum company revenue tier. When both
                                          `minRevenue` and `maxRevenue` are
                                          provided, `minRevenue` must be less than
                                          or equal to `maxRevenue`.
                                      accountKeywords:
                                        allOf:
                                          - type: object
                                            title: Keyword filter
                                            description: >-
                                              Boolean keyword filter applied to
                                              account or contact searches.


                                              In responses this field is always
                                              present and non-null even when no
                                              keywords are configured (`{ "values":
                                              [], "type": "or" }`).
                                            properties:
                                              values:
                                                type: array
                                                maxItems: 25
                                                description: >-
                                                  Keyword values combined according to
                                                  `type`
                                                items:
                                                  type: object
                                                  title: Filter value
                                                  description: >-
                                                    A single string value used in an
                                                    autopilot filter, with include/exclude
                                                    polarity.
                                                  required:
                                                    - value
                                                  properties:
                                                    value:
                                                      type: string
                                                      maxLength: 200
                                                      description: The literal value to match (non-empty)
                                                    type:
                                                      allOf:
                                                        - type: string
                                                          title: Filter polarity
                                                          description: >-
                                                            Whether matching values are included in
                                                            or excluded from the autopilot search.
                                                          enum:
                                                            - include
                                                            - exclude
                                                      description: >-
                                                        Whether the value is included in or
                                                        excluded from the search. Defaults to
                                                        `include`.
                                              type:
                                                allOf:
                                                  - type: string
                                                    title: Keyword combination
                                                    description: >-
                                                      Boolean combinator applied across
                                                      keyword filter values.
                                                    enum:
                                                      - or
                                                      - and
                                                description: >-
                                                  Boolean combinator across `values`.
                                                  Defaults to `or`.
                                        description: >-
                                          Free-text keyword filter applied at the
                                          account level. Always present and
                                          non-null in responses.
                                      isHiringOnLinkedIn:
                                        type: boolean
                                        description: >-
                                          When `true`, restrict to companies
                                          currently hiring on LinkedIn. `false`
                                          (the default) applies no filter — it is
                                          treated the same as omitting the field.
                                      contactLocations:
                                        type: array
                                        maxItems: 25
                                        description: Contact location filters
                                        items:
                                          type: object
                                          title: Filter value
                                          description: >-
                                            A single string value used in an
                                            autopilot filter, with include/exclude
                                            polarity.
                                          required:
                                            - value
                                          properties:
                                            value:
                                              type: string
                                              maxLength: 200
                                              description: The literal value to match (non-empty)
                                            type:
                                              allOf:
                                                - type: string
                                                  title: Filter polarity
                                                  description: >-
                                                    Whether matching values are included in
                                                    or excluded from the autopilot search.
                                                  enum:
                                                    - include
                                                    - exclude
                                              description: >-
                                                Whether the value is included in or
                                                excluded from the search. Defaults to
                                                `include`.
                                      jobTitles:
                                        type: array
                                        maxItems: 25
                                        description: Contact job-title filters
                                        items:
                                          type: object
                                          title: Filter value
                                          description: >-
                                            A single string value used in an
                                            autopilot filter, with include/exclude
                                            polarity.
                                          required:
                                            - value
                                          properties:
                                            value:
                                              type: string
                                              maxLength: 200
                                              description: The literal value to match (non-empty)
                                            type:
                                              allOf:
                                                - type: string
                                                  title: Filter polarity
                                                  description: >-
                                                    Whether matching values are included in
                                                    or excluded from the autopilot search.
                                                  enum:
                                                    - include
                                                    - exclude
                                              description: >-
                                                Whether the value is included in or
                                                excluded from the search. Defaults to
                                                `include`.
                                      departments:
                                        type: array
                                        maxItems: 25
                                        description: Contact department filters
                                        items:
                                          type: object
                                          title: Filter value
                                          description: >-
                                            A single string value used in an
                                            autopilot filter, with include/exclude
                                            polarity.
                                          required:
                                            - value
                                          properties:
                                            value:
                                              type: string
                                              maxLength: 200
                                              description: The literal value to match (non-empty)
                                            type:
                                              allOf:
                                                - type: string
                                                  title: Filter polarity
                                                  description: >-
                                                    Whether matching values are included in
                                                    or excluded from the autopilot search.
                                                  enum:
                                                    - include
                                                    - exclude
                                              description: >-
                                                Whether the value is included in or
                                                excluded from the search. Defaults to
                                                `include`.
                                      seniorities:
                                        type: array
                                        maxItems: 25
                                        description: Seniority slugs to include
                                        items:
                                          type: string
                                          minLength: 1
                                          maxLength: 200
                                      yearsInCompany:
                                        type: array
                                        maxItems: 25
                                        description: Tenure bands to include
                                        items:
                                          type: string
                                          title: Years in current company
                                          description: >-
                                            Tenure band used when filtering contacts
                                            for autopilot search.
                                          enum:
                                            - none
                                            - lessThanOneYear
                                            - oneToTwoYears
                                            - threeToFiveYears
                                            - sixToTenYears
                                            - moreThanTenYears
                                      contactKeywords:
                                        allOf:
                                          - type: object
                                            title: Keyword filter
                                            description: >-
                                              Boolean keyword filter applied to
                                              account or contact searches.


                                              In responses this field is always
                                              present and non-null even when no
                                              keywords are configured (`{ "values":
                                              [], "type": "or" }`).
                                            properties:
                                              values:
                                                type: array
                                                maxItems: 25
                                                description: >-
                                                  Keyword values combined according to
                                                  `type`
                                                items:
                                                  type: object
                                                  title: Filter value
                                                  description: >-
                                                    A single string value used in an
                                                    autopilot filter, with include/exclude
                                                    polarity.
                                                  required:
                                                    - value
                                                  properties:
                                                    value:
                                                      type: string
                                                      maxLength: 200
                                                      description: The literal value to match (non-empty)
                                                    type:
                                                      allOf:
                                                        - type: string
                                                          title: Filter polarity
                                                          description: >-
                                                            Whether matching values are included in
                                                            or excluded from the autopilot search.
                                                          enum:
                                                            - include
                                                            - exclude
                                                      description: >-
                                                        Whether the value is included in or
                                                        excluded from the search. Defaults to
                                                        `include`.
                                              type:
                                                allOf:
                                                  - type: string
                                                    title: Keyword combination
                                                    description: >-
                                                      Boolean combinator applied across
                                                      keyword filter values.
                                                    enum:
                                                      - or
                                                      - and
                                                description: >-
                                                  Boolean combinator across `values`.
                                                  Defaults to `or`.
                                        description: >-
                                          Free-text keyword filter applied at the
                                          contact level. Always present and
                                          non-null in responses.
                                      changedJobIn90Days:
                                        type: boolean
                                        description: >-
                                          When `true`, restrict to contacts who
                                          changed jobs in the past 90 days.
                                          `false` (the default) applies no filter
                                          — it is treated the same as omitting the
                                          field.
                                description: >-
                                  Autopilot account/contact filter
                                  configuration. Always present.
                              referenceUrl:
                                type: string
                                nullable: true
                                description: >-
                                  Optional reference URL used to seed the
                                  autopilot search
                              maxPeoplePerCompany:
                                type: integer
                                description: Maximum contacts to add per company
                              maxPeopleToAddPerDay:
                                type: integer
                                description: Maximum contacts to add per day
                              searchContactPhones:
                                type: boolean
                                description: >-
                                  Whether phone numbers are enriched during
                                  search
                              addContactsWithoutEmailAddresses:
                                type: boolean
                                description: >-
                                  Whether contacts without an email address are
                                  still added to the sequence
                          playbookId:
                            type: string
                            nullable: true
                            description: >-
                              Composite id of the attached playbook
                              (`{prefix}-{numericId}`), or `null` when no
                              playbook is attached.
                            readOnly: true
                          knowledgeBaseId:
                            type: integer
                            format: int64
                            nullable: true
                            description: >-
                              Id of the connected knowledge base, or `null` when
                              none is connected.
                            readOnly: true
                          approvalMode:
                            type: object
                            title: Approval mode (response)
                            description: Current approval-mode state of the sequence.
                            properties:
                              enabled:
                                type: boolean
                                description: >-
                                  When `true`, AI-generated messages require
                                  human approval before sending
                          intentSignals:
                            type: array
                            description: Configured intent signals. At most one per `type`.
                            items:
                              type: object
                              title: Intent signal
                              description: >-
                                Tagged-union intent signal. Exactly one of
                                `postEngagers`, `competitorFollowers`,
                                `technologyUsed`, `jobHiring` is populated,
                                matching `type`. The other three must be omitted
                                or `null`.


                                A sequence may have at most one signal per
                                `type`. `technologyUsed` and `jobHiring` are
                                mutually exclusive — a sequence may include at
                                most one of the two.
                              required:
                                - type
                              properties:
                                type:
                                  type: string
                                  title: Intent signal type
                                  description: >-
                                    Discriminator selecting which intent-signal
                                    sub-object is populated.


                                    - `linkedInPostEngagers` — populate
                                    `postEngagers`.

                                    - `competitorFollowers` — populate
                                    `competitorFollowers`.

                                    - `technologyUsed` — populate
                                    `technologyUsed`.

                                    - `jobHiring` — populate `jobHiring`.
                                  enum:
                                    - linkedInPostEngagers
                                    - competitorFollowers
                                    - technologyUsed
                                    - jobHiring
                                postEngagers:
                                  type: object
                                  nullable: true
                                  description: >-
                                    Populated when `type` =
                                    `linkedInPostEngagers`.
                                  required:
                                    - mode
                                  properties:
                                    mode:
                                      type: string
                                      title: LinkedIn post engagers mode
                                      description: >-
                                        Selects which sub-object of the LinkedIn
                                        post engagers signal is populated.


                                        - `monitorProfiles` — populate
                                        `monitorProfiles`.

                                        - `monitorPosts` — populate
                                        `monitorPosts`.
                                      enum:
                                        - monitorProfiles
                                        - monitorPosts
                                    icpFitPercentage:
                                      type: integer
                                      description: >-
                                        Minimum ICP fit percentage to consider
                                        an engager. Must be one of `20`, `40`,
                                        `60`, `80`, `100`.
                                      enum:
                                        - 20
                                        - 40
                                        - 60
                                        - 80
                                        - 100
                                    monitorProfiles:
                                      type: object
                                      nullable: true
                                      description: >-
                                        Populated when `mode` =
                                        `monitorProfiles`.
                                      required:
                                        - monitorForDays
                                      properties:
                                        monitorForDays:
                                          type: integer
                                          description: >-
                                            Window over which to track engagement.
                                            Must be one of `2`, `3`, `5`, `7`, `15`,
                                            `30`.
                                          enum:
                                            - 2
                                            - 3
                                            - 5
                                            - 7
                                            - 15
                                            - 30
                                        profiles:
                                          type: array
                                          maxItems: 10
                                          description: >-
                                            LinkedIn profiles to monitor (at most
                                            10)
                                          items:
                                            type: object
                                            required:
                                              - linkedInUrl
                                            properties:
                                              linkedInUrl:
                                                type: string
                                                minLength: 1
                                                maxLength: 2048
                                                description: Public LinkedIn profile URL
                                              numberOfPosts:
                                                type: integer
                                                description: >-
                                                  How many recent posts of this profile to
                                                  monitor. Must be one of `3`, `5`, `10`,
                                                  `15`, `20`.
                                                enum:
                                                  - 3
                                                  - 5
                                                  - 10
                                                  - 15
                                                  - 20
                                    monitorPosts:
                                      type: object
                                      nullable: true
                                      description: Populated when `mode` = `monitorPosts`.
                                      properties:
                                        postUrls:
                                          type: array
                                          maxItems: 10
                                          description: >-
                                            Public LinkedIn post URLs to monitor (at
                                            most 10)
                                          items:
                                            type: string
                                            minLength: 1
                                            maxLength: 2048
                                competitorFollowers:
                                  type: object
                                  nullable: true
                                  description: >-
                                    Populated when `type` =
                                    `competitorFollowers`.
                                  properties:
                                    linkedInUrls:
                                      type: array
                                      maxItems: 10
                                      description: >-
                                        Competitor LinkedIn company URLs (at
                                        most 10)
                                      items:
                                        type: string
                                        minLength: 1
                                        maxLength: 2048
                                    entitiesToFind:
                                      type: integer
                                      minimum: 100
                                      maximum: 500
                                      description: >-
                                        Number of follower contacts to surface
                                        (100-500)
                                    icpFitPercentage:
                                      type: integer
                                      description: >-
                                        Minimum ICP fit percentage. Must be one
                                        of `20`, `40`, `60`, `80`, `100`.
                                      enum:
                                        - 20
                                        - 40
                                        - 60
                                        - 80
                                        - 100
                                technologyUsed:
                                  type: object
                                  nullable: true
                                  description: Populated when `type` = `technologyUsed`.
                                  properties:
                                    industryId:
                                      type: integer
                                      minimum: 1
                                      nullable: true
                                      description: Optional industry filter
                                    technologies:
                                      type: array
                                      maxItems: 10
                                      description: Technology slugs to match (at most 10)
                                      items:
                                        type: string
                                        minLength: 1
                                        maxLength: 200
                                    useAndLogicInTechnologies:
                                      type: boolean
                                      description: >-
                                        When `true`, all listed technologies
                                        must be present (AND); otherwise any
                                        match (OR).
                                    entitiesToFind:
                                      type: integer
                                      minimum: 1
                                      maximum: 500
                                      description: >-
                                        Number of matching contacts to surface
                                        (1-500)
                                jobHiring:
                                  type: object
                                  nullable: true
                                  description: Populated when `type` = `jobHiring`.
                                  required:
                                    - keyword
                                  properties:
                                    keyword:
                                      type: string
                                      minLength: 1
                                      maxLength: 200
                                      description: Job-posting keyword to match
                                    industries:
                                      type: array
                                      maxItems: 10
                                      description: >-
                                        Industry ids to scope the search (at
                                        most 10)
                                      items:
                                        type: integer
                                        minimum: 1
                                    entitiesToFind:
                                      type: integer
                                      minimum: 1
                                      maximum: 500
                                      description: >-
                                        Number of matching contacts to surface
                                        (1-500)
        '400':
          description: >-
            Validation failure on the request body, or invalid offer / playbook
            / knowledge-base / autopilot filters / intent signal referenced in
            the body.
          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:
                validation_failed:
                  summary: Body validation failure
                  value:
                    title: Validation failed
                    status: 400
                    detail: The request body contains validation errors.
                    errors:
                      - pointer: /sequenceStructureSetup/generatedStepTypes
                        detail: '''GeneratedStepTypes'' must not be empty.'
                      - pointer: /
                        detail: >-
                          Provide exactly one of OfferId or
                          OfferGenerationInputs.
                      - pointer: /
                        detail: >-
                          Email-only sequences cannot add contacts without email
                          addresses.
                invalid_offer:
                  summary: Referenced offer not found
                  value:
                    title: Bad Request
                    status: 400
                    detail: Offer '4821' not found.
                    code: salesAgentSequence.invalidOffer
                invalid_playbook_id_format:
                  summary: Playbook id is not a valid composite id
                  value:
                    title: Bad Request
                    status: 400
                    detail: PlaybookId 'foo-7' is not a valid composite playbook ID.
                    code: salesAgentSequence.invalidIdFormat
                invalid_autopilot_filters:
                  summary: Autopilot filters rejected by upstream
                  value:
                    title: Bad Request
                    status: 400
                    detail: Autopilot filters are invalid.
                    code: salesAgentSequence.invalidAutopilotFilters
        '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.
        '403':
          description: >-
            AI SDR feature is not available for the caller's team, or the caller
            lacks permission to create AI SDR sequences.
          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: Forbidden
                      status: 403
                      detail: You do not have permission to access this resource.
                      code: sequence.forbidden
              example:
                title: Forbidden
                status: 403
                detail: AI SDR feature is not available for your team.
                code: salesAgentSequence.forbidden
        '404':
          description: A referenced entity (offer, knowledge base) was not found.
          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: Knowledge base '1024' not found.
                code: salesAgentSequence.invalidKnowledgeBase
        '409':
          description: Autopilot search throttled by the upstream service.
          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: Conflict
                      status: 409
                      detail: A resource with this name already exists.
                      code: sequence.duplicateName
              example:
                title: Conflict
                status: 409
                detail: Autopilot search is currently throttled; retry later.
                code: salesAgentSequence.autopilotSearchThrottled
        '502':
          description: >-
            Upstream AI SDR service failure (including read-back failure after
            create).
          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: Bad Request
                      status: 400
                      detail: Pagination parameters are invalid.
                      code: sequence.invalidPagination
              examples:
                upstream_failure:
                  summary: Upstream R3 failure
                  value:
                    title: Bad Gateway
                    status: 502
                    detail: Upstream service failure.
                    code: salesAgentSequence.upstreamFailure
                read_back_failed:
                  summary: Created but read-back failed
                  value:
                    title: Bad Gateway
                    status: 502
                    detail: Created sequence not retrievable.
                    code: salesAgentSequence.upstreamFailure
components:
  schemas:
    email.type:
      type: object
      title: Email
      description: Email step with variant configuration
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - email
          description: Step type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        executionMode:
          type: string
          description: Execution mode for the email step
          enum:
            - automatic
            - manual
        variants:
          type: array
          description: Array of email variants (A/B test versions)
          items:
            type: object
            title: Email Variant
            description: Individual email variant within an email step.
            properties:
              id:
                type: integer
                description: Unique identifier for this email variant
              subject:
                type: string
                nullable: true
                description: Email subject line.
              message:
                type: string
                nullable: true
                description: Email message content.
              attachmentIds:
                type: array
                nullable: true
                writeOnly: true
                maxItems: 3
                items:
                  type: integer
                description: >-
                  **Write-only.** IDs of previously uploaded attachments to
                  attach to this variant. Upload files via `POST
                  /v3/attachments` first to obtain attachment IDs.

                  A variant may carry up to 3 attachments. Omit to leave
                  attachments unset.

                  Not returned on read — use `hasAttachments` to detect
                  presence.
              hasAttachments:
                type: boolean
                readOnly: true
                description: >-
                  Whether the variant has any attachments. Returned on read;
                  ignored on write.
      required:
        - type
        - delayInMinutes
        - executionMode
        - variants
    linkedin.type:
      title: LinkedIn
      description: >-
        LinkedIn step with action type sub-discriminator. Uses type "linkedIn"
        with a second discriminator actionType to select the specific LinkedIn
        action.
      discriminator:
        propertyName: actionType
        mapping:
          message:
            $ref: '#/components/schemas/linkedin-message.type'
          connect:
            $ref: '#/components/schemas/linkedin-connect.type'
          inMail:
            $ref: '#/components/schemas/linkedin-inmail.type'
          viewProfile:
            $ref: '#/components/schemas/linkedin-view-profile.type'
          endorseSkills:
            $ref: '#/components/schemas/linkedin-endorse-skills.type'
          voiceMessage:
            $ref: '#/components/schemas/linkedin-voice-message.type'
          likeRecentPosts:
            $ref: '#/components/schemas/linkedin-like-recent-posts.type'
          followProfile:
            $ref: '#/components/schemas/linkedin-follow-profile.type'
      oneOf:
        - type: object
          title: LinkedIn Message
          description: LinkedIn message action step
          properties:
            id:
              type: integer
              nullable: true
              readOnly: true
              description: Unique identifier for the step
            parentId:
              type: integer
              nullable: true
              description: ID of the parent step (for branching)
            ifConditionPositive:
              type: boolean
              nullable: true
              description: Whether this step is on the positive branch of a condition
            type:
              type: string
              enum:
                - linkedIn
              description: Step type discriminator
            actionType:
              type: string
              enum:
                - message
              description: LinkedIn action type discriminator
            delayInMinutes:
              type: integer
              minimum: 0
              description: Delay in minutes before executing this step
            executionMode:
              type: string
              description: Execution mode for the action
              enum:
                - automatic
                - manual
            variants:
              type: array
              description: Array of LinkedIn message variants (A/B test versions)
              items:
                type: object
                title: LinkedIn Variant
                description: Individual LinkedIn message/connect variant
                properties:
                  id:
                    type: integer
                    description: Unique identifier for this LinkedIn variant
                  message:
                    type: string
                    description: Message content
                  isEnabled:
                    type: boolean
                    description: Indicates whether the variant is enabled
                required:
                  - message
                  - isEnabled
          required:
            - type
            - actionType
            - delayInMinutes
            - executionMode
            - variants
        - type: object
          title: LinkedIn Connect
          description: LinkedIn connect action step
          properties:
            id:
              type: integer
              nullable: true
              readOnly: true
              description: Unique identifier for the step
            parentId:
              type: integer
              nullable: true
              description: ID of the parent step (for branching)
            ifConditionPositive:
              type: boolean
              nullable: true
              description: Whether this step is on the positive branch of a condition
            type:
              type: string
              enum:
                - linkedIn
              description: Step type discriminator
            actionType:
              type: string
              enum:
                - connect
              description: LinkedIn action type discriminator
            delayInMinutes:
              type: integer
              minimum: 0
              description: Delay in minutes before executing this step
            executionMode:
              type: string
              description: Execution mode for the action
              enum:
                - automatic
                - manual
            variants:
              type: array
              description: >-
                Array of LinkedIn connect variants (A/B test versions). Message
                is optional, max 300 characters.
              items:
                type: object
                title: LinkedIn Variant
                description: Individual LinkedIn message/connect variant
                properties:
                  id:
                    type: integer
                    description: Unique identifier for this LinkedIn variant
                  message:
                    type: string
                    description: Message content
                  isEnabled:
                    type: boolean
                    description: Indicates whether the variant is enabled
                required:
                  - message
                  - isEnabled
          required:
            - type
            - actionType
            - delayInMinutes
            - executionMode
            - variants
        - type: object
          title: LinkedIn InMail
          description: LinkedIn InMail action step
          properties:
            id:
              type: integer
              nullable: true
              readOnly: true
              description: Unique identifier for the step
            parentId:
              type: integer
              nullable: true
              description: ID of the parent step (for branching)
            ifConditionPositive:
              type: boolean
              nullable: true
              description: Whether this step is on the positive branch of a condition
            type:
              type: string
              enum:
                - linkedIn
              description: Step type discriminator
            actionType:
              type: string
              enum:
                - inMail
              description: LinkedIn action type discriminator
            delayInMinutes:
              type: integer
              minimum: 0
              description: Delay in minutes before executing this step
            executionMode:
              type: string
              description: Execution mode for the InMail
              enum:
                - automatic
                - manual
            variants:
              type: array
              description: Array of LinkedIn InMail variants (A/B test versions)
              items:
                type: object
                title: LinkedIn InMail Variant
                description: Individual LinkedIn InMail variant
                properties:
                  id:
                    type: integer
                    description: Unique identifier for this LinkedIn InMail variant
                  subject:
                    type: string
                    description: InMail subject line
                  message:
                    type: string
                    description: InMail message content
                  isEnabled:
                    type: boolean
                    description: Indicates whether the variant is enabled
                required:
                  - subject
                  - message
                  - isEnabled
          required:
            - type
            - actionType
            - delayInMinutes
            - executionMode
            - variants
        - type: object
          title: LinkedIn View Profile
          description: LinkedIn view profile action step
          properties:
            id:
              type: integer
              nullable: true
              readOnly: true
              description: Unique identifier for the step
            parentId:
              type: integer
              nullable: true
              description: ID of the parent step (for branching)
            ifConditionPositive:
              type: boolean
              nullable: true
              description: Whether this step is on the positive branch of a condition
            type:
              type: string
              enum:
                - linkedIn
              description: Step type discriminator
            actionType:
              type: string
              enum:
                - viewProfile
              description: LinkedIn action type discriminator
            delayInMinutes:
              type: integer
              minimum: 0
              description: Delay in minutes before executing this step
            executionMode:
              type: string
              description: Execution mode for the action
              enum:
                - automatic
                - manual
            description:
              type: string
              description: Description or notes for the profile view
          required:
            - type
            - actionType
            - delayInMinutes
            - executionMode
        - type: object
          title: LinkedIn Endorse Skills
          description: LinkedIn endorse skills action step
          properties:
            id:
              type: integer
              nullable: true
              readOnly: true
              description: Unique identifier for the step
            parentId:
              type: integer
              nullable: true
              description: ID of the parent step (for branching)
            ifConditionPositive:
              type: boolean
              nullable: true
              description: Whether this step is on the positive branch of a condition
            type:
              type: string
              enum:
                - linkedIn
              description: Step type discriminator
            actionType:
              type: string
              enum:
                - endorseSkills
              description: LinkedIn action type discriminator
            delayInMinutes:
              type: integer
              minimum: 0
              description: Delay in minutes before executing this step
            numberOfSkills:
              type: integer
              minimum: 1
              maximum: 3
              description: Number of skills to endorse (1-3)
          required:
            - type
            - actionType
            - delayInMinutes
            - numberOfSkills
        - type: object
          title: LinkedIn Voice Message
          description: LinkedIn voice message action step
          properties:
            id:
              type: integer
              nullable: true
              readOnly: true
              description: Unique identifier for the step
            parentId:
              type: integer
              nullable: true
              description: ID of the parent step (for branching)
            ifConditionPositive:
              type: boolean
              nullable: true
              description: Whether this step is on the positive branch of a condition
            type:
              type: string
              enum:
                - linkedIn
              description: Step type discriminator
            actionType:
              type: string
              enum:
                - voiceMessage
              description: LinkedIn action type discriminator
            delayInMinutes:
              type: integer
              minimum: 0
              description: Delay in minutes before executing this step
            audioFile:
              type: string
              description: The audio file URL for the voice message
          required:
            - type
            - actionType
            - delayInMinutes
            - audioFile
        - type: object
          title: LinkedIn Like Recent Posts
          description: LinkedIn like recent posts action step
          properties:
            id:
              type: integer
              nullable: true
              readOnly: true
              description: Unique identifier for the step
            parentId:
              type: integer
              nullable: true
              description: ID of the parent step (for branching)
            ifConditionPositive:
              type: boolean
              nullable: true
              description: Whether this step is on the positive branch of a condition
            type:
              type: string
              enum:
                - linkedIn
              description: Step type discriminator
            actionType:
              type: string
              enum:
                - likeRecentPosts
              description: LinkedIn action type discriminator
            delayInMinutes:
              type: integer
              minimum: 0
              description: Delay in minutes before executing this step
          required:
            - type
            - actionType
            - delayInMinutes
        - type: object
          title: LinkedIn Follow Profile
          description: LinkedIn follow profile action step
          properties:
            id:
              type: integer
              nullable: true
              readOnly: true
              description: Unique identifier for the step
            parentId:
              type: integer
              nullable: true
              description: ID of the parent step (for branching)
            ifConditionPositive:
              type: boolean
              nullable: true
              description: Whether this step is on the positive branch of a condition
            type:
              type: string
              enum:
                - linkedIn
              description: Step type discriminator
            actionType:
              type: string
              enum:
                - followProfile
              description: LinkedIn action type discriminator
            delayInMinutes:
              type: integer
              minimum: 0
              description: Delay in minutes before executing this step
          required:
            - type
            - actionType
            - delayInMinutes
    call.type:
      type: object
      title: Call
      description: Call step with script/notes
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - call
          description: Step type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        message:
          type: string
          description: Notes or script for the call
      required:
        - type
        - delayInMinutes
    sms.type:
      type: object
      title: SMS
      description: SMS step with message content
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - sms
          description: Step type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        executionMode:
          type: string
          description: Execution mode for the SMS step
          enum:
            - automatic
            - manual
        message:
          type: string
          description: SMS message content
      required:
        - type
        - delayInMinutes
        - executionMode
        - message
    whatsapp.type:
      type: object
      title: WhatsApp
      description: WhatsApp step with message content
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - whatsApp
          description: Step type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        message:
          type: string
          description: WhatsApp message content
      required:
        - type
        - delayInMinutes
        - message
    zapier.type:
      type: object
      title: Zapier
      description: Zapier integration step
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - zapier
          description: Step type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        name:
          type: string
          description: Name of the Zapier step
        action:
          type: string
          description: Zapier action type
          enum:
            - immediately
            - wait
      required:
        - type
        - delayInMinutes
        - name
        - action
    task.type:
      type: object
      title: Task
      description: Task step for manual actions
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - task
          description: Step type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        actionType:
          type: string
          description: Type of task action to perform
          enum:
            - toDo
            - meeting
        description:
          type: string
          description: Task description or instructions
      required:
        - type
        - delayInMinutes
        - actionType
        - description
    condition.type:
      type: object
      title: Condition
      description: Condition step that evaluates rules before proceeding
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - condition
          description: Step type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        waitInMinutes:
          type: integer
          minimum: 0
          description: Wait time in minutes for condition evaluation
        conditions:
          type: array
          description: Array of condition templates to evaluate
          items:
            type: object
            title: ConditionTemplate
            description: Template defining a condition with property and rules
            properties:
              property:
                type: string
                description: Property name to evaluate
              rules:
                type: array
                description: Set of rules to apply to the property
                items:
                  type: object
                  title: ConditionRule
                  description: Rule defining operator and value for condition
                  properties:
                    operator:
                      type: string
                      description: >-
                        Comparison operator (e.g., `isSet`, `isNotSet`,
                        `equals`, etc.)
                    value:
                      type: string
                      nullable: true
                      description: >-
                        Value to compare against. Null for operators like
                        `isSet`/`isNotSet`.
                  required:
                    - operator
            required:
              - property
              - rules
      required:
        - type
        - delayInMinutes
        - waitInMinutes
        - conditions
    linkedin-message.type:
      type: object
      title: LinkedIn Message
      description: LinkedIn message action step
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - linkedIn
          description: Step type discriminator
        actionType:
          type: string
          enum:
            - message
          description: LinkedIn action type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        executionMode:
          type: string
          description: Execution mode for the action
          enum:
            - automatic
            - manual
        variants:
          type: array
          description: Array of LinkedIn message variants (A/B test versions)
          items:
            type: object
            title: LinkedIn Variant
            description: Individual LinkedIn message/connect variant
            properties:
              id:
                type: integer
                description: Unique identifier for this LinkedIn variant
              message:
                type: string
                description: Message content
              isEnabled:
                type: boolean
                description: Indicates whether the variant is enabled
            required:
              - message
              - isEnabled
      required:
        - type
        - actionType
        - delayInMinutes
        - executionMode
        - variants
    linkedin-connect.type:
      type: object
      title: LinkedIn Connect
      description: LinkedIn connect action step
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - linkedIn
          description: Step type discriminator
        actionType:
          type: string
          enum:
            - connect
          description: LinkedIn action type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        executionMode:
          type: string
          description: Execution mode for the action
          enum:
            - automatic
            - manual
        variants:
          type: array
          description: >-
            Array of LinkedIn connect variants (A/B test versions). Message is
            optional, max 300 characters.
          items:
            type: object
            title: LinkedIn Variant
            description: Individual LinkedIn message/connect variant
            properties:
              id:
                type: integer
                description: Unique identifier for this LinkedIn variant
              message:
                type: string
                description: Message content
              isEnabled:
                type: boolean
                description: Indicates whether the variant is enabled
            required:
              - message
              - isEnabled
      required:
        - type
        - actionType
        - delayInMinutes
        - executionMode
        - variants
    linkedin-inmail.type:
      type: object
      title: LinkedIn InMail
      description: LinkedIn InMail action step
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - linkedIn
          description: Step type discriminator
        actionType:
          type: string
          enum:
            - inMail
          description: LinkedIn action type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        executionMode:
          type: string
          description: Execution mode for the InMail
          enum:
            - automatic
            - manual
        variants:
          type: array
          description: Array of LinkedIn InMail variants (A/B test versions)
          items:
            type: object
            title: LinkedIn InMail Variant
            description: Individual LinkedIn InMail variant
            properties:
              id:
                type: integer
                description: Unique identifier for this LinkedIn InMail variant
              subject:
                type: string
                description: InMail subject line
              message:
                type: string
                description: InMail message content
              isEnabled:
                type: boolean
                description: Indicates whether the variant is enabled
            required:
              - subject
              - message
              - isEnabled
      required:
        - type
        - actionType
        - delayInMinutes
        - executionMode
        - variants
    linkedin-view-profile.type:
      type: object
      title: LinkedIn View Profile
      description: LinkedIn view profile action step
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - linkedIn
          description: Step type discriminator
        actionType:
          type: string
          enum:
            - viewProfile
          description: LinkedIn action type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        executionMode:
          type: string
          description: Execution mode for the action
          enum:
            - automatic
            - manual
        description:
          type: string
          description: Description or notes for the profile view
      required:
        - type
        - actionType
        - delayInMinutes
        - executionMode
    linkedin-endorse-skills.type:
      type: object
      title: LinkedIn Endorse Skills
      description: LinkedIn endorse skills action step
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - linkedIn
          description: Step type discriminator
        actionType:
          type: string
          enum:
            - endorseSkills
          description: LinkedIn action type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        numberOfSkills:
          type: integer
          minimum: 1
          maximum: 3
          description: Number of skills to endorse (1-3)
      required:
        - type
        - actionType
        - delayInMinutes
        - numberOfSkills
    linkedin-voice-message.type:
      type: object
      title: LinkedIn Voice Message
      description: LinkedIn voice message action step
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - linkedIn
          description: Step type discriminator
        actionType:
          type: string
          enum:
            - voiceMessage
          description: LinkedIn action type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
        audioFile:
          type: string
          description: The audio file URL for the voice message
      required:
        - type
        - actionType
        - delayInMinutes
        - audioFile
    linkedin-like-recent-posts.type:
      type: object
      title: LinkedIn Like Recent Posts
      description: LinkedIn like recent posts action step
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - linkedIn
          description: Step type discriminator
        actionType:
          type: string
          enum:
            - likeRecentPosts
          description: LinkedIn action type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
      required:
        - type
        - actionType
        - delayInMinutes
    linkedin-follow-profile.type:
      type: object
      title: LinkedIn Follow Profile
      description: LinkedIn follow profile action step
      properties:
        id:
          type: integer
          nullable: true
          readOnly: true
          description: Unique identifier for the step
        parentId:
          type: integer
          nullable: true
          description: ID of the parent step (for branching)
        ifConditionPositive:
          type: boolean
          nullable: true
          description: Whether this step is on the positive branch of a condition
        type:
          type: string
          enum:
            - linkedIn
          description: Step type discriminator
        actionType:
          type: string
          enum:
            - followProfile
          description: LinkedIn action type discriminator
        delayInMinutes:
          type: integer
          minimum: 0
          description: Delay in minutes before executing this step
      required:
        - type
        - actionType
        - delayInMinutes
  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**.

````