Customer.io Pipelines API

Pipelines / CDP API - identify, track, page, screen, group, alias, batch.

OpenAPI Specification

customerio-pipelines-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Customer.io Broadcasts Pipelines API
  description: Specification of the Customer.io APIs for customer messaging and marketing automation. Covers the Track API (track.customer.io - people, events, devices, manual segments, plus the v2 entity/batch endpoints), the App / Transactional API (api.customer.io - transactional send, API-triggered broadcasts, customers, segments, campaigns, newsletters, messages, exports, collections, snippets, sender identities, imports), and the Pipelines / Data Pipelines CDP API (cdp.customer.io - identify, track, page, screen, group, alias, batch). Authentication differs per surface - the Track API uses HTTP Basic auth with site_id:api_key, the App and Pipelines APIs use a Bearer token.
  termsOfService: https://customer.io/legal/terms-of-service/
  contact:
    name: Customer.io Support
    email: win@customer.io
  version: '1.0'
servers:
- url: https://track.customer.io
  description: Track API (US region)
- url: https://track-eu.customer.io
  description: Track API (EU region)
- url: https://api.customer.io
  description: App / Transactional API (US region)
- url: https://api-eu.customer.io
  description: App / Transactional API (EU region)
- url: https://cdp.customer.io
  description: Pipelines / Data Pipelines CDP API (US region)
- url: https://cdp-eu.customer.io
  description: Pipelines / Data Pipelines CDP API (EU region)
security:
- basicAuth: []
- bearerAuth: []
tags:
- name: Pipelines
  description: Pipelines / CDP API - identify, track, page, screen, group, alias, batch.
paths:
  /v1/identify:
    post:
      operationId: pipelinesIdentify
      tags:
      - Pipelines
      summary: Identify a user (Pipelines)
      description: Pipelines / CDP identify call. Requires at least one of userId or anonymousId. Bearer auth with a source write key.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PipelinesIdentify'
      responses:
        '200':
          description: Call accepted.
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
      - bearerAuth: []
  /v1/track:
    post:
      operationId: pipelinesTrack
      tags:
      - Pipelines
      summary: Track an event (Pipelines)
      description: Pipelines / CDP track call. Requires an event name and one of userId or anonymousId.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PipelinesTrack'
      responses:
        '200':
          description: Call accepted.
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
      - bearerAuth: []
  /v1/page:
    post:
      operationId: pipelinesPage
      tags:
      - Pipelines
      summary: Record a page view (Pipelines)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: Call accepted.
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
      - bearerAuth: []
  /v1/screen:
    post:
      operationId: pipelinesScreen
      tags:
      - Pipelines
      summary: Record a screen view (Pipelines)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: Call accepted.
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
      - bearerAuth: []
  /v1/group:
    post:
      operationId: pipelinesGroup
      tags:
      - Pipelines
      summary: Associate a user with a group (Pipelines)
      description: Requires a groupId.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: Call accepted.
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
      - bearerAuth: []
  /v1/alias:
    post:
      operationId: pipelinesAlias
      tags:
      - Pipelines
      summary: Alias two identities (Pipelines)
      description: Requires a previousId.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: Call accepted.
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
      - bearerAuth: []
  /v1/batch:
    post:
      operationId: pipelinesBatch
      tags:
      - Pipelines
      summary: Batch Pipelines calls
      description: Submit multiple identify/track/page/screen/group/alias calls (1 MB limit).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                batch:
                  type: array
                  items:
                    type: object
                    additionalProperties: true
      responses:
        '200':
          description: Batch accepted.
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
      - bearerAuth: []
components:
  schemas:
    PipelinesTrack:
      type: object
      required:
      - event
      properties:
        event:
          type: string
        userId:
          type: string
        anonymousId:
          type: string
        properties:
          type: object
          additionalProperties: true
        timestamp:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        meta:
          type: object
          properties:
            error:
              type: string
            errors:
              type: array
              items:
                type: string
    PipelinesIdentify:
      type: object
      properties:
        userId:
          type: string
        anonymousId:
          type: string
        traits:
          type: object
          additionalProperties: true
        timestamp:
          type: string
          format: date-time
  responses:
    Unauthorized:
      description: Authentication failed or credentials missing.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: Track API auth. Base-64 encode site_id:api_key and pass it in the Authorization header (Basic ...).
    bearerAuth:
      type: http
      scheme: bearer
      description: App API and Pipelines API auth. Pass the App API key (or Pipelines source write key) as a Bearer token in the Authorization header.