Skip to content New SourceLoop MCP: chat with your attribution data in Claude, ChatGPT & Cursor
SourceLoop
API reference

Paths

The touch sequences visitors take before they convert. REST endpoints, parameters, and response schemas for the SourceLoop attribution API.

Endpoint Method Path Permission
Get paths The touch sequences that lead to outcomes GET /v1/paths metrics:read

Base URL https://app.sourceloop.ai/api/v1

Get paths

The touch sequences that lead to outcomes

GET /v1/paths

Requires metrics:read

Which ordered SEQUENCES of touchpoints end in an outcome, and what each is worth. This is what a per-channel breakdown cannot show: the channels that only work together.

Journeys longer than `max_touches` keep their first N steps and carry a trailing "..." , so two long journeys that begin the same way group together instead of each becoming a row of one.

A path of ["Unattributed"] is an outcome with no journey at all, which is a real outcome rather than missing data.

curl -s -X GET "https://app.sourceloop.ai/api/v1/paths?website=acme.com&period=last%2030%20days" \
  -H "Authorization: Bearer $SOURCELOOP_API_KEY"
const res = await fetch(
  "https://app.sourceloop.ai/api/v1/paths?website=acme.com&period=last%2030%20days",
  {
    method: "GET",
    headers: {
      Authorization: `Bearer ${process.env.SOURCELOOP_API_KEY}`,
    },
  },
);

const data = await res.json();
import os, requests

res = requests.get(
    "https://app.sourceloop.ai/api/v1/paths?website=acme.com&period=last%2030%20days",
    headers={"Authorization": f"Bearer {os.environ['SOURCELOOP_API_KEY']}"},
)
data = res.json()

Query parameters

websitestring

Website domain, e.g. acme.com. Required only when the key covers more than one.

periodstring

Plain-language period: "last 30 days", "yesterday", "July 2026", or "2026-07-01..2026-07-31". Ignored when from/to are given.

Example last 30 days

stepstring

What each step is labelled with. Default channel.

Allowed values 4

  • channel
  • source
  • medium
  • campaign

stagesstring

Paths to CRM milestones instead of tracked conversions.

typesstring

eventsstring

max_touchesinteger

Default 5

limitinteger

Default 50

Responses

  • 200 One row per distinct path
  • 400 Something was wrong with the request or the credential.
  • 429 Too many requests for this workspace in the current minute. Wait Retry-After seconds and repeat the request unchanged.

Track every conversion to its true source

Capture and send full attribution data from every signup, lead, booking, and sale to your CRM and ad platforms, so you know exactly what's driving revenue.

Without SourceLoop

Untagged

Kayden Floyd

kayden@abc.com

  • SourceUnknown
  • MediumUnknown
  • CampaignUnknown
  • Landing pageUnknown
Journey
No touchpoints captured

With SourceLoop

Auto-tagged

Kayden Floyd

kayden@abc.com · Acme Co.

  • Channel Paid Social
  • CampaignFree_demo
  • Landing page/pricing
Journey
Synced to HubSpot Google Ads Meta