Get the sequence's structure
curl --request GET \
--url https://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure', 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.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"structure": {
"id": "c-128",
"name": "Email + LinkedIn, 5 steps",
"channels": [
"email"
],
"scope": "library"
},
"isChangeAllowed": true
}{
"title": "Bad Request",
"status": 400,
"detail": "Sequence '4821' is not an AI SDR sequence.",
"code": "sequenceStructure.invalidParameter"
}{
"title": "Unauthorized",
"status": 401,
"detail": "Authentication credentials are missing or invalid."
}{
"title": "Forbidden",
"status": 403,
"detail": "AI SDR feature is not available for your team.",
"code": "sequenceStructure.forbidden"
}{
"title": "Not Found",
"status": 404,
"detail": "Sequence '4821' not found.",
"code": "sequenceStructure.notFound"
}{
"title": "Bad Gateway",
"status": 502,
"detail": "Upstream service failure: Service unavailable.",
"code": "sequenceStructure.upstreamFailure"
}Sequences
Get the sequence's structure
Coming soon. This endpoint will be available by late October 2026.
ai-sdr:read scope (or a broader one that includes it).
See which sequence structure the sequence’s steps were built from, and whether the structure can still be changed.
GET
/
v3
/
sequences
/
ai-sdr
/
{sequence_id}
/
structure
Get the sequence's structure
curl --request GET \
--url https://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure', 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.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reply.io/v3/sequences/ai-sdr/{sequence_id}/structure")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"structure": {
"id": "c-128",
"name": "Email + LinkedIn, 5 steps",
"channels": [
"email"
],
"scope": "library"
},
"isChangeAllowed": true
}{
"title": "Bad Request",
"status": 400,
"detail": "Sequence '4821' is not an AI SDR sequence.",
"code": "sequenceStructure.invalidParameter"
}{
"title": "Unauthorized",
"status": 401,
"detail": "Authentication credentials are missing or invalid."
}{
"title": "Forbidden",
"status": 403,
"detail": "AI SDR feature is not available for your team.",
"code": "sequenceStructure.forbidden"
}{
"title": "Not Found",
"status": 404,
"detail": "Sequence '4821' not found.",
"code": "sequenceStructure.notFound"
}{
"title": "Bad Gateway",
"status": 502,
"detail": "Upstream service failure: Service unavailable.",
"code": "sequenceStructure.upstreamFailure"
}Authorizations
Authenticate every request with a Bearer token. Pass your Reply API key in the
Authorization header:
Authorization: Bearer <your-api-key>
Get your API key from the Reply dashboard: Settings → API Key.
Path Parameters
Sequence id
Required range:
x >= 1Response
Selected sequence structure
The sequence structure an AI SDR sequence's steps were built from
Structure the sequence's steps were built from. null when no structure is selected, for example after the steps were changed by hand.
Show child attributes
Show child attributes
false once the sequence has sent messages. The structure can then no longer be changed.