curl --request POST \
--url https://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/execute \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"agentProfileId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentProfilePoolId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"dynamicData": {},
"executionOptions": {
"softTimeoutMins": 2,
"variantKey": "<string>"
},
"inputs": {},
"metadata": {},
"tempFiles": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
],
"version": 123
}
'import requests
url = "https://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/execute"
payload = {
"agentProfileId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentProfilePoolId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"dynamicData": {},
"executionOptions": {
"softTimeoutMins": 2,
"variantKey": "<string>"
},
"inputs": {},
"metadata": {},
"tempFiles": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
],
"version": 123
}
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({
agentProfileId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
agentProfilePoolId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
dynamicData: {},
executionOptions: {softTimeoutMins: 2, variantKey: '<string>'},
inputs: {},
metadata: {},
tempFiles: [{id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', name: '<string>'}],
version: 123
})
};
fetch('https://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/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://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/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([
'agentProfileId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'agentProfilePoolId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'dynamicData' => [
],
'executionOptions' => [
'softTimeoutMins' => 2,
'variantKey' => '<string>'
],
'inputs' => [
],
'metadata' => [
],
'tempFiles' => [
[
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'name' => '<string>'
]
],
'version' => 123
]),
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://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/execute"
payload := strings.NewReader("{\n \"agentProfileId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agentProfilePoolId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"dynamicData\": {},\n \"executionOptions\": {\n \"softTimeoutMins\": 2,\n \"variantKey\": \"<string>\"\n },\n \"inputs\": {},\n \"metadata\": {},\n \"tempFiles\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\"\n }\n ],\n \"version\": 123\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://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/execute")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"agentProfileId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agentProfilePoolId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"dynamicData\": {},\n \"executionOptions\": {\n \"softTimeoutMins\": 2,\n \"variantKey\": \"<string>\"\n },\n \"inputs\": {},\n \"metadata\": {},\n \"tempFiles\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\"\n }\n ],\n \"version\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/execute")
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 \"agentProfileId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agentProfilePoolId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"dynamicData\": {},\n \"executionOptions\": {\n \"softTimeoutMins\": 2,\n \"variantKey\": \"<string>\"\n },\n \"inputs\": {},\n \"metadata\": {},\n \"tempFiles\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\"\n }\n ],\n \"version\": 123\n}"
response = http.request(request)
puts response.read_body{
"executionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "queued"
}{
"code": 123,
"message": "<string>"
}Execute workflow
Start an execution of the workflow’s published version, or of the version given in the request.
curl --request POST \
--url https://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/execute \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"agentProfileId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentProfilePoolId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"dynamicData": {},
"executionOptions": {
"softTimeoutMins": 2,
"variantKey": "<string>"
},
"inputs": {},
"metadata": {},
"tempFiles": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
],
"version": 123
}
'import requests
url = "https://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/execute"
payload = {
"agentProfileId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentProfilePoolId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"dynamicData": {},
"executionOptions": {
"softTimeoutMins": 2,
"variantKey": "<string>"
},
"inputs": {},
"metadata": {},
"tempFiles": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
],
"version": 123
}
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({
agentProfileId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
agentProfilePoolId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
dynamicData: {},
executionOptions: {softTimeoutMins: 2, variantKey: '<string>'},
inputs: {},
metadata: {},
tempFiles: [{id: '3c90c3cc-0d44-4b50-8888-8dd25736052a', name: '<string>'}],
version: 123
})
};
fetch('https://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/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://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/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([
'agentProfileId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'agentProfilePoolId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'dynamicData' => [
],
'executionOptions' => [
'softTimeoutMins' => 2,
'variantKey' => '<string>'
],
'inputs' => [
],
'metadata' => [
],
'tempFiles' => [
[
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'name' => '<string>'
]
],
'version' => 123
]),
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://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/execute"
payload := strings.NewReader("{\n \"agentProfileId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agentProfilePoolId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"dynamicData\": {},\n \"executionOptions\": {\n \"softTimeoutMins\": 2,\n \"variantKey\": \"<string>\"\n },\n \"inputs\": {},\n \"metadata\": {},\n \"tempFiles\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\"\n }\n ],\n \"version\": 123\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://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/execute")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"agentProfileId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agentProfilePoolId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"dynamicData\": {},\n \"executionOptions\": {\n \"softTimeoutMins\": 2,\n \"variantKey\": \"<string>\"\n },\n \"inputs\": {},\n \"metadata\": {},\n \"tempFiles\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\"\n }\n ],\n \"version\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://odyssey.asteroid.ai/agents/v2/workflows/{workflowId}/execute")
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 \"agentProfileId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"agentProfilePoolId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"dynamicData\": {},\n \"executionOptions\": {\n \"softTimeoutMins\": 2,\n \"variantKey\": \"<string>\"\n },\n \"inputs\": {},\n \"metadata\": {},\n \"tempFiles\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\"\n }\n ],\n \"version\": 123\n}"
response = http.request(request)
puts response.read_body{
"executionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "queued"
}{
"code": 123,
"message": "<string>"
}Authorizations
Path Parameters
The ID of the workflow to execute
Body
Execution request parameters
Request to execute a workflow
The ID of the agent profile to use for this execution. Mutually exclusive with agentProfilePoolId.
The ID of the agent profile pool to select a profile from. Mutually exclusive with agentProfileId.
Deprecated: Use 'inputs' instead. Inputs to be merged into the placeholders defined in prompts
Per-execution runtime options that override or extend the workflow's default settings.
Show child attributes
Show child attributes
Inputs to be merged into the placeholders defined in prompts
Optional metadata key-value pairs (string keys and string values) for organizing and filtering executions
What to do when the execution cannot start right now because the organisation is at its concurrency limit or every profile in the pool is in use. "reject" (the default) fails the request as today. "queue" accepts it: the execution is created in the "queued" status under the returned ID and starts automatically, oldest first, as capacity frees. Temp files cannot be queued.
reject, queue Array of temporary files to attach to the execution. Must have been pre-uploaded using the stage file endpoint
Show child attributes
Show child attributes
The version of the workflow to execute. If not provided, the published version is used.
Response
The request has been accepted for processing, but processing has not yet completed.
Response after starting a workflow execution
The ID of the newly created execution
The execution's initial status: "starting" when it began immediately, "queued" when it is waiting for capacity (only with onCapacityLimit: "queue"). Poll the execution by ID to follow it either way.
queued, starting, running, paused, awaiting_confirmation, completed, cancelled, failed, paused_by_agent 
