curl --request GET \
--url https://client-api.salesfinity.co/v1/sequences \
--header 'x-api-key: <api-key>'import requests
url = "https://client-api.salesfinity.co/v1/sequences"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://client-api.salesfinity.co/v1/sequences', 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://client-api.salesfinity.co/v1/sequences",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://client-api.salesfinity.co/v1/sequences"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://client-api.salesfinity.co/v1/sequences")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.salesfinity.co/v1/sequences")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "4821",
"name": "Q3 Enterprise Outbound",
"last_used_at": "2026-09-30T18:42:10.000Z",
"first_used_at": "2026-07-01T14:05:33.000Z",
"total_calls": 1250
},
{
"id": "Inbound Demo Follow-up",
"name": "Inbound Demo Follow-up",
"last_used_at": "2026-09-29T16:20:00.000Z",
"first_used_at": "2026-08-12T15:00:41.000Z",
"total_calls": 430
}
],
"pagination": {
"total": 2,
"page": 1,
"limit": 100
}
}{
"message": [
"sort must be one of the following values: -last_used_at, last_used_at, -total_calls, total_calls, -name, name"
],
"error": "Bad Request",
"statusCode": 400,
"request_id": "0f6d3c52-9f3e-4c1a-a4b8-2b1f7e5d9c10"
}{
"message": "Forbidden resource",
"error": "Forbidden",
"statusCode": 403,
"request_id": "0f6d3c52-9f3e-4c1a-a4b8-2b1f7e5d9c10"
}{
"message": "Rate limit of 300 requests per minute exceeded. Retry in 12s.",
"error": "Too Many Requests",
"statusCode": 429,
"request_id": "0f6d3c52-9f3e-4c1a-a4b8-2b1f7e5d9c10"
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500,
"request_id": "0f6d3c52-9f3e-4c1a-a4b8-2b1f7e5d9c10"
}List CRM sequences
Returns the sales engagement and CRM sequences seen on the team’s call logs, with call counts. Read-only. Each one comes from the platform the contact was imported from, and total_calls counts the calls made to contacts in it. These are not Salesfinity Sequencer sequences; for those, use the Sequencer API.
A call counts toward a sequence when its contact carried that sequence at the time the call was logged. Outreach, Salesloft, HubSpot, Apollo, Gong and Salesforce imports, among others, record it. Pass an id to filters[sequences][] on List call logs to get the calls.
Sorted by -last_used_at unless you set sort; paginated with page and limit. Rate limit: the heavy-reads bucket, 120 requests per minute per team (see Rate limits).
curl --request GET \
--url https://client-api.salesfinity.co/v1/sequences \
--header 'x-api-key: <api-key>'import requests
url = "https://client-api.salesfinity.co/v1/sequences"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://client-api.salesfinity.co/v1/sequences', 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://client-api.salesfinity.co/v1/sequences",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://client-api.salesfinity.co/v1/sequences"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://client-api.salesfinity.co/v1/sequences")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://client-api.salesfinity.co/v1/sequences")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "4821",
"name": "Q3 Enterprise Outbound",
"last_used_at": "2026-09-30T18:42:10.000Z",
"first_used_at": "2026-07-01T14:05:33.000Z",
"total_calls": 1250
},
{
"id": "Inbound Demo Follow-up",
"name": "Inbound Demo Follow-up",
"last_used_at": "2026-09-29T16:20:00.000Z",
"first_used_at": "2026-08-12T15:00:41.000Z",
"total_calls": 430
}
],
"pagination": {
"total": 2,
"page": 1,
"limit": 100
}
}{
"message": [
"sort must be one of the following values: -last_used_at, last_used_at, -total_calls, total_calls, -name, name"
],
"error": "Bad Request",
"statusCode": 400,
"request_id": "0f6d3c52-9f3e-4c1a-a4b8-2b1f7e5d9c10"
}{
"message": "Forbidden resource",
"error": "Forbidden",
"statusCode": 403,
"request_id": "0f6d3c52-9f3e-4c1a-a4b8-2b1f7e5d9c10"
}{
"message": "Rate limit of 300 requests per minute exceeded. Retry in 12s.",
"error": "Too Many Requests",
"statusCode": 429,
"request_id": "0f6d3c52-9f3e-4c1a-a4b8-2b1f7e5d9c10"
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500,
"request_id": "0f6d3c52-9f3e-4c1a-a4b8-2b1f7e5d9c10"
}/v2/sequencer/sequences.Examples
# Most-called sequences first
curl 'https://client-api.salesfinity.co/v1/sequences?sort=-total_calls&limit=20' \
--header 'x-api-key: YOUR_API_KEY'
# Sequences whose name contains "enterprise", in any case
curl 'https://client-api.salesfinity.co/v1/sequences?search=enterprise' \
--header 'x-api-key: YOUR_API_KEY'
Get the calls in a sequence
Pass a sequence’sid to List call logs:
curl --globoff 'https://client-api.salesfinity.co/v1/call-log?filters[sequences][]=4821' \
--header 'x-api-key: YOUR_API_KEY'
id and name are the same.Authorizations
Team-scoped API key generated in the Salesfinity dashboard under Settings → Connections → API & Webhooks. A missing or invalid key returns HTTP 403.
Query Parameters
Case-insensitive match on the sequence name. The value is read as a regular expression, so escape characters such as ., ( and + to match them literally.
Sort order. Prefix - for descending. Default: -last_used_at.
-last_used_at, last_used_at, -total_calls, total_calls, -name, name Results per page. Default 100. Above 100 is treated as 100.
1 <= x <= 100Page number, 1-based.
x >= 1