Delighted Autopilot API
Manage Autopilot drip campaign configuration and membership
Manage Autopilot drip campaign configuration and membership
openapi: 3.0.3
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:
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.
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
nullable: true
email:
type: string
format: email
phone_number:
type: string
nullable: true
created_at:
type: integer
next_survey_request:
type: object
nullable: true
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.
AutopilotRemoveResponse:
type: object
description: Response after removing a person from Autopilot.
properties:
person:
type: object
properties:
id:
type: string
name:
type: string
nullable: true
email:
type: string
format: email
created_at:
type: integer
phone_number:
type: string
nullable: true
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.
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.
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
nullable: true
description: Person's name.
created_at:
type: integer
description: Unix timestamp when the person was created.
phone_number:
type: string
nullable: true
description: Person's phone number in E.164 format.
last_sent_at:
type: integer
nullable: true
description: Unix timestamp when the last survey was sent.
last_responded_at:
type: integer
nullable: true
description: Unix timestamp when the person last responded to a survey.
next_survey_scheduled_at:
type: integer
nullable: true
description: Unix timestamp when the next survey is scheduled to be sent.
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.