---
title: "Read AI SDR sequence settings"
method: GET
path: "/v3/sequences/ai-sdr/{sequence_id}/settings"
tags: ["AI SDR Sequences"]
---

# Read AI SDR sequence settings

`GET /v3/sequences/ai-sdr/{sequence_id}/settings`

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

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

Returns the AI SDR-specific settings of a sequence. Mirrors the shape of the create/patch body. Generic sequence fields (name, schedule, etc.) are read via `GET /v3/sequences/{id}`.

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

## Path parameters

- `sequence_id` integer, required

## Response `200`

AI SDR sequence settings

- object — 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.
  - `offerId` integer, nullable — Id of the saved offer the sequence was seeded from. `null` when the sequence was created with inline `offerGenerationInputs`.
  - `offerGenerationInputs` object — 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.
    - `companyName` string — Name of the company being represented
    - `companyDescription` string — Short description of what the company does
    - `icp` string — Ideal Customer Profile — who the outreach is meant for
    - `reasonForOutreach` string — Free-form rationale shown to the AI SDR for why this outreach is being made
    - `caseStudies` string[] — Case studies that demonstrate the company's value
    - `painPoints` string[] — Customer pain points this outreach addresses
    - `proofPoints` string[] — Proof points that back up the offer's claims
    - `valuePropositions` string[] — Value propositions presented in messaging
    - `callToActions` string[] — Call-to-action phrasings the AI SDR can use
  - `toneOfVoice` object — Tone-of-voice configuration as returned in sequence responses. All four fields are always populated.
    - `language` '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' — Language used by the AI SDR when generating outreach messages.
    - `toneOfVoice` 'confident' | 'persuasive' | 'witty' | 'straightforward' | 'empathetic' — Tone of voice used by the AI SDR when generating outreach messages.
    - `messageLength` 'superShort' | 'short' | 'medium' | 'long' — Target length for AI-generated personalized messages.
    - `gender` 'man' | 'woman' — Gender used by the AI SDR persona when generating outreach messages.
  - `generatedStepTypes` string[] — Step channels the AI SDR is allowed to generate
  - `providerLLM` 'claude' | 'openAi' | 'gemini' | 'mistral' — LLM provider that generates the outreach content for the AI SDR sequence.
  - `personalizationPoints` object — 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".
    - `basicResearch` boolean, nullable — Allow lightweight, low-cost personalization based on basic contact and company facts
    - `companyResearch` object, nullable — Per-aspect toggles for company-level research signals
      - `description` boolean, nullable
      - `mission` boolean, nullable
      - `techStack` boolean, nullable
      - `tenKReport` boolean, nullable
      - `recentReportForInvestors` boolean, nullable
      - `financialReport` boolean, nullable
      - `fundraisingResearch` boolean, nullable
      - `challenges` boolean, nullable
      - `recentNews` boolean, nullable
      - `predictChallengesAndCompetitors` boolean, nullable
      - `productsServicesDeepDive` boolean, nullable
      - `mergersAcquisitions` boolean, nullable
      - `customerReviews` boolean, nullable
    - `prospectResearch` object, nullable — Per-aspect toggles for prospect-level research signals
      - `aboutSection` boolean, nullable
      - `hobbiesInterests` boolean, nullable
      - `quotes` boolean, nullable
      - `achievements` boolean, nullable
      - `careerSummary` boolean, nullable
      - `jobResponsibilitiesInCurrentCompany` boolean, nullable
      - `achievementsInCurrentCompany` boolean, nullable
    - `industryResearch` object, nullable — Per-aspect toggles for industry-level research signals
      - `recentIndustryNews` boolean, nullable
      - `industryTrends` boolean, nullable
      - `competitorsOverviewNews` boolean, nullable
    - `contactFields` object, nullable — 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.
      - `enabled` boolean, nullable — Master toggle for using contact fields in personalization
      - `defaultFields` string[], nullable — Built-in contact fields to reference. Must contain no duplicates.
      - `customFieldIds` integer[], nullable — Ids of custom contact fields to reference. Each id must be positive; the array must contain no duplicates.
    - `customResearch` object, nullable — Free-form custom research instructions the AI SDR may follow
      - `enabled` boolean, nullable — Master toggle for using custom research
      - `instructions` string, nullable — Free-form prompt describing the custom research the AI SDR should perform
  - `autopilot` object — Autopilot configuration as returned in sequence responses.
    - `status` 'enabled' | 'disabled' | 'paused' | 'disabledByLackOfContacts' | 'disabledByContactsLimitExceeded' — 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.
    - `isSearchInProgress` boolean — Whether an autopilot contact search is currently running for this sequence
    - `filters` object — 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" }`).
      - `accountListIds` object[] — Saved account-list ids the search is scoped to
        - `value` integer, required — The literal integer id to match
        - `type` 'include' | 'exclude' — Whether matching values are included in or excluded from the autopilot search.
      - `industries` object[] — Industry filters
        - `value` string, required — The literal value to match (non-empty)
        - `type` 'include' | 'exclude' — Whether matching values are included in or excluded from the autopilot search.
      - `companyLocations` object[] — Company location filters
        - `value` string, required — The literal value to match (non-empty)
        - `type` 'include' | 'exclude' — Whether matching values are included in or excluded from the autopilot search.
      - `companySizes` string[] — Company size bands to include
      - `headcountGrowth` object, nullable — 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`.
        - `min` integer, nullable — Lower bound (inclusive), percent
        - `max` integer, nullable — Upper bound (inclusive), percent
      - `departmentHeadcountGrowth` object, nullable — 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`.
        - `min` integer, nullable — Lower bound (inclusive), percent
        - `max` integer, nullable — Upper bound (inclusive), percent
        - `department` string, required — Department name the growth range applies to (non-empty)
      - `minRevenue` 'zeroMillion' | 'halfMillion' | 'oneMillion' | 'twoAndHalfMillion' | 'fiveMillion' | 'tenMillion' | 'twentyMillion' | 'fiftyMillion' | 'oneHundredMillion' | 'fiveHundredMillion' | 'oneThousandMillion' | 'overOneThousandMillion', nullable — Annual revenue tier used when filtering companies for autopilot search.
      - `maxRevenue` 'zeroMillion' | 'halfMillion' | 'oneMillion' | 'twoAndHalfMillion' | 'fiveMillion' | 'tenMillion' | 'twentyMillion' | 'fiftyMillion' | 'oneHundredMillion' | 'fiveHundredMillion' | 'oneThousandMillion' | 'overOneThousandMillion', nullable — Annual revenue tier used when filtering companies for autopilot search.
      - `accountKeywords` object — 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" }`).
        - `values` object[] — Keyword values combined according to `type`
          - `value` string, required — The literal value to match (non-empty)
          - `type` 'include' | 'exclude' — Whether matching values are included in or excluded from the autopilot search.
        - `type` 'or' | 'and' — Boolean combinator applied across keyword filter values.
      - `isHiringOnLinkedIn` boolean — 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` object[] — Contact location filters
        - `value` string, required — The literal value to match (non-empty)
        - `type` 'include' | 'exclude' — Whether matching values are included in or excluded from the autopilot search.
      - `jobTitles` object[] — Contact job-title filters
        - `value` string, required — The literal value to match (non-empty)
        - `type` 'include' | 'exclude' — Whether matching values are included in or excluded from the autopilot search.
      - `departments` object[] — Contact department filters
        - `value` string, required — The literal value to match (non-empty)
        - `type` 'include' | 'exclude' — Whether matching values are included in or excluded from the autopilot search.
      - `seniorities` string[] — Seniority slugs to include
      - `yearsInCompany` string[] — Tenure bands to include
      - `contactKeywords` object — 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" }`).
        - `values` object[] — Keyword values combined according to `type`
          - `value` string, required — The literal value to match (non-empty)
          - `type` 'include' | 'exclude' — Whether matching values are included in or excluded from the autopilot search.
        - `type` 'or' | 'and' — Boolean combinator applied across keyword filter values.
      - `changedJobIn90Days` boolean — 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.
    - `referenceUrl` string, nullable — Optional reference URL used to seed the autopilot search
    - `maxPeoplePerCompany` integer — Maximum contacts to add per company
    - `maxPeopleToAddPerDay` integer — Maximum contacts to add per day
    - `searchContactPhones` boolean — Whether phone numbers are enriched during search
    - `addContactsWithoutEmailAddresses` boolean — Whether contacts without an email address are still added to the sequence
  - `playbookId` string, nullable — Composite id of the attached playbook (`{prefix}-{numericId}`), or `null` when no playbook is attached.
  - `knowledgeBaseId` integer, nullable — Id of the connected knowledge base, or `null` when none is connected.
  - `approvalMode` object — Current approval-mode state of the sequence.
    - `enabled` boolean — When `true`, AI-generated messages require human approval before sending
  - `intentSignals` object[] — Configured intent signals. At most one per `type`.
    - `type` 'linkedInPostEngagers' | 'competitorFollowers' | 'technologyUsed' | 'jobHiring', required — Discriminator selecting which intent-signal sub-object is populated. - `linkedInPostEngagers` — populate `postEngagers`. - `competitorFollowers` — populate `competitorFollowers`. - `technologyUsed` — populate `technologyUsed`. - `jobHiring` — populate `jobHiring`.
    - `postEngagers` object, nullable — Populated when `type` = `linkedInPostEngagers`.
      - `mode` 'monitorProfiles' | 'monitorPosts', required — Selects which sub-object of the LinkedIn post engagers signal is populated. - `monitorProfiles` — populate `monitorProfiles`. - `monitorPosts` — populate `monitorPosts`.
      - `icpFitPercentage` 20 | 40 | 60 | 80 | 100 — Minimum ICP fit percentage to consider an engager. Must be one of `20`, `40`, `60`, `80`, `100`.
      - `monitorProfiles` object, nullable — Populated when `mode` = `monitorProfiles`.
        - `monitorForDays` 2 | 3 | 5 | 7 | 15 | 30, required — Window over which to track engagement. Must be one of `2`, `3`, `5`, `7`, `15`, `30`.
        - `profiles` object[] — LinkedIn profiles to monitor (at most 10)
          - `linkedInUrl` string, required — Public LinkedIn profile URL
          - `numberOfPosts` 3 | 5 | 10 | 15 | 20 — How many recent posts of this profile to monitor. Must be one of `3`, `5`, `10`, `15`, `20`.
      - `monitorPosts` object, nullable — Populated when `mode` = `monitorPosts`.
        - `postUrls` string[] — Public LinkedIn post URLs to monitor (at most 10)
    - `competitorFollowers` object, nullable — Populated when `type` = `competitorFollowers`.
      - `linkedInUrls` string[] — Competitor LinkedIn company URLs (at most 10)
      - `entitiesToFind` integer — Number of follower contacts to surface (100-500)
      - `icpFitPercentage` 20 | 40 | 60 | 80 | 100 — Minimum ICP fit percentage. Must be one of `20`, `40`, `60`, `80`, `100`.
    - `technologyUsed` object, nullable — Populated when `type` = `technologyUsed`.
      - `industryId` integer, nullable — Optional industry filter
      - `technologies` string[] — Technology slugs to match (at most 10)
      - `useAndLogicInTechnologies` boolean — When `true`, all listed technologies must be present (AND); otherwise any match (OR).
      - `entitiesToFind` integer — Number of matching contacts to surface (1-500)
    - `jobHiring` object, nullable — Populated when `type` = `jobHiring`.
      - `keyword` string, required — Job-posting keyword to match
      - `industries` integer[] — Industry ids to scope the search (at most 10)
      - `entitiesToFind` integer — Number of matching contacts to surface (1-500)

## Other responses

- `400` — Sequence exists but is not an AI SDR sequence.
- `401` — Unauthorized. The response body is empty; check the `WWW-Authenticate` header for the expected scheme.
- `403` — AI SDR feature is not available for the caller's team, or the caller does not have access to this sequence.
- `404` — Sequence not found.
- `502` — Upstream AI SDR service failure, or a legacy stored value cannot be represented in the v3 API.

---

[API](https://skmtc.net/reply/apis/reply-api.md) · [All operations](https://skmtc.net/reply/apis/reply-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/reply/reply-api/versions/1c3d32eaf95e/schema)
