Migrations
Start Migration
Queue execution for an approved migration run.
POST
/
api
/
v1
/
migrations
/
{runId}
/
start
Start Migration
curl --request POST \
--url https://api.sequenzy.com/api/v1/migrations/{runId}/start \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resourceIds": [
"<string>"
],
"resourceOptions": {}
}
'import requests
url = "https://api.sequenzy.com/api/v1/migrations/{runId}/start"
payload = {
"resourceIds": ["<string>"],
"resourceOptions": {}
}
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({resourceIds: ['<string>'], resourceOptions: {}})
};
fetch('https://api.sequenzy.com/api/v1/migrations/{runId}/start', 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.sequenzy.com/api/v1/migrations/{runId}/start",
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([
'resourceIds' => [
'<string>'
],
'resourceOptions' => [
]
]),
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.sequenzy.com/api/v1/migrations/{runId}/start"
payload := strings.NewReader("{\n \"resourceIds\": [\n \"<string>\"\n ],\n \"resourceOptions\": {}\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.sequenzy.com/api/v1/migrations/{runId}/start")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resourceIds\": [\n \"<string>\"\n ],\n \"resourceOptions\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/migrations/{runId}/start")
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 \"resourceIds\": [\n \"<string>\"\n ],\n \"resourceOptions\": {}\n}"
response = http.request(request)
puts response.read_body{"success":true,"data":{"id":"run_123","status":"queued"}}
{"success":false,"error":"This migration run cannot be started in its current state."}
{"success":false,"error":"Select at least one resource to migrate."}
{"error":"Invalid API key"}
{"error":"Access denied to the migration run"}
{"error":"Migration run not found"}
Start Migration
Queues the generic migration worker. Optionally approvesresourceIds first.
State and retries
At least one resource must be selected, either inresourceIds or in the
previously approved plan. Providing resourceIds approves that selection before
starting. resourceOptions is used only with a nonempty resourceIds selection.
If the run is already queued or running, this endpoint returns its current
state without queueing another execution or changing its plan. Retry with the
same run ID after an uncertain response. Runs in completed, failed,
canceled or cancel_requested state cannot be started again and return 400.
Request
string
required
Migration run ID.
string[]
Optional resources to approve before start.
object
Optional per-resource filters when
resourceIds is provided.curl -X POST "https://api.sequenzy.com/api/v1/migrations/run_123/start" \
-H "Authorization: Bearer SEQUENZY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"resourceIds":["subscribers","tags","custom_fields","automations"],"resourceOptions":{"automations":{"names":["Budget Worksheet"]}}}'
Responses
{"success":true,"data":{"id":"run_123","status":"queued"}}
{"success":false,"error":"This migration run cannot be started in its current state."}
{"success":false,"error":"Select at least one resource to migrate."}
{"error":"Invalid API key"}
{"error":"Access denied to the migration run"}
{"error":"Migration run not found"}
⌘I
Start Migration
curl --request POST \
--url https://api.sequenzy.com/api/v1/migrations/{runId}/start \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resourceIds": [
"<string>"
],
"resourceOptions": {}
}
'import requests
url = "https://api.sequenzy.com/api/v1/migrations/{runId}/start"
payload = {
"resourceIds": ["<string>"],
"resourceOptions": {}
}
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({resourceIds: ['<string>'], resourceOptions: {}})
};
fetch('https://api.sequenzy.com/api/v1/migrations/{runId}/start', 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.sequenzy.com/api/v1/migrations/{runId}/start",
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([
'resourceIds' => [
'<string>'
],
'resourceOptions' => [
]
]),
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.sequenzy.com/api/v1/migrations/{runId}/start"
payload := strings.NewReader("{\n \"resourceIds\": [\n \"<string>\"\n ],\n \"resourceOptions\": {}\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.sequenzy.com/api/v1/migrations/{runId}/start")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resourceIds\": [\n \"<string>\"\n ],\n \"resourceOptions\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/migrations/{runId}/start")
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 \"resourceIds\": [\n \"<string>\"\n ],\n \"resourceOptions\": {}\n}"
response = http.request(request)
puts response.read_body{"success":true,"data":{"id":"run_123","status":"queued"}}
{"success":false,"error":"This migration run cannot be started in its current state."}
{"success":false,"error":"Select at least one resource to migrate."}
{"error":"Invalid API key"}
{"error":"Access denied to the migration run"}
{"error":"Migration run not found"}