---
title: "Update an AI Sales Agent"
method: PATCH
path: "/api/v2/ai-agents/sales/{id}"
tags: ["AISalesAgent"]
---

# Update an AI Sales Agent

`PATCH /api/v2/ai-agents/sales/{id}`

## Request

- Base URL: `https://api.instantly.ai`
- URL: `https://api.instantly.ai/api/v2/ai-agents/sales/{id}`
- Auth: HTTP bearer

Update an AI Sales Agent, including its configuration.


Requires one of the following scopes: `ai_sdr:update`, `ai_sdr:all`, `all:update`, `all:all`

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `name` string: Name of the AI Sales Agent
  - `description` string, nullable: Description of the AI Sales Agent
  - `config` object: Configuration for the AI Sales Agent including memory, enrichment settings, outreach settings, and autonomy settings. If not provided, default configuration will be used.
    - `memory` object: Business context and memory for the AI Sales Agent. Updates are merged key by key: keys omitted from the request keep their stored value.
      - `company` string: Company name
      - `business_description` string: Description of the business and what it sells
      - `icps` object[]: Ideal customer profiles the agent targets
        - `name` string
        - `problems_solved` string[]
        - `benefits` string[]
        - `usp` string
        - `customer_goals` string[]
        - `success_stories` string
        - `keywords` object
          - `include` string, nullable
          - `exclude` string, nullable
        - `company_size` string[]
        - `industry` string[]
        - `job_title` object
          - `include` string[]
          - `exclude` string[]
      - `active_icps_indexes` integer[]: Indexes of the entries in `icps` that are currently active
      - `business_offers` string[]: Offers the agent can pitch
      - `active_business_offers_indexes` integer[]: Indexes of the entries in `business_offers` that are currently active
      - `custom_fields` string[]: Raw storage for the agent guidance rules, at most 10 entries. Prefer the `/ai-agents/sales/{id}/guidance-rules` endpoints over editing this array directly.
    - `position_details` string: Position details for recruiting agents, describing the role, responsibilities, and requirements
    - `investment_details` string: Investment details for investment agents, describing the investment thesis and target companies
    - `research_details` string: Research details for user research agents, describing the research goals and target participants
    - `partnership_details` string: Partnership details for partnership agents, describing the partnership goals and target partners
    - `enrichment_settings` object: Settings for lead enrichment
      - `enrichment_limit_per_run` number: Maximum number of leads to enrich per run
      - `signal_targeting_enabled` boolean: Whether the agent puts leads with recent buying signals first. AI Sales Agents only; other agent types ignore it. Defaults to true when omitted. Signals rank rather than filter: when fewer signal-carrying leads are available than the agent's daily target, the remainder is filled with other leads matching the ICP, so this never reduces the number of leads sourced. Set to false to stop prioritizing signals; the stored categories are kept for when it is turned back on.
      - `signal_targeting_categories` string[]: Signal categories the agent prioritizes while signal targeting is on (AI Sales Agents only), each with a 90-day freshness window. Omit to use the default high-intent set (recent funding or acquisition, executive leadership change, pricing change, product launch, company expansion, buying intent on Reddit). An empty array prioritizes nothing; a non-empty array targets exactly those categories.
    - `outreach_settings` object: Settings for email outreach. Changes are propagated to the agent's campaigns.
      - `campaign_schedule` object
        - `start_date` string, date, nullable: Start date in YYYY-MM-DD format. Uses the campaign's timezone.
        - `end_date` string, date, nullable: End date in YYYY-MM-DD format. Uses the campaign's timezone.
        - `schedules` object[], required
          - `name` string, required
          - `timing` object, required
            - `from` string, required
            - `to` string, required
          - `days` object, required
            - `0` boolean
            - `1` boolean
            - `2` boolean
            - `3` boolean
            - `4` boolean
            - `5` boolean
            - `6` boolean
          - `timezone` 'Etc/GMT+12' | 'Etc/GMT+11' | 'Etc/GMT+10' | 'America/Anchorage' | 'America/Dawson' | 'America/Creston' | 'America/Chihuahua' | 'America/Boise' | 'America/Belize' | 'America/Chicago' | 'America/Bahia_Banderas' | 'America/Regina' | 'America/Bogota' | 'America/Detroit' | 'America/Indiana/Marengo' | 'America/Caracas' | 'America/Asuncion' | 'America/Glace_Bay' | 'America/Campo_Grande' | 'America/Anguilla' | 'America/Santiago' | 'America/St_Johns' | 'America/Sao_Paulo' | 'America/Argentina/La_Rioja' | 'America/Araguaina' | 'America/Godthab' | 'America/Montevideo' | 'America/Bahia' | 'America/Noronha' | 'America/Scoresbysund' | 'Atlantic/Cape_Verde' | 'Africa/Casablanca' | 'America/Danmarkshavn' | 'Europe/Isle_of_Man' | 'Atlantic/Canary' | 'Africa/Abidjan' | 'Arctic/Longyearbyen' | 'Europe/Belgrade' | 'Africa/Ceuta' | 'Europe/Sarajevo' | 'Africa/Algiers' | 'Africa/Windhoek' | 'Asia/Nicosia' | 'Asia/Beirut' | 'Africa/Cairo' | 'Asia/Damascus' | 'Europe/Bucharest' | 'Africa/Blantyre' | 'Europe/Helsinki' | 'Europe/Istanbul' | 'Asia/Jerusalem' | 'Africa/Tripoli' | 'Asia/Amman' | 'Asia/Baghdad' | 'Europe/Kaliningrad' | 'Asia/Aden' | 'Africa/Addis_Ababa' | 'Europe/Kirov' | 'Europe/Astrakhan' | 'Asia/Tehran' | 'Asia/Dubai' | 'Asia/Baku' | 'Indian/Mahe' | 'Asia/Tbilisi' | 'Asia/Yerevan' | 'Asia/Kabul' | 'Antarctica/Mawson' | 'Asia/Yekaterinburg' | 'Asia/Karachi' | 'Asia/Kolkata' | 'Asia/Colombo' | 'Asia/Kathmandu' | 'Antarctica/Vostok' | 'Asia/Dhaka' | 'Asia/Rangoon' | 'Antarctica/Davis' | 'Asia/Novokuznetsk' | 'Asia/Hong_Kong' | 'Asia/Krasnoyarsk' | 'Asia/Brunei' | 'Australia/Perth' | 'Asia/Taipei' | 'Asia/Choibalsan' | 'Asia/Irkutsk' | 'Asia/Dili' | 'Asia/Pyongyang' | 'Australia/Adelaide' | 'Australia/Darwin' | 'Australia/Brisbane' | 'Australia/Melbourne' | 'Antarctica/DumontDUrville' | 'Australia/Currie' | 'Asia/Chita' | 'Antarctica/Macquarie' | 'Asia/Sakhalin' | 'Pacific/Auckland' | 'Etc/GMT-12' | 'Pacific/Fiji' | 'Asia/Anadyr' | 'Asia/Kamchatka' | 'Etc/GMT-13' | 'Pacific/Apia', required
      - `email_list` string[]: Sending account emails the agent's campaigns use
      - `email_tag_list` string[]: Account tag ids used to select sending accounts
      - `daily_limit` number: Daily email sending limit per campaign
      - `stop_on_reply` boolean: Stop contacting a lead after they reply
      - `open_tracking` boolean: Track email opens
      - `first_email_text_only` boolean: Send the first email as plain text
      - `prioritize_new_leads` boolean: Prioritize new leads over follow-ups
      - `match_lead_esp` boolean: Match the sending account's email provider to the lead's provider
      - `opt_out_settings` object: Opt-out settings appended to outgoing emails
        - `text_opt_out_enabled` boolean: Append a plain-text opt-out line to every email
    - `autonomy_settings` object: Settings for AI Sales Agent autonomy
      - `autopilot_mode` boolean: Enable autopilot mode for autonomous decision-making
      - `auto_reply_to_responses` boolean: Automatically respond to prospect replies with contextual messages
      - `manual_leads_mode` boolean: When true, automatic lead discovery is disabled and the user uploads leads manually
    - `slack_connection_id` string, nullable: App connection id of the Slack workspace used for daily reports. `null` disconnects Slack.
  - `self_improvement` boolean, nullable: When enabled, the agent learns from past campaign performance to iteratively improve its outreach strategy.
  - `status` -1 | 0 | 1: Status of the AI Sales Agent. Setting 0 (inactive) pauses the agent and its campaigns; setting 1 (active) resumes them. Resuming returns 409 while the workspace's starter sending account is not ready yet; the agent stays paused.

## Response `200`

The updated AI Sales Agent

- AISalesAgent: An AI Sales Development Representative that autonomously manages outreach campaigns
  - `id` string, uuid, required: Unique identifier for the AI Sales Agent
  - `workspace_id` string, uuid, required: Workspace ID that owns this AI Sales Agent
  - `name` string, required: Name of the AI Sales Agent
  - `description` string, nullable: Description of the AI Sales Agent
  - `type` 'website' | 'pitch_deck': The type of business details extraction method used (website scraping or pitch deck). Required unless memory_from_workspace is true.
  - `input` string, nullable: The input used for creation: URL for website scraping or text content for pitch deck extraction. Required unless memory_from_workspace is true.
  - `status` -1 | 0 | 1, required: Status of the AI Sales Agent
  - `config` object: Configuration for the AI Sales Agent including memory, enrichment settings, outreach settings, and autonomy settings. If not provided, default configuration will be used.
    - `memory` object: Business context and memory for the AI Sales Agent
    - `position_details` string: Position details for recruiting agents, describing the role, responsibilities, and requirements
    - `investment_details` string: Investment details for investment agents, describing the investment thesis and target companies
    - `research_details` string: Research details for user research agents, describing the research goals and target participants
    - `partnership_details` string: Partnership details for partnership agents, describing the partnership goals and target partners
    - `enrichment_settings` object: Settings for lead enrichment
      - `enrichment_limit_per_run` number: Maximum number of leads to enrich per run
      - `signal_targeting_enabled` boolean: Whether the agent puts leads with recent buying signals first. AI Sales Agents only; other agent types ignore it. Defaults to true when omitted. Signals rank rather than filter: when fewer signal-carrying leads are available than the agent's daily target, the remainder is filled with other leads matching the ICP, so this never reduces the number of leads sourced. Set to false to stop prioritizing signals; the stored categories are kept for when it is turned back on.
      - `signal_targeting_categories` string[]: Signal categories the agent prioritizes while signal targeting is on (AI Sales Agents only), each with a 90-day freshness window. Omit to use the default high-intent set (recent funding or acquisition, executive leadership change, pricing change, product launch, company expansion, buying intent on Reddit). An empty array prioritizes nothing; a non-empty array targets exactly those categories.
    - `outreach_settings` object: Settings for email outreach including campaign_schedule, email_list, email_tag_list, daily_limit, stop_on_reply, open_tracking, first_email_text_only, prioritize_new_leads, match_lead_esp
      - `opt_out_settings` object: Opt-out settings appended to outgoing emails
        - `text_opt_out_enabled` boolean: Append a plain-text opt-out line to every email
    - `autonomy_settings` object: Settings for AI Sales Agent autonomy including autopilot_mode, auto_reply_to_responses, and manual_leads_mode
      - `autopilot_mode` boolean: Enable autopilot mode for autonomous decision-making
      - `auto_reply_to_responses` boolean: Automatically respond to prospect replies with contextual messages
      - `manual_leads_mode` boolean: When true, automatic lead discovery is disabled and the user uploads leads manually
  - `created_by` string, uuid, nullable: User ID who created the AI Sales Agent
  - `master_lead_list_id` string, uuid, nullable: ID of the master lead list associated with this AI Sales Agent
  - `initial_scrape_ready` boolean, required: Indicates whether the initial website scrape has been completed
  - `agent_type` 2 | 4 | 7 | 8 | 9 | 10: The agent type. 2 = Sales Agent, 4 = Affiliate Agent, 7 = Recruiting Agent, 8 = Investment Agent, 9 = User Research Agent, 10 = Partnership Agent. Defaults to 2 (Sales Agent) if not provided.
  - `self_improvement` boolean, nullable: When enabled, the agent learns from past campaign performance to iteratively improve its outreach strategy.
  - `timestamp_created` string, date-time, required: Timestamp when the AI Sales Agent was created
  - `timestamp_updated` string, date-time, required: Timestamp when the AI Sales Agent was last updated
  - `timestamp_last_action` string, date-time, nullable: Timestamp of the last action taken by the AI Sales Agent
  - `timestamp_last_decision` string, date-time, nullable: Timestamp of the last decision made by the AI Sales Agent
  - `next_decision_time` string, date-time, nullable: Timestamp of the next scheduled decision time

## Other responses

- `400`: The request is invalid (e.g. missing required fields, invalid field values, or an invalid state for the operation)
- `401`: This request is unauthorized (either the Authorization header is missing or invalid, or the API key has been revoked)
- `402`: This request cannot be fulfilled because the workspace does not have an active paid plan
- `404`: The requested resource was not found
- `409`: The request conflicts with the current state of the resource
- `429`: You have exceeded the rate limit. Please check the rate limit docs for more information.

## Changes

- **2026-11-03** `c781051105a8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/instantly/apis/api-explorer/changes/api/v2/ai-agents/sales/:id/patch.md)

---

[API](https://skmtc.dev/instantly/apis/api-explorer.md) - [All operations](https://skmtc.dev/instantly/apis/api-explorer/llms.txt) - [OpenAPI document](https://skmtc.dev/instantly/apis/api-explorer/revisions/406ab2c4f714?raw)
