Delighted Autopilot API
Manage Autopilot drip campaign configuration and membership
Manage Autopilot drip campaign configuration and membership
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/delighted-autopilot-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: Delighted Autopilot API
description: REST API for the Delighted customer satisfaction platform. Enables sending surveys, retrieving and adding survey responses, accessing NPS and CSAT metrics, managing Autopilot drip campaigns, handling webhooks for real-time events, and managing people records including unsubscribes and bounces. Authentication is via HTTP Basic Auth using per-project API keys.
version: v1
contact:
name: Delighted Support
url: https://app.delighted.com/docs/api
termsOfService: https://delighted.com/terms
license:
name: Proprietary
url: https://delighted.com/terms
servers:
- url: https://api.delighted.com/v1
description: Delighted API v1
security:
- basicAuth: []
tags:
- name: Autopilot
description: Manage Autopilot drip campaign configuration and membership
paths:
/autopilot/email.json:
get:
operationId: getAutopilotEmailConfiguration
summary: Get Autopilot email configuration
description: Returns the Autopilot configuration for the email channel.
tags:
- Autopilot
responses:
'200':
description: Autopilot email configuration
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotConfiguration'
'401':
description: Unauthorized
'429':
description: Rate limit exceeded
/autopilot/sms.json:
get:
operationId: getAutopilotSmsConfiguration
summary: Get Autopilot SMS configuration
description: Returns the Autopilot configuration for the SMS channel.
tags:
- Autopilot
responses:
'200':
description: Autopilot SMS configuration
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotConfiguration'
'401':
description: Unauthorized
'429':
description: Rate limit exceeded
/autopilot/email/memberships.json:
get:
operationId: listAutopilotEmailMembers
summary: List people in email Autopilot
description: Returns a paginated list of people enrolled in the email Autopilot campaign.
tags:
- Autopilot
parameters:
- name: per_page
in: query
description: Results per page. Default is 20, maximum is 100.
schema:
type: integer
default: 20
maximum: 100
- name: person_id
in: query
description: Filter by person ID.
schema:
type: string
- name: person_email
in: query
description: Filter by person email.
schema:
type: string
format: email
- name: person_phone_number
in: query
description: Filter by phone number in E.164 format.
schema:
type: string
responses:
'200':
description: List of Autopilot email memberships
headers:
Link:
schema:
type: string
description: Cursor-based pagination link for next page
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AutopilotMembership'
'401':
description: Unauthorized
'429':
description: Rate limit exceeded
post:
operationId: addPersonToAutopilotEmail
summary: Add person to email Autopilot
description: Enrolls a person in the email Autopilot drip campaign.
tags:
- Autopilot
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotMembershipRequest'
responses:
'200':
description: Person added to Autopilot
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotMembershipCreated'
'401':
description: Unauthorized
'422':
description: Unprocessable entity
'429':
description: Rate limit exceeded
delete:
operationId: removePersonFromAutopilotEmail
summary: Remove person from email Autopilot
description: Removes a person from the email Autopilot campaign and cancels any already-scheduled Autopilot surveys. Preserves the person record and existing responses.
tags:
- Autopilot
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotRemoveRequest'
responses:
'200':
description: Person removed from Autopilot
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotRemoveResponse'
'401':
description: Unauthorized
'404':
description: Person not found in Autopilot
'429':
description: Rate limit exceeded
/autopilot/sms/memberships.json:
get:
operationId: listAutopilotSmsMembers
summary: List people in SMS Autopilot
description: Returns a paginated list of people enrolled in the SMS Autopilot campaign.
tags:
- Autopilot
parameters:
- name: per_page
in: query
description: Results per page. Default is 20, maximum is 100.
schema:
type: integer
default: 20
maximum: 100
- name: person_id
in: query
description: Filter by person ID.
schema:
type: string
- name: person_email
in: query
description: Filter by person email.
schema:
type: string
format: email
- name: person_phone_number
in: query
description: Filter by phone number in E.164 format.
schema:
type: string
responses:
'200':
description: List of Autopilot SMS memberships
headers:
Link:
schema:
type: string
description: Cursor-based pagination link for next page
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AutopilotMembership'
'401':
description: Unauthorized
'429':
description: Rate limit exceeded
post:
operationId: addPersonToAutopilotSms
summary: Add person to SMS Autopilot
description: Enrolls a person in the SMS Autopilot drip campaign.
tags:
- Autopilot
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotMembershipRequest'
responses:
'200':
description: Person added to SMS Autopilot
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotMembershipCreated'
'401':
description: Unauthorized
'422':
description: Unprocessable entity
'429':
description: Rate limit exceeded
delete:
operationId: removePersonFromAutopilotSms
summary: Remove person from SMS Autopilot
description: Removes a person from the SMS Autopilot campaign and cancels any already-scheduled Autopilot surveys.
tags:
- Autopilot
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotRemoveRequest'
responses:
'200':
description: Person removed from Autopilot
content:
application/json:
schema:
$ref: '#/components/schemas/AutopilotRemoveResponse'
'401':
description: Unauthorized
'404':
description: Person not found in Autopilot
'429':
description: Rate limit exceeded
components:
schemas:
AutopilotRemoveRequest:
type: object
description: Request body for removing a person from Autopilot. Specify exactly one identifier.
properties:
person_id:
type: string
description: Unique identifier of the person.
person_email:
type: string
format: email
description: Email address of the person.
person_phone_number:
type: string
description: Phone number in E.164 format.
AutopilotConfiguration:
type: object
description: Autopilot configuration for a delivery channel.
properties:
platform_id:
type: string
description: The name of the distribution platform (e.g. email, sms).
active:
type: boolean
description: Whether Autopilot is enabled for this platform.
frequency:
type: integer
description: Number of seconds between recurring surveys for people in Autopilot.
created_at:
type: integer
description: Unix timestamp when this configuration was initially set up.
updated_at:
type: integer
description: Unix timestamp of the most recent configuration change.
AutopilotRemoveResponse:
type: object
description: Response after removing a person from Autopilot.
properties:
person:
type: object
properties:
id:
type: string
name:
type:
- string
- 'null'
email:
type: string
format: email
created_at:
type: integer
phone_number:
type:
- string
- 'null'
Person:
type: object
description: A person record in the Delighted project.
properties:
id:
type: string
description: Unique person identifier.
email:
type: string
format: email
description: Person's email address.
name:
type:
- string
- 'null'
description: Person's name.
created_at:
type: integer
description: Unix timestamp when the person was created.
phone_number:
type:
- string
- 'null'
description: Person's phone number in E.164 format.
last_sent_at:
type:
- integer
- 'null'
description: Unix timestamp when the last survey was sent.
last_responded_at:
type:
- integer
- 'null'
description: Unix timestamp when the person last responded to a survey.
next_survey_scheduled_at:
type:
- integer
- 'null'
description: Unix timestamp when the next survey is scheduled to be sent.
AutopilotMembershipCreated:
type: object
description: Response after adding a person to Autopilot.
properties:
person:
$ref: '#/components/schemas/Person'
properties:
type: object
additionalProperties:
type: string
description: Custom properties set for this Autopilot membership.
AutopilotMembership:
type: object
description: An Autopilot membership record.
properties:
created_at:
type: integer
description: Unix timestamp when the person joined Autopilot.
updated_at:
type: integer
description: Unix timestamp of last property or survey change.
person:
type: object
properties:
id:
type: string
name:
type:
- string
- 'null'
email:
type: string
format: email
phone_number:
type:
- string
- 'null'
created_at:
type: integer
next_survey_request:
type:
- object
- 'null'
properties:
id:
type: string
description: Survey request identifier.
created_at:
type: integer
description: Unix timestamp when the survey request was created.
survey_scheduled_at:
type: integer
description: Unix timestamp when the survey is scheduled to be sent.
properties:
type: object
additionalProperties:
type: string
description: Custom property key-value pairs.
AutopilotMembershipRequest:
type: object
description: Request body for adding a person to Autopilot.
properties:
person_id:
type: string
description: Person's unique identifier.
person_email:
type: string
format: email
description: Person's email address. Required for email Autopilot.
person_phone_number:
type: string
description: Person's phone number in E.164 format. Required for SMS Autopilot.
person_name:
type: string
description: Person's name.
properties:
type: object
additionalProperties:
type: string
description: 'Custom key-value pairs for segmentation. Supports special keys: question_product_name, delighted_email_subject, delighted_intro_message, locale, thank_you_message, thank_you_link_text, thank_you_link_url.'
securitySchemes:
basicAuth:
type: http
scheme: basic
description: Use your Delighted API key as the username. Leave the password empty. The API key is found in your project settings.