curl --request POST \
--url https://pub-api.conversion.ai/api/v2/exports/touchpoints \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"occurredAt": {
"start": "2026-01-01T00:00:00Z"
},
"limit": 1000
}
'{
"data": {
"touchpoints": [
{
"touchpointId": "ws:3f2b6c1e-8d4a-4f7e-9a1b-2c3d4e5f6a7b:9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"contactId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"touchType": "WEB_SESSION",
"occurredAt": "2023-11-07T05:31:56Z",
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"formId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"landingPageUrl": "<string>",
"referrer": "<string>",
"keyword": "<string>",
"utmSource": "<string>",
"utmMedium": "<string>",
"utmCampaign": "<string>",
"utmTerm": "<string>",
"utmContent": "<string>",
"adId": "<string>",
"adGroupId": "<string>",
"adCampaignId": "<string>",
"adAccountId": "<string>",
"adProvider": "GOOGLE",
"campaignId": "<string>",
"channelId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"subchannelId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
},
"pagination": {
"nextCursor": "<string>"
}
}Export Touchpoints
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.
curl --request POST \
--url https://pub-api.conversion.ai/api/v2/exports/touchpoints \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"occurredAt": {
"start": "2026-01-01T00:00:00Z"
},
"limit": 1000
}
'{
"data": {
"touchpoints": [
{
"touchpointId": "ws:3f2b6c1e-8d4a-4f7e-9a1b-2c3d4e5f6a7b:9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"contactId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"touchType": "WEB_SESSION",
"occurredAt": "2023-11-07T05:31:56Z",
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"formId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"landingPageUrl": "<string>",
"referrer": "<string>",
"keyword": "<string>",
"utmSource": "<string>",
"utmMedium": "<string>",
"utmCampaign": "<string>",
"utmTerm": "<string>",
"utmContent": "<string>",
"adId": "<string>",
"adGroupId": "<string>",
"adCampaignId": "<string>",
"adAccountId": "<string>",
"adProvider": "GOOGLE",
"campaignId": "<string>",
"channelId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"subchannelId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
},
"pagination": {
"nextCursor": "<string>"
}
}Authorizations
Your Conversion API key. Found in Settings > Integrations in the dashboard. Format: sk_live_<key_id>_<secret>.
Body
The half-open range to export. Required on the first call and omitted with cursor.
Show child attributes
Show child attributes
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.
"eyJ2IjoxLCJmIjp7fSwiayI6ImFiYyJ9"
The maximum number of rows per page. Defaults to 1000. Values are clamped to [1, 5000].
1 <= x <= 5000Was this page helpful?