Adobe Analytics Bulk Data Insertion API

The Bulk Data Insertion API (BDIA) lets you upload server-side call data in batches of compressed CSV files instead of using client-side libraries such as AppMeasurement. It is the recommended successor to the single-event Data Insertion API for high-volume server-side data collection.

OpenAPI Specification

adobe-analytics-bulk-data-insertion-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Adobe Analytics Bulk Data Insertion API
  description: >-
    The Bulk Data Insertion API (BDIA) lets you upload server-side call data in
    batches of gzip-compressed CSV files. Each file contains one event per row
    and must conform to the BDIA file format specification. This API is the
    recommended successor to the single-event Data Insertion API for
    high-volume server-side data collection.
  version: '1.0'
  contact:
    name: Adobe Analytics Support
    url: https://developer.adobe.com/analytics-apis/docs/2.0/support/
  termsOfService: https://www.adobe.com/legal/terms.html
  x-last-validated: '2026-04-18'
externalDocs:
  description: Adobe Analytics Bulk Data Insertion API Documentation
  url: https://developer.adobe.com/analytics-apis/docs/2.0/guides/endpoints/bulk-data-insertion/
servers:
- url: https://analytics-collection.adobe.io/aa/collect/v1
  description: Production (auto-routed)
- url: https://analytics-collection-us.adobe.io/aa/collect/v1
  description: US region
- url: https://analytics-collection-eu.adobe.io/aa/collect/v1
  description: EU region
tags:
- name: Events
  description: Upload and validate batched event data files
security:
- bearerAuth: []
  apiKey: []
paths:
  /events:
    post:
      operationId: uploadEvents
      summary: Adobe Analytics Upload a Batch Events File
      description: >-
        Uploads a gzip-compressed CSV file containing batched Analytics event
        data. Each row in the CSV represents one Analytics hit. The file must
        include required columns (timestamp, marketingCloudVisitorID or
        customerID, and reportSuiteID) and may include any additional Analytics
        variables. The visitor group ID header (x-adobe-vgid) is required and
        must match the visitor group used for all files in a sequence to ensure
        correct visitor stitching.
      tags:
      - Events
      parameters:
      - $ref: '#/components/parameters/visitorGroupId'
      - name: x-adobe-idempotency-key
        in: header
        description: >-
          Optional unique identifier for the upload for deduplication.
          Duplicate uploads with the same key are rejected.
        schema:
          type: string
        example: example_value
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - file
              properties:
                file:
                  type: string
                  format: binary
                  description: Gzip-compressed CSV file containing event data
            examples:
              UploadeventsRequestExample:
                summary: Default uploadEvents request
                x-microcks-default: true
                value:
                  file: example_value
      responses:
        '200':
          description: File uploaded and queued for processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadResponse'
              examples:
                Uploadevents200Example:
                  summary: Default uploadEvents 200 response
                  x-microcks-default: true
                  value:
                    uploadTrackingCode: example_value
                    fileSize: 10
                    receivedTime: '2026-01-15T10:30:00Z'
        '400':
          description: Invalid file format or missing required headers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Uploadevents400Example:
                  summary: Default uploadEvents 400 response
                  x-microcks-default: true
                  value:
                    errorCode: example_value
                    errorDescription: example_value
        '401':
          description: Unauthorized - invalid or missing credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Uploadevents401Example:
                  summary: Default uploadEvents 401 response
                  x-microcks-default: true
                  value:
                    errorCode: example_value
                    errorDescription: example_value
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Uploadevents429Example:
                  summary: Default uploadEvents 429 response
                  x-microcks-default: true
                  value:
                    errorCode: example_value
                    errorDescription: example_value
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /events/validate:
    post:
      operationId: validateEvents
      summary: Adobe Analytics Validate a Batch Events File
      description: >-
        Synchronously validates a gzip-compressed CSV events file without
        ingesting the data. Returns an immediate response indicating whether
        the file passes format validation, along with detailed error messages
        for any rows that fail validation. Use this endpoint to test files
        before uploading to the events endpoint.
      tags:
      - Events
      parameters:
      - $ref: '#/components/parameters/visitorGroupId'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - file
              properties:
                file:
                  type: string
                  format: binary
                  description: Gzip-compressed CSV file to validate
            examples:
              ValidateeventsRequestExample:
                summary: Default validateEvents request
                x-microcks-default: true
                value:
                  file: example_value
      responses:
        '200':
          description: Validation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationResponse'
              examples:
                Validateevents200Example:
                  summary: Default validateEvents 200 response
                  x-microcks-default: true
                  value:
                    success: true
                    message: example_value
                    errors:
                    - row: 10
                      column: example_value
                      message: example_value
        '400':
          description: File could not be read or is malformed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Validateevents400Example:
                  summary: Default validateEvents 400 response
                  x-microcks-default: true
                  value:
                    errorCode: example_value
                    errorDescription: example_value
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Validateevents401Example:
                  summary: Default validateEvents 401 response
                  x-microcks-default: true
                  value:
                    errorCode: example_value
                    errorDescription: example_value
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth 2.0 access token from Adobe IMS
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Adobe Developer Console API key
  parameters:
    visitorGroupId:
      name: x-adobe-vgid
      in: header
      required: true
      description: >-
        The visitor group ID. All files for the same visitors must share the
        same visitor group ID to ensure correct visitor stitching.
      schema:
        type: string
  schemas:
    UploadResponse:
      type: object
      description: Response after a successful file upload
      properties:
        uploadTrackingCode:
          type: string
          description: Unique tracking code for this upload
          example: example_value
        fileSize:
          type: integer
          description: Size of the uploaded file in bytes
          example: 10
        receivedTime:
          type: string
          format: date-time
          description: Timestamp when the file was received
          example: '2026-01-15T10:30:00Z'
    ValidationResponse:
      type: object
      description: Result of a file validation request
      properties:
        success:
          type: boolean
          description: Whether the file passed all validation checks
          example: true
        message:
          type: string
          description: Summary validation message
          example: example_value
        errors:
          type: array
          description: List of validation errors found in the file
          items:
            $ref: '#/components/schemas/ValidationError'
          example: []
    ValidationError:
      type: object
      description: A single validation error from file validation
      properties:
        row:
          type: integer
          description: Row number where the error occurred (1-indexed)
          example: 10
        column:
          type: string
          description: Column name where the error occurred
          example: example_value
        message:
          type: string
          description: Description of the validation error
          example: example_value
    ErrorResponse:
      type: object
      description: Error response from the API
      properties:
        errorCode:
          type: string
          description: Machine-readable error code
          example: example_value
        errorDescription:
          type: string
          description: Human-readable error message
          example: example_value