Archive Journey
curl --request DELETE \
--url https://api.tracklysms.com/api/v2/journeys/{journey_id} \
--header 'X-Api-Key: <api-key>'import requests
url = "https://api.tracklysms.com/api/v2/journeys/{journey_id}"
headers = {"X-Api-Key": "<api-key>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.tracklysms.com/api/v2/journeys/{journey_id}', 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.tracklysms.com/api/v2/journeys/{journey_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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://api.tracklysms.com/api/v2/journeys/{journey_id}"
req, _ := http.NewRequest("DELETE", 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.delete("https://api.tracklysms.com/api/v2/journeys/{journey_id}")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tracklysms.com/api/v2/journeys/{journey_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Journey archived successfully",
"journey": {
"id": "664f1a2b3c4d5e6f7a8b9c0d",
"name": "Welcome",
"priority": 0,
"triggerSummary": "No trigger",
"stepCount": 1,
"enrolledCount": 0,
"completedCount": 0,
"status": "archived",
"pauseReason": null,
"createdAt": "2026-09-21T10:00:00",
"updatedAt": "2026-09-21T10:00:00"
}
}
Journeys (v2)
Archive Journey
Archive an SMS welcome journey.
DELETE
/
v2
/
journeys
/
{journey_id}
Archive Journey
curl --request DELETE \
--url https://api.tracklysms.com/api/v2/journeys/{journey_id} \
--header 'X-Api-Key: <api-key>'import requests
url = "https://api.tracklysms.com/api/v2/journeys/{journey_id}"
headers = {"X-Api-Key": "<api-key>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://api.tracklysms.com/api/v2/journeys/{journey_id}', 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.tracklysms.com/api/v2/journeys/{journey_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
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://api.tracklysms.com/api/v2/journeys/{journey_id}"
req, _ := http.NewRequest("DELETE", 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.delete("https://api.tracklysms.com/api/v2/journeys/{journey_id}")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tracklysms.com/api/v2/journeys/{journey_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Journey archived successfully",
"journey": {
"id": "664f1a2b3c4d5e6f7a8b9c0d",
"name": "Welcome",
"priority": 0,
"triggerSummary": "No trigger",
"stepCount": 1,
"enrolledCount": 0,
"completedCount": 0,
"status": "archived",
"pauseReason": null,
"createdAt": "2026-09-21T10:00:00",
"updatedAt": "2026-09-21T10:00:00"
}
}
Sets the journey status to
Missing or foreign journeys return 404 with
archived and releases existing holds on active enrollments. An archived journey sends nothing, and its released enrollments exit permanently as they come due; a later status change does not restore them. The journey remains available to list and read. Restricted keys may archive journeys when their scopes permit the operation.
Declares the journeys.write scope. Authenticate with X-Api-Key; see Authentication.
Path Parameters
string
required
Journey ID returned by create or list. Use a valid journey ID; malformed IDs currently return an unexpected error.
Response
The compact journey object containsid, name, priority, triggerSummary, stepCount, enrolledCount, completedCount, status, pauseReason, createdAt, and updatedAt. It omits the account ID, trigger definition, and steps. Use Get Journey for the full definition.
{
"success": true,
"message": "Journey archived successfully",
"journey": {
"id": "664f1a2b3c4d5e6f7a8b9c0d",
"name": "Welcome",
"priority": 0,
"triggerSummary": "No trigger",
"stepCount": 1,
"enrolledCount": 0,
"completedCount": 0,
"status": "archived",
"pauseReason": null,
"createdAt": "2026-09-21T10:00:00",
"updatedAt": "2026-09-21T10:00:00"
}
}
error: "Journey not found".