Execute Plan
curl --request POST \
--url https://control-plane.kubiya.ai/api/v1/tasks/plan/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"plan": {},
"worker_queue_id": "<string>",
"agent_id": "<string>",
"plan_generation_id": "<string>"
}
'import requests
url = "https://control-plane.kubiya.ai/api/v1/tasks/plan/execute"
payload = {
"plan": {},
"worker_queue_id": "<string>",
"agent_id": "<string>",
"plan_generation_id": "<string>"
}
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({
plan: {},
worker_queue_id: '<string>',
agent_id: '<string>',
plan_generation_id: '<string>'
})
};
fetch('https://control-plane.kubiya.ai/api/v1/tasks/plan/execute', 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://control-plane.kubiya.ai/api/v1/tasks/plan/execute",
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([
'plan' => [
],
'worker_queue_id' => '<string>',
'agent_id' => '<string>',
'plan_generation_id' => '<string>'
]),
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://control-plane.kubiya.ai/api/v1/tasks/plan/execute"
payload := strings.NewReader("{\n \"plan\": {},\n \"worker_queue_id\": \"<string>\",\n \"agent_id\": \"<string>\",\n \"plan_generation_id\": \"<string>\"\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://control-plane.kubiya.ai/api/v1/tasks/plan/execute")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"plan\": {},\n \"worker_queue_id\": \"<string>\",\n \"agent_id\": \"<string>\",\n \"plan_generation_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://control-plane.kubiya.ai/api/v1/tasks/plan/execute")
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 \"plan\": {},\n \"worker_queue_id\": \"<string>\",\n \"agent_id\": \"<string>\",\n \"plan_generation_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"execution_id": "<string>",
"status": "<string>",
"plan_title": "<string>",
"total_tasks": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Plan Execution
Execute Plan
Execute a multi-task plan using Temporal orchestration.
This endpoint:
- Validates the plan structure
- Creates a plan execution record
- Starts a Temporal workflow to orchestrate task execution
- Returns execution ID for status tracking
The workflow uses a Claude Code agent to intelligently manage plan execution.
POST
/
api
/
v1
/
tasks
/
plan
/
execute
Execute Plan
curl --request POST \
--url https://control-plane.kubiya.ai/api/v1/tasks/plan/execute \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"plan": {},
"worker_queue_id": "<string>",
"agent_id": "<string>",
"plan_generation_id": "<string>"
}
'import requests
url = "https://control-plane.kubiya.ai/api/v1/tasks/plan/execute"
payload = {
"plan": {},
"worker_queue_id": "<string>",
"agent_id": "<string>",
"plan_generation_id": "<string>"
}
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({
plan: {},
worker_queue_id: '<string>',
agent_id: '<string>',
plan_generation_id: '<string>'
})
};
fetch('https://control-plane.kubiya.ai/api/v1/tasks/plan/execute', 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://control-plane.kubiya.ai/api/v1/tasks/plan/execute",
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([
'plan' => [
],
'worker_queue_id' => '<string>',
'agent_id' => '<string>',
'plan_generation_id' => '<string>'
]),
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://control-plane.kubiya.ai/api/v1/tasks/plan/execute"
payload := strings.NewReader("{\n \"plan\": {},\n \"worker_queue_id\": \"<string>\",\n \"agent_id\": \"<string>\",\n \"plan_generation_id\": \"<string>\"\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://control-plane.kubiya.ai/api/v1/tasks/plan/execute")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"plan\": {},\n \"worker_queue_id\": \"<string>\",\n \"agent_id\": \"<string>\",\n \"plan_generation_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://control-plane.kubiya.ai/api/v1/tasks/plan/execute")
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 \"plan\": {},\n \"worker_queue_id\": \"<string>\",\n \"agent_id\": \"<string>\",\n \"plan_generation_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"execution_id": "<string>",
"status": "<string>",
"plan_title": "<string>",
"total_tasks": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Enter your Kubiya API token (format: Bearer )
Body
application/json
Request to execute a plan
The plan JSON to execute
Worker queue ID to route task executions to
Agent ID to use for task execution (optional, extracted from plan if not provided)
ID of the plan generation execution that created this plan (for linking)
Was this page helpful?
⌘I