Run workflow
curl --request POST \
--url https://openapi.enginy.ai/v1/workflow/{workflowId}/run \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{
"input": {}
}'import requests
url = "https://openapi.enginy.ai/v1/workflow/{workflowId}/run"
payload = { "input": {} }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({input: {}})
};
fetch('https://openapi.enginy.ai/v1/workflow/{workflowId}/run', 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://openapi.enginy.ai/v1/workflow/{workflowId}/run",
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([
'input' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://openapi.enginy.ai/v1/workflow/{workflowId}/run"
payload := strings.NewReader("{\n \"input\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://openapi.enginy.ai/v1/workflow/{workflowId}/run")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"input\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/workflow/{workflowId}/run")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"input\": {}\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "<string>",
"data": {
"runId": "<string>",
"appUrl": "<string>",
"status": "<string>",
"sequenceNumber": 123
}
}Workflows
Run workflow
Start a run of a published workflow. The workflow must be published first. Provide input only when the workflow declares a runtime input (see runtimeInputContract on GET /v1/workflow/{workflowId}).
Responses include direct Enginy app URLs when available. The response includes an appUrl to the run detail. MCP agents should return those URLs to users whenever they are present in the response.
Required scope:
WORKFLOWS_WRITERate limit: 30 requests per minute
POST
/
v1
/
workflow
/
{workflowId}
/
run
Run workflow
curl --request POST \
--url https://openapi.enginy.ai/v1/workflow/{workflowId}/run \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '{
"input": {}
}'import requests
url = "https://openapi.enginy.ai/v1/workflow/{workflowId}/run"
payload = { "input": {} }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({input: {}})
};
fetch('https://openapi.enginy.ai/v1/workflow/{workflowId}/run', 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://openapi.enginy.ai/v1/workflow/{workflowId}/run",
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([
'input' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://openapi.enginy.ai/v1/workflow/{workflowId}/run"
payload := strings.NewReader("{\n \"input\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://openapi.enginy.ai/v1/workflow/{workflowId}/run")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"input\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/workflow/{workflowId}/run")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"input\": {}\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "<string>",
"data": {
"runId": "<string>",
"appUrl": "<string>",
"status": "<string>",
"sequenceNumber": 123
}
}⌘I