curl --request POST \
--url https://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"slot_at": "2026-10-19T06:00:00.000Z",
"run_at": "2026-10-19T08:02:00.000Z",
"scope": "this",
"occurrence_version": 1,
"automation_version": 2
}
'import requests
url = "https://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move"
payload = {
"slot_at": "2026-10-19T06:00:00.000Z",
"run_at": "2026-10-19T08:02:00.000Z",
"scope": "this",
"occurrence_version": 1,
"automation_version": 2
}
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({
slot_at: '2026-10-19T06:00:00.000Z',
run_at: '2026-10-19T08:02:00.000Z',
scope: 'this',
occurrence_version: 1,
automation_version: 2
})
};
fetch('https://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move', 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://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move",
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([
'slot_at' => '2026-10-19T06:00:00.000Z',
'run_at' => '2026-10-19T08:02:00.000Z',
'scope' => 'this',
'occurrence_version' => 1,
'automation_version' => 2
]),
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://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move"
payload := strings.NewReader("{\n \"slot_at\": \"2026-10-19T06:00:00.000Z\",\n \"run_at\": \"2026-10-19T08:02:00.000Z\",\n \"scope\": \"this\",\n \"occurrence_version\": 1,\n \"automation_version\": 2\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://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"slot_at\": \"2026-10-19T06:00:00.000Z\",\n \"run_at\": \"2026-10-19T08:02:00.000Z\",\n \"scope\": \"this\",\n \"occurrence_version\": 1,\n \"automation_version\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move")
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 \"slot_at\": \"2026-10-19T06:00:00.000Z\",\n \"run_at\": \"2026-10-19T08:02:00.000Z\",\n \"scope\": \"this\",\n \"occurrence_version\": 1,\n \"automation_version\": 2\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"contract_version": 1,
"data": {
"occurrence": {
"automation_id": "01M520GSDQH5TQ3CAAQ584TTKH",
"automation_name": "Weekly catalogue check",
"automation_version": 2,
"timezone": "Europe/London",
"slot_at": "2026-10-19T06:00:00.000Z",
"run_at": "2026-10-19T08:02:00.000Z",
"state": "pending",
"reason": null,
"run_id": null,
"run_status": null,
"moved_from": "2026-10-19T06:02:00.000Z",
"version": 2,
"projected": false
},
"automation": {
"id": "01M520GSDQH5TQ3CAAQ584TTKH",
"version": 2,
"kind": "template",
"import_id": null,
"template_id": "shopify-catalogue-quality",
"template_version": 4,
"platform": "shopify",
"integration_id": 101,
"store_label": "Example Shopify store",
"name": "Weekly catalogue check",
"state": "active",
"trigger": {
"kind": "schedule"
},
"paused_by": null,
"paused_reason": null,
"inputs": {},
"bindings": {},
"plan_version": 1,
"connections": [],
"schedule": {
"cadence": "weekly",
"run_at": "07:00",
"day_of_week": 1,
"day_of_month": null,
"date": null,
"days": null,
"week_of_month": null
},
"timezone": "Europe/London",
"spread_minutes": 2,
"next_run_at": "2026-10-19T08:02:00.000Z",
"last_run_at": null,
"consecutive_failures": 0,
"send_mode": "ask",
"created_at": "2026-10-16T09:26:03.448Z",
"updated_at": "2026-10-16T09:26:03.517Z",
"created_by": 7,
"created_via": "api-token",
"api_client_id": "viq_auto_Ab12Cd34Ef56Gh78Ij90Kl12"
}
}
}{
"success": false,
"contract_version": 2,
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"success": false,
"contract_version": 2,
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"success": false,
"contract_version": 2,
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"success": false,
"contract_version": 2,
"code": "stale_version",
"message": "<string>",
"data": {
"occurrence": {
"automation_id": "<string>",
"automation_name": "<string>",
"automation_version": 2,
"timezone": "<string>",
"slot_at": "2023-11-07T05:31:56Z",
"run_at": "2023-11-07T05:31:56Z",
"state": "pending",
"reason": "skipped_previous_running",
"run_id": "<string>",
"run_status": "queued",
"moved_from": "2023-11-07T05:31:56Z",
"version": 1,
"projected": true
},
"automation": {
"id": "<string>",
"kind": "template",
"import_id": "<string>",
"version": 2,
"template_id": "<string>",
"template_version": 2,
"platform": "shopify",
"integration_id": 123,
"store_label": "<string>",
"name": "<string>",
"state": "draft",
"paused_by": "merchant",
"paused_reason": "<string>",
"inputs": {},
"schedule": {
"cadence": "manual",
"run_at": "<string>",
"day_of_week": 4,
"day_of_month": 16,
"date": "<string>",
"days": [
4
],
"week_of_month": 1
},
"timezone": "<string>",
"spread_minutes": 4,
"next_run_at": "2023-11-07T05:31:56Z",
"last_run_at": "2023-11-07T05:31:56Z",
"consecutive_failures": 1,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"source": "n8n",
"bindings": {},
"plan_version": 2,
"readiness": {
"ready": true,
"missing": [
"klaviyo"
],
"unconfigured": [
{
"step": "<string>",
"kind": "store",
"target": {
"spreadsheet_id": "<string>",
"sheet": "<string>"
},
"why": "no_connection"
}
]
},
"connections": [
{
"integration_id": 2,
"kind": "klaviyo"
}
],
"send_mode": "ask",
"send_mode_allowed": true,
"trigger": {
"kind": "schedule"
},
"created_by": 123,
"created_via": "ui",
"api_client_id": "<string>"
}
}
}{
"success": false,
"contract_version": 2,
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"success": false,
"contract_version": 2,
"message": "<string>",
"code": "<string>",
"errors": {}
}Move a coming run
Move one coming run to another time. With scope: this, only that run moves. With scope: this_and_later,
the schedule itself changes (its time of day, and its weekday or day of the month) and every later run
follows; not for hourly cadences.
Send the coming run’s slot_at and version from List coming runs
(0 for a projected one, which is moved the same way), and the automation’s version. A stale version
answers 409; a run already queued or skipped answers 409 wrong_state, and a time in the past 422.
Needs the automations:write scope.
curl --request POST \
--url https://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"slot_at": "2026-10-19T06:00:00.000Z",
"run_at": "2026-10-19T08:02:00.000Z",
"scope": "this",
"occurrence_version": 1,
"automation_version": 2
}
'import requests
url = "https://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move"
payload = {
"slot_at": "2026-10-19T06:00:00.000Z",
"run_at": "2026-10-19T08:02:00.000Z",
"scope": "this",
"occurrence_version": 1,
"automation_version": 2
}
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({
slot_at: '2026-10-19T06:00:00.000Z',
run_at: '2026-10-19T08:02:00.000Z',
scope: 'this',
occurrence_version: 1,
automation_version: 2
})
};
fetch('https://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move', 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://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move",
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([
'slot_at' => '2026-10-19T06:00:00.000Z',
'run_at' => '2026-10-19T08:02:00.000Z',
'scope' => 'this',
'occurrence_version' => 1,
'automation_version' => 2
]),
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://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move"
payload := strings.NewReader("{\n \"slot_at\": \"2026-10-19T06:00:00.000Z\",\n \"run_at\": \"2026-10-19T08:02:00.000Z\",\n \"scope\": \"this\",\n \"occurrence_version\": 1,\n \"automation_version\": 2\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://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"slot_at\": \"2026-10-19T06:00:00.000Z\",\n \"run_at\": \"2026-10-19T08:02:00.000Z\",\n \"scope\": \"this\",\n \"occurrence_version\": 1,\n \"automation_version\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://automations-api.vortexiq.ai/v1/automations/{automationId}/occurrences/move")
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 \"slot_at\": \"2026-10-19T06:00:00.000Z\",\n \"run_at\": \"2026-10-19T08:02:00.000Z\",\n \"scope\": \"this\",\n \"occurrence_version\": 1,\n \"automation_version\": 2\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"contract_version": 1,
"data": {
"occurrence": {
"automation_id": "01M520GSDQH5TQ3CAAQ584TTKH",
"automation_name": "Weekly catalogue check",
"automation_version": 2,
"timezone": "Europe/London",
"slot_at": "2026-10-19T06:00:00.000Z",
"run_at": "2026-10-19T08:02:00.000Z",
"state": "pending",
"reason": null,
"run_id": null,
"run_status": null,
"moved_from": "2026-10-19T06:02:00.000Z",
"version": 2,
"projected": false
},
"automation": {
"id": "01M520GSDQH5TQ3CAAQ584TTKH",
"version": 2,
"kind": "template",
"import_id": null,
"template_id": "shopify-catalogue-quality",
"template_version": 4,
"platform": "shopify",
"integration_id": 101,
"store_label": "Example Shopify store",
"name": "Weekly catalogue check",
"state": "active",
"trigger": {
"kind": "schedule"
},
"paused_by": null,
"paused_reason": null,
"inputs": {},
"bindings": {},
"plan_version": 1,
"connections": [],
"schedule": {
"cadence": "weekly",
"run_at": "07:00",
"day_of_week": 1,
"day_of_month": null,
"date": null,
"days": null,
"week_of_month": null
},
"timezone": "Europe/London",
"spread_minutes": 2,
"next_run_at": "2026-10-19T08:02:00.000Z",
"last_run_at": null,
"consecutive_failures": 0,
"send_mode": "ask",
"created_at": "2026-10-16T09:26:03.448Z",
"updated_at": "2026-10-16T09:26:03.517Z",
"created_by": 7,
"created_via": "api-token",
"api_client_id": "viq_auto_Ab12Cd34Ef56Gh78Ij90Kl12"
}
}
}{
"success": false,
"contract_version": 2,
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"success": false,
"contract_version": 2,
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"success": false,
"contract_version": 2,
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"success": false,
"contract_version": 2,
"code": "stale_version",
"message": "<string>",
"data": {
"occurrence": {
"automation_id": "<string>",
"automation_name": "<string>",
"automation_version": 2,
"timezone": "<string>",
"slot_at": "2023-11-07T05:31:56Z",
"run_at": "2023-11-07T05:31:56Z",
"state": "pending",
"reason": "skipped_previous_running",
"run_id": "<string>",
"run_status": "queued",
"moved_from": "2023-11-07T05:31:56Z",
"version": 1,
"projected": true
},
"automation": {
"id": "<string>",
"kind": "template",
"import_id": "<string>",
"version": 2,
"template_id": "<string>",
"template_version": 2,
"platform": "shopify",
"integration_id": 123,
"store_label": "<string>",
"name": "<string>",
"state": "draft",
"paused_by": "merchant",
"paused_reason": "<string>",
"inputs": {},
"schedule": {
"cadence": "manual",
"run_at": "<string>",
"day_of_week": 4,
"day_of_month": 16,
"date": "<string>",
"days": [
4
],
"week_of_month": 1
},
"timezone": "<string>",
"spread_minutes": 4,
"next_run_at": "2023-11-07T05:31:56Z",
"last_run_at": "2023-11-07T05:31:56Z",
"consecutive_failures": 1,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"source": "n8n",
"bindings": {},
"plan_version": 2,
"readiness": {
"ready": true,
"missing": [
"klaviyo"
],
"unconfigured": [
{
"step": "<string>",
"kind": "store",
"target": {
"spreadsheet_id": "<string>",
"sheet": "<string>"
},
"why": "no_connection"
}
]
},
"connections": [
{
"integration_id": 2,
"kind": "klaviyo"
}
],
"send_mode": "ask",
"send_mode_allowed": true,
"trigger": {
"kind": "schedule"
},
"created_by": 123,
"created_via": "ui",
"api_client_id": "<string>"
}
}
}{
"success": false,
"contract_version": 2,
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"success": false,
"contract_version": 2,
"message": "<string>",
"code": "<string>",
"errors": {}
}Authorizations
A bearer token from Login, sent as Authorization: Bearer <token>. Valid for 60 minutes; it acts as the person named at login, within their organisation, and never approves. Rotating or disabling the organisation's API credential ends every token made with it on its next call. See Authentication.
Path Parameters
The automation's id. A public id (a ULID).
^[0-9A-HJKMNP-TV-Z]{26}$Body
A time in UTC (ISO 8601).
A time in UTC (ISO 8601).
this, this_and_later The coming run's version you last read; 0 for a projected one.
x >= 0x >= 1Was this page helpful?