Customer.io Customers API

Look up customer profiles, search for customers, and retrieve customer attributes and activity data.

OpenAPI Specification

customer-io-customers-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Customer.io App Activities Customers 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: Customers
  description: Look up customer profiles, search for customers, and retrieve customer attributes and activity data.
paths:
  /customers:
    get:
      operationId: searchCustomers
      summary: Search customers
      description: Searches for customers in your workspace using complex filter criteria. Returns matching customer profiles with their attributes.
      tags:
      - Customers
      parameters:
      - name: filter
        in: query
        description: Filter criteria for searching customers.
        schema:
          type: object
      responses:
        '200':
          description: Matching customers.
          content:
            application/json:
              schema:
                type: object
                properties:
                  identifiers:
                    type: array
                    items:
                      type: object
                  next:
                    type: string
                    description: Pagination cursor for the next page of results.
        '401':
          description: Unauthorized. Invalid App API key.
  /customers/{identifier}/attributes:
    get:
      operationId: getCustomerAttributes
      summary: Get customer attributes
      description: Returns the attributes for a specific customer profile.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/CustomerIdentifier'
      responses:
        '200':
          description: Customer attributes.
          content:
            application/json:
              schema:
                type: object
                properties:
                  customer:
                    $ref: '#/components/schemas/Customer'
        '401':
          description: Unauthorized. Invalid App API key.
        '404':
          description: Customer not found.
  /customers/{identifier}/segments:
    get:
      operationId: getCustomerSegments
      summary: Get customer segments
      description: Returns the segments that a specific customer belongs to.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/CustomerIdentifier'
      responses:
        '200':
          description: Customer segments.
          content:
            application/json:
              schema:
                type: object
                properties:
                  segments:
                    type: array
                    items:
                      $ref: '#/components/schemas/Segment'
        '401':
          description: Unauthorized. Invalid App API key.
        '404':
          description: Customer not found.
  /customers/{identifier}/activities:
    get:
      operationId: getCustomerActivities
      summary: Get customer activities
      description: Returns a list of activities for a specific customer, including messages sent, events tracked, and other interactions.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/CustomerIdentifier'
      responses:
        '200':
          description: Customer activity list.
          content:
            application/json:
              schema:
                type: object
                properties:
                  activities:
                    type: array
                    items:
                      $ref: '#/components/schemas/Activity'
                  next:
                    type: string
                    description: Pagination cursor for the next page of results.
        '401':
          description: Unauthorized. Invalid App API key.
        '404':
          description: Customer not found.
  /customers/{identifier}/messages:
    get:
      operationId: getCustomerMessages
      summary: Get customer messages
      description: Returns a list of messages sent to a specific customer.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/CustomerIdentifier'
      responses:
        '200':
          description: Customer messages.
          content:
            application/json:
              schema:
                type: object
                properties:
                  messages:
                    type: array
                    items:
                      $ref: '#/components/schemas/Message'
                  next:
                    type: string
                    description: Pagination cursor for the next page of results.
        '401':
          description: Unauthorized. Invalid App API key.
        '404':
          description: Customer not found.
  /customers/{identifier}:
    put:
      operationId: identifyCustomer
      summary: Identify a customer
      description: Creates or updates a customer profile in Customer.io. If the customer does not exist, a new profile is created. If the customer already exists, the profile is updated with the provided attributes. The identifier can be an id or email address depending on your workspace configuration.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/CustomerIdentifier_2'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerAttributes'
      responses:
        '200':
          description: Customer identified successfully.
        '401':
          description: Unauthorized. Invalid Site ID or API key.
    delete:
      operationId: deleteCustomer
      summary: Delete a customer
      description: Deletes a customer profile from Customer.io. This removes the person and their associated data from your workspace. This action cannot be undone.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/CustomerIdentifier_2'
      responses:
        '200':
          description: Customer deleted successfully.
        '401':
          description: Unauthorized. Invalid Site ID or API key.
        '404':
          description: Customer not found.
  /customers/{identifier}/suppress:
    post:
      operationId: suppressCustomer
      summary: Suppress a customer
      description: Suppresses a customer profile, preventing Customer.io from sending messages to the person. The customer is deleted and their identifier is added to a suppression list so they cannot be re-added.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/CustomerIdentifier_2'
      responses:
        '200':
          description: Customer suppressed successfully.
        '401':
          description: Unauthorized. Invalid Site ID or API key.
  /customers/{identifier}/unsuppress:
    post:
      operationId: unsuppressCustomer
      summary: Unsuppress a customer
      description: Removes a customer from the suppression list, allowing them to be re-added to your workspace and receive messages again.
      tags:
      - Customers
      parameters:
      - $ref: '#/components/parameters/CustomerIdentifier_2'
      responses:
        '200':
          description: Customer unsuppressed successfully.
        '401':
          description: Unauthorized. Invalid Site ID or API key.
components:
  schemas:
    Message:
      type: object
      description: A message that was sent to a customer.
      properties:
        id:
          type: string
          description: The unique message identifier.
        type:
          type: string
          description: The message type (email, push, sms, webhook, in-app).
        subject:
          type: string
          description: The message subject line.
        customer_id:
          type: string
          description: The recipient customer identifier.
        campaign_id:
          type: integer
          description: The associated campaign identifier.
        created:
          type: integer
          description: UNIX timestamp of when the message was created.
        metrics:
          type: object
          description: Message delivery and engagement metrics.
          properties:
            sent:
              type: integer
              description: UNIX timestamp of when the message was sent.
            delivered:
              type: integer
              description: UNIX timestamp of when the message was delivered.
            opened:
              type: integer
              description: UNIX timestamp of when the message was opened.
            clicked:
              type: integer
              description: UNIX timestamp of when a link was clicked.
            bounced:
              type: integer
              description: UNIX timestamp of when the message bounced.
    Segment:
      type: object
      description: A customer segment in Customer.io.
      properties:
        id:
          type: integer
          description: The unique segment identifier.
        name:
          type: string
          description: The segment name.
        description:
          type: string
          description: A description of the segment.
        type:
          type: string
          description: The segment type (manual or data-driven).
          enum:
          - manual
          - data_driven
        state:
          type: string
          description: The current state of the segment.
    CustomerAttributes:
      type: object
      description: An object containing customer attributes to set or update. Any key-value pairs included will be saved as attributes on the customer profile.
      properties:
        email:
          type: string
          format: email
          description: The customer email address.
        created_at:
          type: integer
          description: A UNIX timestamp representing when the customer was created.
        anonymous_id:
          type: string
          description: An anonymous identifier to associate with this customer for merging anonymous events.
      additionalProperties: true
    Activity:
      type: object
      description: An activity record representing an action in your workspace.
      properties:
        id:
          type: string
          description: The unique activity identifier.
        type:
          type: string
          description: The activity type.
        name:
          type: string
          description: The activity name.
        timestamp:
          type: integer
          description: UNIX timestamp of when the activity occurred.
        delivery_id:
          type: string
          description: The associated delivery identifier if applicable.
    Customer:
      type: object
      description: A customer profile with attributes.
      properties:
        id:
          type: string
          description: The customer identifier.
        email:
          type: string
          format: email
          description: The customer email address.
        created_at:
          type: integer
          description: UNIX timestamp of when the customer was created.
        attributes:
          type: object
          description: Custom attributes on the customer profile.
          additionalProperties: true
  parameters:
    CustomerIdentifier_2:
      name: identifier
      in: path
      required: true
      description: The unique identifier for the customer. This can be an id or email address depending on your workspace identity configuration.
      schema:
        type: string
    CustomerIdentifier:
      name: identifier
      in: path
      required: true
      description: The unique identifier for the customer. Can be an id, email, or cio_id depending on your workspace configuration.
      schema:
        type: string
  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/