> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Sync event sources

> Inbound ADCP sync_event_sources endpoint. Buyers call this to sync their event source configurations to the advertiser.



## OpenAPI

````yaml /v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/event-sources/sync
openapi: 3.0.0
info:
  title: Scope3 Buyer API
  version: 2.0.0
  description: |-
    REST API for advertisers to manage advertisers, campaigns, and reporting.

    ## Authentication

    All endpoints require a Bearer token in the Authorization header:
    ```
    Authorization: Bearer your-api-key
    ```

    ## Base URL

    `https://api.interchange.io/api/v2/buyer`

    ## For AI Agents

    AI agents can use the MCP endpoint at `/mcp/v2/buyer` with three tools:
    - `initialize`: Start an MCP session
    - `api_call`: Make REST API calls
    - `ask_about_capability`: Learn about API features
servers:
  - url: https://api.interchange.io/api/v2/buyer
    description: Production server
security: []
tags:
  - name: Signup
    description: Request reviewed access to Interchange
  - name: Account
    description: Account management, service tokens, and preferences
  - name: Asks
    description: >-
      What you are waiting on Scope3 for — support, product, and supply asks in
      one list
  - name: Advertisers
    description: Manage advertisers
  - name: Product Discovery
    description: Discover and select products
  - name: Campaigns
    description: Manage advertising campaigns
  - name: Creatives
    description: Build, manage, and sync campaign creatives via AdCP Creative Protocol
  - name: Reporting
    description: Access performance metrics
  - name: Event Sources
    description: >-
      Manage event source configurations and log conversion/marketing events for
      attribution
  - name: Property Lists
    description: Validate property lists against AAO registry
  - name: Sales Agents
    description: View and connect sales agents
  - name: Measurement
    description: Measurement sources, records, context, and freshness
  - name: Syndication
    description: Syndicate resources to ADCP agents
  - name: Tasks
    description: Track async operation status
  - name: Buyer Billing
    description: >-
      Consolidated invoicing for buyers — invoices and pending invoice items
      issued by Scope3 across the buyer customer.
  - name: MCP
    description: Model Context Protocol endpoints for AI agents
paths:
  /advertisers/{advertiserId}/event-sources/sync:
    post:
      tags:
        - Event Sources
      summary: Sync event sources
      description: >-
        Inbound ADCP sync_event_sources endpoint. Buyers call this to sync their
        event source configurations to the advertiser.
      operationId: syncEventSources
      parameters:
        - in: path
          name: advertiserId
          schema:
            description: Unique identifier for the advertiser
            example: '12345'
            type: string
            minLength: 1
          required: true
          description: Unique identifier for the advertiser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncEventSourcesRequest'
      responses:
        '200':
          description: Sync event sources
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncEventSourcesResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    SyncEventSourcesRequest:
      description: Request body for syncing event sources (ADCP spec)
      type: object
      properties:
        account:
          description: Advertiser account to sync event sources onto
          type: object
          properties:
            account_id:
              description: Advertiser ID to attach catalogs to
              example: '12345'
              type: string
              minLength: 1
          required:
            - account_id
        event_sources:
          description: Event sources to sync (up to 50 per call)
          minItems: 1
          maxItems: 50
          type: array
          items:
            $ref: '#/components/schemas/SyncEventSourceObject'
        delete_missing:
          description: Archive buyer-managed event sources not included in this request
          default: false
          type: boolean
      required:
        - account
        - event_sources
    SyncEventSourcesResponse:
      description: Response from sync_event_sources
      type: object
      properties:
        event_sources:
          description: Per-source sync results
          type: array
          items:
            $ref: '#/components/schemas/EventSourceSyncResult'
      required:
        - event_sources
      additionalProperties: false
    ErrorResponse:
      description: Standard error response
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      additionalProperties: false
    SyncEventSourceObject:
      description: A single event source to sync
      type: object
      properties:
        event_source_id:
          description: Buyer-assigned event source identifier
          example: website_pixel
          type: string
          minLength: 1
          maxLength: 255
        name:
          description: Human-readable label for this event source
          example: Website Pixel
          type: string
          minLength: 1
          maxLength: 255
        event_types:
          description: >-
            Event types this source handles. When omitted, accepts all event
            types.
          example:
            - purchase
            - add_to_cart
          minItems: 1
          type: array
          items:
            description: IAB ECAPI event type to optimize for
            type: string
            enum:
              - page_view
              - view_content
              - select_content
              - select_item
              - search
              - share
              - add_to_cart
              - remove_from_cart
              - viewed_cart
              - add_to_wishlist
              - initiate_checkout
              - add_payment_info
              - purchase
              - refund
              - lead
              - qualify_lead
              - close_convert_lead
              - disqualify_lead
              - complete_registration
              - subscribe
              - follow
              - content_view
              - watch_milestone
              - start_trial
              - app_install
              - app_launch
              - contact
              - schedule
              - donate
              - submit_application
              - custom
        allowed_domains:
          description: Domains authorized to send events for this source
          example:
            - shop.example.com
            - checkout.example.com
          type: array
          items:
            type: string
            minLength: 1
        integration_platform:
          description: >-
            Scope3 extension: source system or integration platform, such as
            Hightouch, CRM, or server API
          example: Hightouch
          type: string
          minLength: 1
          maxLength: 128
        mapping:
          description: >-
            Scope3 extension: field mapping contract for producing log_event
            payloads
          allOf:
            - $ref: '#/components/schemas/EventSourceMappingInput'
        test_event_code:
          description: >-
            Scope3 extension: default test event code to use when validating
            this source
          type: string
          maxLength: 256
      required:
        - event_source_id
    EventSourceSyncResult:
      description: Per-source result from sync_event_sources
      type: object
      properties:
        event_source_id:
          description: Event source identifier
          type: string
        action:
          description: What happened to this event source during sync
          type: string
          enum:
            - created
            - updated
            - unchanged
            - failed
            - deleted
        error:
          description: Error message when action is "failed"
          type: string
        setup:
          description: >-
            AdCP setup object describing how to begin sending events. Present
            for live sources (created, updated, unchanged); omitted for failed
            or deleted results.
          allOf:
            - $ref: '#/components/schemas/EventSourceSetup'
      required:
        - event_source_id
        - action
      additionalProperties: false
    ApiError:
      description: Structured error object
      type: object
      properties:
        code:
          description: Machine-readable error code
          type: string
        message:
          description: Human-readable error message
          type: string
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
    EventSourceMappingInput:
      description: 'Scope3 extension: field mapping contract for a buyer event source'
      type: object
      properties:
        eventIdField:
          description: Source field mapped to log_event.events[].event_id
          example: order_id
          type: string
          maxLength: 256
        eventTypeField:
          description: Source field or expression mapped to event_type
          example: event_name
          type: string
          maxLength: 256
        eventTimeField:
          description: Source timestamp field mapped to event_time
          example: occurred_at
          type: string
          maxLength: 256
        userMatchFields:
          description: >-
            Source fields available for user_match, such as click IDs or hashed
            identifiers
          example:
            - hashed_email
            - sc3clid
          type: array
          items:
            type: string
            maxLength: 256
        valueField:
          description: Source field mapped to custom_data.value
          example: revenue
          type: string
          maxLength: 256
        currencyField:
          description: Source field mapped to custom_data.currency
          example: currency
          type: string
          maxLength: 256
        orderIdField:
          description: Source field mapped to custom_data.order_id
          example: order_id
          type: string
          maxLength: 256
        contentIdsField:
          description: Source field mapped to custom_data.content_ids
          example: sku_ids
          type: string
          maxLength: 256
        consentField:
          description: Source field carrying consent or privacy state
          example: marketing_consent
          type: string
          maxLength: 256
        dedupeStrategy:
          description: How stable event IDs are generated and deduplicated
          type: string
          maxLength: 1024
        notes:
          description: Additional integration notes
          type: string
          maxLength: 2048
      additionalProperties: false
    EventSourceSetup:
      description: >-
        AdCP setup object: install/setup guidance so events flow after a source
        is registered
      type: object
      properties:
        snippet_type:
          description: >-
            Install format. "server_only" means events are sent server-to-server
            with no client-side tag to install.
          example: server_only
          type: string
          enum:
            - javascript
            - html
            - pixel_url
            - server_only
        snippet:
          description: >-
            Client-side tag to install. Omitted when snippet_type is
            "server_only".
          type: string
        instructions:
          description: >-
            How to start sending events for this source, including where events
            are ingested and a link to the setup guide.
          type: string
      required:
        - snippet_type
        - instructions
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````