Instantly Campaign Subsequence API
A subsequence entity representing a follow-up sequence
A subsequence entity representing a follow-up sequence
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/instantly-ai-campaignsubsequence-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Explorer Campaign Subsequence API
description: The entire API V2 documentation is interactive and can be tested here. To the right side of every endpoint you will see a box with an example request. You can click on the "Try it" button to send a request to the server right from the docs. You will need to provide an API key by clicking the `ApiKeyAuth_token` blue text.
version: 2.0.0
servers:
- url: https://api.instantly.ai
description: Instantly API Server
security:
- ApiKeyAuth: []
tags:
- name: CampaignSubsequence
description: A subsequence entity representing a follow-up sequence
x-group: Campaign Subsequence
paths:
/api/v2/subsequences:
post:
operationId: createCampaignSubsequence
summary: Create campaign subsequence
tags:
- CampaignSubsequence
description: 'Requires one of the following scopes: `subsequences:create`, `subsequences:all`, `all:create`, `all:all`'
requestBody:
content:
application/json:
schema:
title: CreateCampaign Subsequence
description: The Campaign Subsequence to create
type: object
properties:
parent_campaign:
type: string
description: ID of the parent campaign
format: uuid
example: 019ffad2-5cc7-76f5-9fd3-25f990e43646
name:
type: string
description: Name of the subsequence
example: Follow-up sequence
conditions:
type: object
description: Conditions that trigger the subsequence
properties:
crm_status:
type: array
description: Lead CRM statuses that trigger the subsequence. Accepts the built-in statuses listed below, or the interest status of a custom lead label.
items:
type: number
minimum: -30000
maximum: 30000
x-enumDescriptions:
'0': Out of Office
'1': Interested
'2': Meeting Booked
'3': Meeting Completed
'4': Won
'-1': Not Interested
'-2': Wrong Person
'-3': Lost
'-4': No Show
example: 1
lead_activity:
type: array
description: Lead activities that trigger the subsequence.
items:
type: number
enum:
- 4
- 91
- 2
x-enumDescriptions:
'2': Email Opened - Triggered when a lead opens an email
'4': Email Link Clicked - Triggered when a lead clicks a link in an email
'91': Campaign Completed Without Reply - Triggered when a campaign completes for a lead without receiving a reply
example: 4
reply_contains:
type: string
example: 'yes'
subsequence_schedule:
type: object
description: Schedule configuration for the subsequence. When omitted on create, inherits the parent campaign's schedule.
properties:
start_date:
type:
- string
- 'null'
format: date
description: Start date in YYYY-MM-DD format. Uses the campaign's timezone.
example: '2025-09-25'
end_date:
type:
- string
- 'null'
format: date
description: End date in YYYY-MM-DD format. Uses the campaign's timezone.
example: '2025-09-25'
schedules:
type: array
items:
type: object
properties:
name:
type: string
example: My Schedule
timing:
type: object
properties:
from:
type: string
pattern: ^([01][0-9]|2[0-3]):([0-5][0-9])$
example: 09:00
to:
type: string
pattern: ^([01][0-9]|2[0-3]):([0-5][0-9])$
example: '17:00'
required:
- from
- to
days:
type: object
minProperties: 1
properties:
'0':
type: boolean
example: true
'1':
type: boolean
example: true
'2':
type: boolean
example: true
'3':
type: boolean
example: true
'4':
type: boolean
example: true
'5':
type: boolean
example: false
'6':
type: boolean
example: false
timezone:
type: string
enum:
- 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
example: Etc/GMT+12
required:
- name
- timing
- days
- timezone
minItems: 1
required:
- schedules
sequences:
type: array
description: List of sequences (the actual email copy). Even though this field is an array, only the first element is used, so please provide only one array item, and add the steps to that array
items:
type: object
properties:
steps:
type: array
items:
type: object
properties:
type:
type: string
enum:
- email
x-enumDescriptions:
email: This steps represents an email
description: Type of step. This has to be 'email' always - it's the only supported type for now
example: email
delay:
type: number
description: The delay value before sending the NEXT email. The unit is determined by the delay_unit field (defaults to days).
example: 2
delay_unit:
type: string
enum:
- minutes
- hours
- days
default: days
description: The unit of time for the delay value (minutes, hours, or days). Defaults to days for backward compatibility.
example: days
pre_delay:
type: number
description: The delay value before sending the FIRST email in a subsequence. **Only applicable to subsequences** - this field is ignored for regular campaigns. The unit is determined by the pre_delay_unit field (defaults to days).
example: 2
pre_delay_unit:
type: string
enum:
- minutes
- hours
- days
default: days
description: The unit of time for the pre_delay value (minutes, hours, or days). **Only applicable to subsequences** - this field is ignored for regular campaigns. Defaults to days for backward compatibility.
example: days
variants:
type: array
items:
type: object
properties:
subject:
type: string
example: Hello {{firstName}}
body:
type: string
description: Email body HTML. Use `<br/>` tags for delivered email line breaks.
example: Hey {{firstName}},<br/><br/>I hope you are doing well.
v_disabled:
type: boolean
description: Whether this variant is disabled. By default, all the variants are enabled. Please set this to true if you want to disable this variant
example: true
required:
- subject
- body
minItems: 1
maxItems: 26
contains:
type: object
not:
properties:
v_disabled:
enum:
- true
required:
- v_disabled
required:
- type
- delay
- variants
required:
- steps
auto_variant_select:
type:
- object
- 'null'
description: Automatically select the winning variant for each step using open, click, or reply rate. Set to `null` to disable automatic selection.
properties:
trigger:
type: string
enum:
- reply_rate
- click_rate
- open_rate
examples:
- click_rate
example: click_rate
required:
- trigger
daily_limit_mode:
type: string
description: Daily limit mode for the subsequence. "inherit" uses the parent campaign limit, "custom" uses a subsequence-specific limit, "unlimited" bypasses the campaign-level daily limit.
enum:
- inherit
- custom
- unlimited
example: inherit
daily_limit:
type:
- number
- 'null'
description: Custom daily limit for the subsequence. Only used when `daily_limit_mode` is "custom".
example: 50
ignore_account_daily_limit:
type: boolean
description: When enabled, the subsequence will send even when sending accounts have reached their daily limit.
example: false
required:
- parent_campaign
- name
- conditions
additionalProperties: false
required: true
description: The Campaign Subsequence to create
responses:
'200':
description: The Campaign Subsequence
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignSubsequence'
'400':
description: Invalid request body (e.g. missing required fields, or invalid field values)
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
enum:
- 400
examples:
- 400
example: 400
error:
type: string
enum:
- Bad Request
examples:
- Bad Request
example: Bad Request
message:
type: string
examples:
- body must have required property 'name'
example: body must have required property 'name'
required:
- statusCode
- error
- message
'401':
description: This request is unauthorized (either the Authorization header is missing or invalid, or the API key has been revoked)
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
enum:
- 401
examples:
- 401
example: 401
error:
type: string
enum:
- Unauthorized
examples:
- Unauthorized
example: Unauthorized
message:
type: string
examples:
- Missing Authorization header
example: Missing Authorization header
required:
- statusCode
- error
- message
'402':
description: This request cannot be fulfilled because the workspace does not have an active paid plan
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
enum:
- 402
examples:
- 402
example: 402
error:
type: string
enum:
- Payment Required
examples:
- Payment Required
example: Payment Required
message:
type: string
examples:
- Workspace does not have an active paid plan
example: Workspace does not have an active paid plan
required:
- statusCode
- error
- message
'404':
description: The requested resource was not found
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
enum:
- 404
examples:
- 404
example: 404
error:
type: string
enum:
- Not Found
examples:
- Not Found
example: Not Found
message:
type: string
examples:
- Resource not found
example: Resource not found
required:
- statusCode
- error
- message
'429':
description: You have exceeded the rate limit. Please check the rate limit docs for more information.
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
enum:
- 429
examples:
- 429
example: 429
error:
type: string
enum:
- Too Many Requests
examples:
- Too Many Requests
example: Too Many Requests
message:
type: string
examples:
- Rate limit exceeded
example: Rate limit exceeded
required:
- statusCode
- error
- message
get:
operationId: listCampaignSubsequence
summary: List campaign subsequence
tags:
- CampaignSubsequence
description: 'Requires one of the following scopes: `subsequences:read`, `subsequences:all`, `all:read`, `all:all`'
parameters:
- schema:
type: integer
minimum: 1
maximum: 100
example: 10
example: 10
in: query
name: limit
required: false
description: The number of items to return
- schema:
type: string
example: 01956fbd-0eb1-72db-a565-82977a586084
example: 01956fbd-0eb1-72db-a565-82977a586084
in: query
name: starting_after
required: false
description: The ID of the last item in the previous page - used for pagination. You can use the value of the `next_starting_after` field from the previous response.
- schema:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
example: 123e4567-e89b-12d3-a456-426614174000
in: query
name: parent_campaign
required: false
description: The ID of the campaign to list the subsequences of.
- schema:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
example: 123e4567-e89b-12d3-a456-426614174000
in: query
name: parent_campaign_not
required: false
description: The ID of a campaign to exclude subsequences of, returning reusable subsequences from the workspace's other campaigns instead.
- schema:
type: string
example: test
example: test
in: query
name: search
required: false
description: The search query to filter the subsequences by.
responses:
'200':
description: The list of Campaign Subsequence
content:
application/json:
schema:
type: object
properties:
items:
type: array
description: The list of Campaign Subsequence
items:
$ref: '#/components/schemas/CampaignSubsequence'
next_starting_after:
type: string
examples:
- 019ffad2-9c89-793f-9322-7fbe7cac60bb
- '2026-08-13T11:12:14.473Z'
description: The filter for getting the next items after this one, this could either be a UUID, a timestamp, on an email depending on the specific API
example: 019ffad2-9c89-793f-9322-7fbe7cac60bb
additionalProperties: false
required:
- items
'401':
description: This request is unauthorized (either the Authorization header is missing or invalid, or the API key has been revoked)
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
enum:
- 401
examples:
- 401
example: 401
error:
type: string
enum:
- Unauthorized
examples:
- Unauthorized
example: Unauthorized
message:
type: string
examples:
- Missing Authorization header
example: Missing Authorization header
required:
- statusCode
- error
- message
'402':
description: This request cannot be fulfilled because the workspace does not have an active paid plan
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
enum:
- 402
examples:
- 402
example: 402
error:
type: string
enum:
- Payment Required
examples:
- Payment Required
example: Payment Required
message:
type: string
examples:
- Workspace does not have an active paid plan
example: Workspace does not have an active paid plan
required:
- statusCode
- error
- message
'404':
description: The requested resource was not found
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
enum:
- 404
examples:
- 404
example: 404
error:
type: string
enum:
- Not Found
examples:
- Not Found
example: Not Found
message:
type: string
examples:
- Resource not found
example: Resource not found
required:
- statusCode
- error
- message
'429':
description: You have exceeded the rate limit. Please check the rate limit docs for more information.
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
enum:
- 429
examples:
- 429
example: 429
error:
type: string
enum:
- Too Many Requests
examples:
- Too Many Requests
example: Too Many Requests
message:
type: string
examples:
- Rate limit exceeded
example: Rate limit exceeded
required:
- statusCode
- error
- message
/api/v2/subsequences/{id}/duplicate:
post:
operationId: duplicateSubsequence
summary: Duplicate a subsequence
tags:
- CampaignSubsequence
description: 'Duplicate a subsequence with the same trigger conditions
Requires one of the following scopes: `subsequences:create`, `subsequences:all`, `all:create`, `all:all`'
requestBody:
content:
application/json:
schema:
type: object
properties:
parent_campaign:
type: string
format: uuid
description: The ID of the campaign to duplicate the subsequence to.
example: 123e4567-e89b-12d3-a456-426614174000
name:
type: string
description: The name of the duplicate subsequence. Defaults to the source subsequence name when omitted.
example: My Duplicate Subsequence
required:
- parent_campaign
required: true
parameters:
- schema:
type: string
format: uuid
example: 123e4567-e89b-12d3-a456-426614174000
example: 123e4567-e89b-12d3-a456-426614174000
in: path
name: id
required: true
description: The ID of the subsequence to duplicate.
responses:
'200':
description: The requested Campaign Subsequence
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignSubsequence'
'401':
description: This request is unauthorized (either the Authorization header is missing or invalid, or the API key has been revoked)
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
enum:
- 401
examples:
- 401
example: 401
error:
type: string
enum:
- Unauthorized
examples:
- Unauthorized
example: Unauthorized
message:
type: string
examples:
- Missing Authorization header
example: Missing Authorization header
required:
- statusCode
- error
- message
'402':
description: This request cannot be fulfilled because the workspace does not have an active paid plan
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
enum:
- 402
examples:
- 402
example: 402
error:
type: string
enum:
- Payment Required
examples:
- Payment Required
examp
# --- truncated at 32 KB (125 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/instantly-ai/refs/heads/main/openapi/instantly-ai-campaignsubsequence-api-openapi.yml