Customer.io Transactional API
Send transactional messages such as password resets, purchase receipts, and other important notifications triggered by user actions.
Send transactional messages such as password resets, purchase receipts, and other important notifications triggered by user actions.
openapi: 3.1.0
info:
title: Customer.io App Activities Transactional API
description: The Customer.io App API enables developers to manage workspace resources and send messages programmatically. It provides endpoints for sending transactional messages, triggering broadcasts, managing customers and segments, retrieving campaign and newsletter data, and exporting customer information. The API uses bearer token authentication with an App API key and is designed for operations that go beyond data ingestion, such as retrieving metrics, managing message templates, and automating outbound communications from Customer.io.
version: 1.0.0
contact:
name: Customer.io Support
url: https://customer.io/contact
termsOfService: https://customer.io/legal/terms-of-service
servers:
- url: https://api.customer.io/v1
description: US Production Server
- url: https://api-eu.customer.io/v1
description: EU Production Server
security:
- bearerAuth: []
tags:
- name: Transactional
description: Send transactional messages such as password resets, purchase receipts, and other important notifications triggered by user actions.
paths:
/send/email:
post:
operationId: sendTransactionalEmail
summary: Send a transactional email
description: Sends a transactional email message to a specific customer. You can compose the entire message in the request body or use a transactional message template. Transactional messages are triggered by user actions such as password resets, purchase confirmations, and account notifications. Rate limited to 100 requests per second.
tags:
- Transactional
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionalEmailRequest'
responses:
'200':
description: Transactional email sent successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionalEmailResponse'
'400':
description: Bad request. Invalid request body.
'401':
description: Unauthorized. Invalid App API key.
'429':
description: Rate limit exceeded.
/send/push:
post:
operationId: sendTransactionalPush
summary: Send a transactional push notification
description: Sends a transactional push notification to a specific customer. The customer must have at least one registered device to receive the notification.
tags:
- Transactional
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionalPushRequest'
responses:
'200':
description: Transactional push sent successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionalMessageResponse'
'400':
description: Bad request. Invalid request body.
'401':
description: Unauthorized. Invalid App API key.
'429':
description: Rate limit exceeded.
components:
schemas:
TransactionalMessageResponse:
type: object
description: The response from sending a transactional message.
properties:
delivery_id:
type: string
description: The unique identifier for this delivery.
queued_at:
type: integer
description: A UNIX timestamp of when the message was queued.
TransactionalEmailResponse:
type: object
description: The response from sending a transactional email.
properties:
delivery_id:
type: string
description: The unique identifier for this delivery.
queued_at:
type: integer
description: A UNIX timestamp of when the message was queued for sending.
TransactionalPushRequest:
type: object
required:
- transactional_message_id
- identifiers
description: A request to send a transactional push notification.
properties:
transactional_message_id:
type: string
description: The identifier for the transactional push template.
identifiers:
type: object
description: Identifiers for the customer receiving the notification.
properties:
id:
type: string
description: The customer id.
email:
type: string
format: email
description: The customer email address.
cio_id:
type: string
description: The Customer.io internal identifier.
message_data:
type: object
description: Custom data to use in notification personalization.
additionalProperties: true
send_to_unsubscribed:
type: boolean
description: If true, sends the notification even if the customer has unsubscribed.
title:
type: string
description: The push notification title. Overrides the template title.
message:
type: string
description: The push notification message body.
custom_data:
type: object
description: Custom key-value pairs sent with the push notification payload.
additionalProperties: true
TransactionalEmailRequest:
type: object
required:
- transactional_message_id
- to
- identifiers
description: A request to send a transactional email. You can use a pre-built template or compose the message inline.
properties:
transactional_message_id:
type: string
description: The identifier for the transactional message template to use.
to:
type: string
format: email
description: The email address to send the message to.
identifiers:
type: object
description: Identifiers for the customer receiving the message.
properties:
id:
type: string
description: The customer id.
email:
type: string
format: email
description: The customer email address.
cio_id:
type: string
description: The Customer.io internal identifier.
from:
type: string
description: The sender email address. Overrides the template default.
reply_to:
type: string
description: The reply-to email address.
bcc:
type: string
description: BCC email address.
subject:
type: string
description: The email subject line. Overrides the template subject.
body:
type: string
description: The HTML email body. Overrides the template body.
plaintext_body:
type: string
description: The plaintext email body.
message_data:
type: object
description: Custom data to use in message personalization.
additionalProperties: true
disable_message_retention:
type: boolean
description: If true, Customer.io does not retain the message body after delivery.
send_to_unsubscribed:
type: boolean
description: If true, sends the message even if the customer has unsubscribed from marketing messages.
queue_draft:
type: boolean
description: If true, holds the message as a draft for review.
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Bearer token authentication using your App API key. Pass the key in the Authorization header as Bearer {app_api_key}.
externalDocs:
description: App API Documentation
url: https://docs.customer.io/integrations/api/app/