Skip to main content
POST
/
v1
/
taxonomies
/
{taxonomy_id}
/
analytics
/
paths
Analyze multi-step transition paths
curl --request POST \
  --url https://api.mixpeek.com/v1/taxonomies/{taxonomy_id}/analytics/paths \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "collection_id": "<string>",
  "taxonomy_id": "<string>",
  "from_step": "<string>",
  "to_step": "<string>",
  "max_path_length": 10,
  "min_support": 5,
  "max_window_days": 123,
  "filters": {}
}
'
import requests

url = "https://api.mixpeek.com/v1/taxonomies/{taxonomy_id}/analytics/paths"

payload = {
"collection_id": "<string>",
"taxonomy_id": "<string>",
"from_step": "<string>",
"to_step": "<string>",
"max_path_length": 10,
"min_support": 5,
"max_window_days": 123,
"filters": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
collection_id: '<string>',
taxonomy_id: '<string>',
from_step: '<string>',
to_step: '<string>',
max_path_length: 10,
min_support: 5,
max_window_days: 123,
filters: {}
})
};

fetch('https://api.mixpeek.com/v1/taxonomies/{taxonomy_id}/analytics/paths', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mixpeek.com/v1/taxonomies/{taxonomy_id}/analytics/paths",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'collection_id' => '<string>',
'taxonomy_id' => '<string>',
'from_step' => '<string>',
'to_step' => '<string>',
'max_path_length' => 10,
'min_support' => 5,
'max_window_days' => 123,
'filters' => [

]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.mixpeek.com/v1/taxonomies/{taxonomy_id}/analytics/paths"

payload := strings.NewReader("{\n \"collection_id\": \"<string>\",\n \"taxonomy_id\": \"<string>\",\n \"from_step\": \"<string>\",\n \"to_step\": \"<string>\",\n \"max_path_length\": 10,\n \"min_support\": 5,\n \"max_window_days\": 123,\n \"filters\": {}\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.mixpeek.com/v1/taxonomies/{taxonomy_id}/analytics/paths")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"collection_id\": \"<string>\",\n \"taxonomy_id\": \"<string>\",\n \"from_step\": \"<string>\",\n \"to_step\": \"<string>\",\n \"max_path_length\": 10,\n \"min_support\": 5,\n \"max_window_days\": 123,\n \"filters\": {}\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.mixpeek.com/v1/taxonomies/{taxonomy_id}/analytics/paths")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"collection_id\": \"<string>\",\n \"taxonomy_id\": \"<string>\",\n \"from_step\": \"<string>\",\n \"to_step\": \"<string>\",\n \"max_path_length\": 10,\n \"min_support\": 5,\n \"max_window_days\": 123,\n \"filters\": {}\n}"

response = http.request(request)
puts response.read_body
{
  "from_step": "<string>",
  "to_step": "<string>",
  "total_sequences": 123,
  "completed_sequences": 123,
  "completion_rate": 0.5,
  "paths": [
    {
      "path": [
        "<string>"
      ],
      "count": 1,
      "percentage": 50,
      "avg_duration_sec": 123
    }
  ]
}
{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}
{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}
{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}
{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}
{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}
{
"status": 123,
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"details": {}
},
"success": false
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

taxonomy_id
string
required

Body

application/json

API request model for multi-step path analysis.

Discovers the most common sequences of intermediate steps documents take when progressing from from_step to to_step.

Unlike the transitions endpoint which only analyzes direct A→B progressions, this endpoint reveals the actual paths taken (e.g., A → X → Y → B).

Example: json { "collection_id": "col_emails", "taxonomy_id": "tax_sales_stages", "from_step": "inquiry", "to_step": "closed_won", "max_path_length": 10, "min_support": 5 }

Response includes: - Most common paths sorted by frequency - Count and percentage for each path - Average duration per path

collection_id
string
required

Collection to analyze

taxonomy_id
string
required

Taxonomy ID

from_step
string
required

Starting step

to_step
string
required

Ending step

max_path_length
integer
default:10

Maximum number of steps in a path

Required range: 2 <= x <= 20
min_support
integer
default:5

Minimum sequences required to include a path

Required range: x >= 1
max_window_days
integer | null

Maximum duration for path completion (in days)

filters
Filters · object | null

Optional event filters

Response

Successful Response

API response model for multi-step path analysis.

Contains discovered transition paths with frequency and duration statistics.

Example Response: json { "from_step": "inquiry", "to_step": "closed_won", "total_sequences": 1000, "completed_sequences": 350, "completion_rate": 0.35, "paths": [ { "path": ["inquiry", "followup", "proposal", "closed_won"], "count": 120, "percentage": 34.3, "avg_duration_sec": 604800.0 }, { "path": ["inquiry", "proposal", "closed_won"], "count": 90, "percentage": 25.7, "avg_duration_sec": 432000.0 }, { "path": ["inquiry", "closed_won"], "count": 70, "percentage": 20.0, "avg_duration_sec": 172800.0 } ] }

from_step
string
required
to_step
string
required
total_sequences
integer
required

Total sequences that started at from_step

completed_sequences
integer
required

Number of sequences that reached to_step

completion_rate
number
required

Percentage that completed the path

Required range: 0 <= x <= 1
paths
TransitionPath · object[]
required

List of paths sorted by frequency (most common first)

Maximum array length: 100