curl --request POST \
--url https://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel \
--header 'Authorization: Bearer <token>'import requests
url = "https://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel', 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/runs/{runId}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel"
req, _ := http.NewRequest("POST", 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.post("https://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"contract_version": 1,
"data": {
"run": {
"id": "01M520GWV3SDB6DP4E29Q79C2S",
"automation_id": "01M520GSDQH5TQ3CAAQ584TTKH",
"template_id": "shopify-catalogue-quality",
"template_version": 4,
"trigger": "manual",
"lane": "interactive",
"mode": "normal",
"status": "cancelled",
"reason_code": "cancelled_by_merchant",
"message": null,
"platform_fault": false,
"attempt": 1,
"store_label": "Example Shopify store",
"queued_at": "2026-10-16T09:26:06.948Z",
"started_at": null,
"finished_at": "2026-10-16T09:26:06.967Z",
"duration_ms": null,
"queue_wait_ms": null,
"cancel_requested_at": "2026-10-16T09:26:06.967Z",
"summary": null,
"result": null,
"result_truncated": false,
"usage": null,
"receipt": null,
"event_ref": null,
"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,
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"success": false,
"contract_version": 2,
"message": "<string>",
"code": "<string>",
"errors": {}
}Cancel run
Stop a run. A queued run is cancelled at once. A running run is asked to stop: it finishes as
cancelled at its next check-in, about 15 seconds by default, keeping what had already finished. Answers
409 wrong_state when the run has already ended, and when it is waiting_approval: a run waiting for a
decision is ended by rejecting it in the Vortex IQ app, not here.
Needs the automations:write scope.
curl --request POST \
--url https://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel \
--header 'Authorization: Bearer <token>'import requests
url = "https://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel', 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/runs/{runId}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel"
req, _ := http.NewRequest("POST", 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.post("https://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://automations-api.vortexiq.ai/v1/automations/runs/{runId}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"contract_version": 1,
"data": {
"run": {
"id": "01M520GWV3SDB6DP4E29Q79C2S",
"automation_id": "01M520GSDQH5TQ3CAAQ584TTKH",
"template_id": "shopify-catalogue-quality",
"template_version": 4,
"trigger": "manual",
"lane": "interactive",
"mode": "normal",
"status": "cancelled",
"reason_code": "cancelled_by_merchant",
"message": null,
"platform_fault": false,
"attempt": 1,
"store_label": "Example Shopify store",
"queued_at": "2026-10-16T09:26:06.948Z",
"started_at": null,
"finished_at": "2026-10-16T09:26:06.967Z",
"duration_ms": null,
"queue_wait_ms": null,
"cancel_requested_at": "2026-10-16T09:26:06.967Z",
"summary": null,
"result": null,
"result_truncated": false,
"usage": null,
"receipt": null,
"event_ref": null,
"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,
"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 run's id. A public id (a ULID).
^[0-9A-HJKMNP-TV-Z]{26}$Was this page helpful?