---
title: "Export Touchpoints"
method: POST
path: "/v2/exports/touchpoints"
---

# Export Touchpoints

`POST /v2/exports/touchpoints`

## Request

- Base URL: `https://pub-api.conversion.ai/api`
- URL: `https://pub-api.conversion.ai/api/v2/exports/touchpoints`
- Auth: one of:
  - API key in header `X-API-Key`
  - API key in query parameter `api_key`

Bulk, incremental export of Mosaic touchpoints, computed under your attribution settings and ordered by when they occurred. Requires Mosaic in addition to export access.

Send `occurredAt` on the first call, then pass `pagination.nextCursor` back as `cursor` until it is `null` or stops changing. Without `occurredAt.end`, the export stops a day before now so sessions and email clicks settle first. Persist the last cursor between syncs to resume.

> **Request access.** This endpoint is not enabled by default, contact the Conversion team to request access. Calls from accounts without it return `403 export_not_enabled`.

## Request body

- object
  - `occurredAt` object: The half-open range to export. Required on the first call and omitted with `cursor`.
    - `start` string, date-time, required: Touchpoints that occurred at or after this time.
    - `end` string, date-time: Touchpoints that occurred before this time. Must be after `start`. Omit it to keep a stored cursor advancing as new touchpoints settle.
  - `cursor` string: The opaque cursor returned as `pagination.nextCursor` by a previous call. Omit it on the first page. Send it without filters, because the cursor carries them; sending both returns `invalid_filter`.
  - `limit` integer: The maximum number of rows per page. Defaults to 1000. Values are clamped to [1, 5000].

## Response `200`

A page of touchpoints retrieved successfully.

- object
  - `data` object
    - `touchpoints` object[], required: The current page of touchpoints.
      - `touchpointId` string, required: The touchpoint's ID. Stable across exports, so use it as the primary key.
      - `contactId` string, uuid, required: The contact (joins `contacts.id`).
      - `touchType` 'WEB_SESSION' | 'EMAIL_CLICK' | 'CAMPAIGN_SUCCESS' | 'LEAD_GEN_FORM_SUBMISSION', required: The kind of touch.
      - `occurredAt` string, date-time, required: When the touch happened.
      - `sessionId` string, uuid, nullable: The web session, on web touches and email touches that landed one.
      - `formId` string, uuid, nullable: The form submitted in the session or on the ad platform.
      - `landingPageUrl` string, nullable: The first page of the session.
      - `referrer` string, nullable: The referring URL.
      - `keyword` string, nullable: The paid search keyword.
      - `utmSource` string, nullable: `utm_source`. Empty on `CAMPAIGN_SUCCESS`.
      - `utmMedium` string, nullable: `utm_medium`. Empty on `CAMPAIGN_SUCCESS`.
      - `utmCampaign` string, nullable: `utm_campaign`. Empty on `CAMPAIGN_SUCCESS`.
      - `utmTerm` string, nullable: `utm_term`. Empty on `CAMPAIGN_SUCCESS`.
      - `utmContent` string, nullable: `utm_content`. Empty on `CAMPAIGN_SUCCESS`.
      - `adId` string, nullable: The ad platform's ad ID.
      - `adGroupId` string, nullable: The ad platform's ad group (or ad set) ID.
      - `adCampaignId` string, nullable: The ad platform's campaign ID.
      - `adAccountId` string, nullable: The ad platform's account ID.
      - `adProvider` 'GOOGLE' | 'META' | 'LINKEDIN' | 'null', nullable: The ad platform.
      - `campaignId` string, nullable: The campaign on `CAMPAIGN_SUCCESS`, the Conversion ad campaign on web and lead gen touches, and the blast on email touches.
      - `channelId` string, uuid, nullable: The Mosaic channel the touch was assigned to.
      - `subchannelId` string, uuid, nullable: The Mosaic subchannel, when the channel has one that matched.
  - `pagination` object
    - `nextCursor` string, nullable, required: Opaque cursor for the next page, or `null` when there are no more results. A page can be short or empty while the cursor is non-null.

## Other responses

- `400`: The request was malformed or contained invalid data.
- `401`: Authentication failed.
- `403`: The export API, or Mosaic, is not enabled for this account.
- `500`: An unexpected server error occurred.

---

[API](https://skmtc.dev/conversion/apis/conversion-api.md) - [All operations](https://skmtc.dev/conversion/apis/conversion-api/llms.txt) - [OpenAPI document](https://skmtc.dev/conversion/apis/conversion-api/revisions/8422f815402a?raw)
