Customer.io Transactional API

Send transactional messages such as password resets, purchase receipts, and other important notifications triggered by user actions.

OpenAPI Specification

customer-io-transactional-api-openapi.yml Raw ↑
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/