Get workflow
curl --request GET \
--url https://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow \
--header 'Authorization: Bearer <token>'import requests
url = "https://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow', 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}/workflow",
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://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow"
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://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow")
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{
"success": true,
"contract_version": 1,
"data": {
"automation": {
"id": "01M520GX9NYKQHVAC43NBBRHH6",
"version": 1,
"kind": "workflow",
"import_id": "01M520GX6YJ992K8Z6DHPJETKB",
"template_id": "imported-workflow-shopify",
"template_version": 1,
"platform": "shopify",
"integration_id": 101,
"store_label": "Example Shopify store",
"name": "Daily product summary",
"state": "draft",
"trigger": {
"kind": "schedule"
},
"paused_by": null,
"paused_reason": null,
"inputs": {},
"bindings": {},
"plan_version": 1,
"connections": [],
"schedule": {
"cadence": "manual",
"run_at": null,
"day_of_week": null,
"day_of_month": null,
"date": null,
"days": null,
"week_of_month": null
},
"timezone": "Europe/London",
"spread_minutes": 9,
"next_run_at": null,
"last_run_at": null,
"consecutive_failures": 0,
"send_mode": "ask",
"created_at": "2026-10-16T09:26:07.415Z",
"updated_at": "2026-10-16T09:26:07.415Z",
"created_by": 7,
"created_via": "api-token",
"api_client_id": "viq_auto_Ab12Cd34Ef56Gh78Ij90Kl12",
"readiness": {
"ready": true,
"missing": [],
"unconfigured": []
},
"send_mode_allowed": false
},
"workflow": {
"nodes": [
{
"id": "1f8a5887-d8ce-023a-e20f-a50322ebeeec",
"name": "Daily",
"type": "n8n-nodes-base.scheduleTrigger",
"type_version": 1.2,
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"disabled": false,
"on_error": "stopWorkflow",
"always_output_data": false,
"execute_once": false
},
{
"id": "f78155ac-22ae-555d-0419-9612ed0fd8bd",
"name": "Products",
"type": "n8n-nodes-base.httpRequest",
"type_version": 4.2,
"parameters": {
"url": "https://demo.myshopify.com/admin/api/2024-10/products.json"
},
"disabled": false,
"on_error": "continueRegularOutput",
"always_output_data": false,
"execute_once": false
}
],
"connections": {
"Daily": {
"main": [
[
{
"node": "Products",
"type": "main",
"index": 0
}
]
]
},
"Products": {
"main": [
[
{
"node": "Summary",
"type": "main",
"index": 0
}
]
]
}
}
},
"needs": {
"Daily": null,
"Products": {
"kind": "store",
"target": null
},
"Summary": null
},
"unconfigured": []
}
}{
"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": {}
}Get workflow
The steps of an automation set up from an imported workflow, as one editable workflow: each step’s id, name,
type and settings (with [removed] where a secret was), and how the steps connect. Answers 404 for an
automation that is not a workflow.
Needs the automations:read scope.
GET
/
v1
/
automations
/
{automationId}
/
workflow
Get workflow
curl --request GET \
--url https://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow \
--header 'Authorization: Bearer <token>'import requests
url = "https://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow', 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}/workflow",
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://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow"
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://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://automations-api.vortexiq.ai/v1/automations/{automationId}/workflow")
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{
"success": true,
"contract_version": 1,
"data": {
"automation": {
"id": "01M520GX9NYKQHVAC43NBBRHH6",
"version": 1,
"kind": "workflow",
"import_id": "01M520GX6YJ992K8Z6DHPJETKB",
"template_id": "imported-workflow-shopify",
"template_version": 1,
"platform": "shopify",
"integration_id": 101,
"store_label": "Example Shopify store",
"name": "Daily product summary",
"state": "draft",
"trigger": {
"kind": "schedule"
},
"paused_by": null,
"paused_reason": null,
"inputs": {},
"bindings": {},
"plan_version": 1,
"connections": [],
"schedule": {
"cadence": "manual",
"run_at": null,
"day_of_week": null,
"day_of_month": null,
"date": null,
"days": null,
"week_of_month": null
},
"timezone": "Europe/London",
"spread_minutes": 9,
"next_run_at": null,
"last_run_at": null,
"consecutive_failures": 0,
"send_mode": "ask",
"created_at": "2026-10-16T09:26:07.415Z",
"updated_at": "2026-10-16T09:26:07.415Z",
"created_by": 7,
"created_via": "api-token",
"api_client_id": "viq_auto_Ab12Cd34Ef56Gh78Ij90Kl12",
"readiness": {
"ready": true,
"missing": [],
"unconfigured": []
},
"send_mode_allowed": false
},
"workflow": {
"nodes": [
{
"id": "1f8a5887-d8ce-023a-e20f-a50322ebeeec",
"name": "Daily",
"type": "n8n-nodes-base.scheduleTrigger",
"type_version": 1.2,
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"disabled": false,
"on_error": "stopWorkflow",
"always_output_data": false,
"execute_once": false
},
{
"id": "f78155ac-22ae-555d-0419-9612ed0fd8bd",
"name": "Products",
"type": "n8n-nodes-base.httpRequest",
"type_version": 4.2,
"parameters": {
"url": "https://demo.myshopify.com/admin/api/2024-10/products.json"
},
"disabled": false,
"on_error": "continueRegularOutput",
"always_output_data": false,
"execute_once": false
}
],
"connections": {
"Daily": {
"main": [
[
{
"node": "Products",
"type": "main",
"index": 0
}
]
]
},
"Products": {
"main": [
[
{
"node": "Summary",
"type": "main",
"index": 0
}
]
]
}
}
},
"needs": {
"Daily": null,
"Products": {
"kind": "store",
"target": null
},
"Summary": null
},
"unconfigured": []
}
}{
"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
bearerAuthapiCredential
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).
Pattern:
^[0-9A-HJKMNP-TV-Z]{26}$Was this page helpful?
⌘I