Get Journeys
Returns the most common page navigation paths (user journeys) within sessions. Useful for understanding how users navigate through your site.
GET /api/sites/:site/journeysReturns the most common page navigation paths (user journeys) within sessions. Useful for understanding how users navigate through your site.
Path Parameters
Prop
Type
Query Parameters
Accepts all Common Parameters plus the following:
Prop
Type
Response
Prop
Type
Journey Object
Prop
Type
curl -X GET "https://app.rybbit.io/api/sites/1/journeys?steps=4&limit=20&start_date=2024-01-01&end_date=2024-01-31" \
-H "Authorization: Bearer your_api_key_here"const response = await fetch(
'https://app.rybbit.io/api/sites/1/journeys?steps=4&limit=20&start_date=2024-01-01&end_date=2024-01-31',
{
headers: {
'Authorization': 'Bearer your_api_key_here'
}
}
);
const data = await response.json();import requests
response = requests.get(
'https://app.rybbit.io/api/sites/1/journeys23',
params={
'steps': 4,
'limit': 20,
'start_date': '2024-01-01',
'end_date': '2024-01-31'
},
headers={
'Authorization': 'Bearer your_api_key_here'
}
)
data = response.json()$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://app.rybbit.io/api/sites/1/journeys?steps=4&limit=20&start_date=2024-01-01&end_date=2024-01-31');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer your_api_key_here'
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);require 'net/http'
require 'json'
uri = URI('https://app.rybbit.io/api/sites/1/journeys?steps=4&limit=20&start_date=2024-01-01&end_date=2024-01-31')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer your_api_key_here'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)req, _ := http.NewRequest("GET", "https://app.rybbit.io/api/sites/1/journeys?steps=4&limit=20&start_date=2024-01-01&end_date=2024-01-31", nil)
req.Header.Set("Authorization", "Bearer your_api_key_here")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var data map[string]interface{}
json.NewDecoder(resp.Body).Decode(&data)let client = reqwest::Client::new();
let res = client
.get("https://app.rybbit.io/api/sites/1/journeys?steps=4&limit=20&start_date=2024-01-01&end_date=2024-01-31")
.header("Authorization", "Bearer your_api_key_here")
.send()
.await?;
let data: serde_json::Value = res.json().await?;HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://app.rybbit.io/api/sites/1/journeys?steps=4&limit=20&start_date=2024-01-01&end_date=2024-01-31"))
.header("Authorization", "Bearer your_api_key_here")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer your_api_key_here");
var response = await client.GetAsync("https://app.rybbit.io/api/sites/1/journeys?steps=4&limit=20&start_date=2024-01-01&end_date=2024-01-31");
var data = await response.Content.ReadAsStringAsync();{
"journeys": [
{
"path": ["/", "/pricing", "/signup"],
"count": 1250,
"percentage": 8.12
},
{
"path": ["/", "/features", "/pricing", "/signup"],
"count": 890,
"percentage": 5.78
},
{
"path": ["/blog/getting-started", "/", "/pricing"],
"count": 650,
"percentage": 4.22
},
{
"path": ["/", "/docs", "/docs/quickstart"],
"count": 580,
"percentage": 3.77
},
{
"path": ["/", "/about", "/contact"],
"count": 420,
"percentage": 2.73
}
]
}Filtering by Step
You can filter journeys that include specific pages at specific steps:
curl -X GET "https://app.rybbit.io/api/sites/1/journeys?steps=3&stepFilters=%7B%220%22%3A%22%2F%22%7D" \
-H "Authorization: Bearer your_api_key_here"const stepFilters = JSON.stringify({ "0": "/" });
const response = await fetch(
`https://app.rybbit.io/api/sites/1/journeys?steps=3&stepFilters=${encodeURIComponent(stepFilters)}`,
{
headers: {
'Authorization': 'Bearer your_api_key_here'
}
}
);import requests
response = requests.get(
'https://app.rybbit.io/api/sites/1/journeys?steps=3&stepFilters=%7B%220%22%3A%22%2F%22%7D',
headers={
'Authorization': 'Bearer your_api_key_here'
}
)
data = response.json()$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://app.rybbit.io/api/sites/1/journeys?steps=3&stepFilters=%7B%220%22%3A%22%2F%22%7D');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer your_api_key_here'
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);require 'net/http'
require 'json'
uri = URI('https://app.rybbit.io/api/sites/1/journeys?steps=3&stepFilters=%7B%220%22%3A%22%2F%22%7D')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer your_api_key_here'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)req, _ := http.NewRequest("GET", "https://app.rybbit.io/api/sites/1/journeys?steps=3&stepFilters=%7B%220%22%3A%22%2F%22%7D", nil)
req.Header.Set("Authorization", "Bearer your_api_key_here")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var data map[string]interface{}
json.NewDecoder(resp.Body).Decode(&data)let client = reqwest::Client::new();
let res = client
.get("https://app.rybbit.io/api/sites/1/journeys?steps=3&stepFilters=%7B%220%22%3A%22%2F%22%7D")
.header("Authorization", "Bearer your_api_key_here")
.send()
.await?;
let data: serde_json::Value = res.json().await?;HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://app.rybbit.io/api/sites/1/journeys?steps=3&stepFilters=%7B%220%22%3A%22%2F%22%7D"))
.header("Authorization", "Bearer your_api_key_here")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer your_api_key_here");
var response = await client.GetAsync("https://app.rybbit.io/api/sites/1/journeys?steps=3&stepFilters=%7B%220%22%3A%22%2F%22%7D");
var data = await response.Content.ReadAsStringAsync();{
"journeys": [
{
"path": ["/", "/pricing", "/signup"],
"count": 1250,
"percentage": 12.5
},
{
"path": ["/", "/features", "/pricing"],
"count": 890,
"percentage": 8.9
},
{
"path": ["/", "/docs", "/docs/quickstart"],
"count": 580,
"percentage": 5.8
}
]
}Get RetentionGET
Returns cohort-based retention analysis data. Users are grouped into cohorts based on their first visit, and retention is tracked over subsequent time periods.
Get My OrganizationsGET
Returns all organizations the authenticated user is a member of, including all members for each organization. Excludes subscription and billing information. Supports both session cookies and API key (Bearer token) authentication.