# Paths

The touch sequences visitors take before they convert.

Source: https://sourceloop.ai/help/api/paths/

---

| Endpoint | Method | Path | Permission |
| --- | --- | --- | --- |
| Get paths | GET | `/v1/paths` | `metrics:read` |

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

## Get paths

`GET /v1/paths`

The touch sequences that lead to outcomes

Requires scope: `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.

### Query parameters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `website` | string | no | Website domain, e.g. acme.com. Required only when the key covers more than one. |
| `period` | string | no | Plain-language period: "last 30 days", "yesterday", "July 2026", or "2026-07-01..2026-07-31". Ignored when from/to are given. |
| `step` | string | no | What each step is labelled with. Default channel. |
| `stages` | string | no | Paths to CRM milestones instead of tracked conversions. |
| `types` | string | no |  |
| `events` | string | no |  |
| `max_touches` | integer | no |  |
| `limit` | integer | no |  |

### 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.

### Example (cURL)

```bash
curl -s -X GET "https://app.sourceloop.ai/api/v1/paths?website=acme.com&period=last%2030%20days" \
  -H "Authorization: Bearer $SOURCELOOP_API_KEY"
```

### Example (Node)

```javascript
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();
```

### Example (Python)

```python
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()
```
