curl --request GET \
--url https://odyssey.asteroid.ai/agents/v2/executions \
--header 'X-Asteroid-Agents-Api-Key: <api-key>'import requests
url = "https://odyssey.asteroid.ai/agents/v2/executions"
headers = {"X-Asteroid-Agents-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Asteroid-Agents-Api-Key': '<api-key>'}};
fetch('https://odyssey.asteroid.ai/agents/v2/executions', 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/executions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Asteroid-Agents-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"
"net/http"
"io"
)
func main() {
url := "https://odyssey.asteroid.ai/agents/v2/executions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Asteroid-Agents-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://odyssey.asteroid.ai/agents/v2/executions")
.header("X-Asteroid-Agents-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://odyssey.asteroid.ai/agents/v2/executions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Asteroid-Agents-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentName": "<string>",
"comments": [
{
"content": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"executionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public": true,
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"createdAt": "2023-11-07T05:31:56Z",
"hasBeenRerun": true,
"humanLabels": [
{
"color": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"organizationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organizationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflowId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentProfileId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentProfileName": "<string>",
"browserLiveViewUrl": "<string>",
"browserRecordingUrl": "<string>",
"duration": 123,
"executionOptions": {
"sharedStorageKey": "<string>",
"softTimeoutMins": 2
},
"executionResult": {
"createdAt": "2023-11-07T05:31:56Z",
"executionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"outcome": "<string>",
"reasoning": "<string>",
"result": "<unknown>"
},
"inputs": {},
"liveViewUrl": "<string>",
"metadata": {},
"parentExecutionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recordingUrl": "<string>",
"scriptFailures": [
{
"occurredAt": "2023-11-07T05:31:56Z",
"actionId": "<string>",
"error": "<string>",
"failedLine": 123,
"nodeId": "<string>",
"nodeName": "<string>",
"scriptFilepath": "<string>",
"step": 123
}
],
"terminalAt": "2023-11-07T05:31:56Z",
"triggerContext": {
"runner": {
"email": "<string>",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isAdmin": true
},
"source": "api",
"apiKey": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
}
}
],
"page": 123,
"pageSize": 123,
"total": 123
}{
"code": 400,
"message": "<string>"
}{
"code": 401,
"message": "<string>"
}{
"code": 403,
"message": "<string>"
}{
"code": 404,
"message": "<string>"
}{
"code": 500,
"message": "<string>"
}List executions
List executions with filtering and pagination
curl --request GET \
--url https://odyssey.asteroid.ai/agents/v2/executions \
--header 'X-Asteroid-Agents-Api-Key: <api-key>'import requests
url = "https://odyssey.asteroid.ai/agents/v2/executions"
headers = {"X-Asteroid-Agents-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Asteroid-Agents-Api-Key': '<api-key>'}};
fetch('https://odyssey.asteroid.ai/agents/v2/executions', 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/executions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Asteroid-Agents-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"
"net/http"
"io"
)
func main() {
url := "https://odyssey.asteroid.ai/agents/v2/executions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Asteroid-Agents-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://odyssey.asteroid.ai/agents/v2/executions")
.header("X-Asteroid-Agents-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://odyssey.asteroid.ai/agents/v2/executions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Asteroid-Agents-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentName": "<string>",
"comments": [
{
"content": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"executionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"public": true,
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"createdAt": "2023-11-07T05:31:56Z",
"hasBeenRerun": true,
"humanLabels": [
{
"color": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"organizationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organizationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflowId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentProfileId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentProfileName": "<string>",
"browserLiveViewUrl": "<string>",
"browserRecordingUrl": "<string>",
"duration": 123,
"executionOptions": {
"sharedStorageKey": "<string>",
"softTimeoutMins": 2
},
"executionResult": {
"createdAt": "2023-11-07T05:31:56Z",
"executionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"outcome": "<string>",
"reasoning": "<string>",
"result": "<unknown>"
},
"inputs": {},
"liveViewUrl": "<string>",
"metadata": {},
"parentExecutionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"recordingUrl": "<string>",
"scriptFailures": [
{
"occurredAt": "2023-11-07T05:31:56Z",
"actionId": "<string>",
"error": "<string>",
"failedLine": 123,
"nodeId": "<string>",
"nodeName": "<string>",
"scriptFilepath": "<string>",
"step": 123
}
],
"terminalAt": "2023-11-07T05:31:56Z",
"triggerContext": {
"runner": {
"email": "<string>",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isAdmin": true
},
"source": "api",
"apiKey": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>"
}
}
}
],
"page": 123,
"pageSize": 123,
"total": 123
}{
"code": 400,
"message": "<string>"
}{
"code": 401,
"message": "<string>"
}{
"code": 403,
"message": "<string>"
}{
"code": 404,
"message": "<string>"
}{
"code": 500,
"message": "<string>"
}Authorizations
Query Parameters
Optional organization ID filter (required for customer queries)
Search by execution ID (partial, case-insensitive match)
Filter by agent ID
Filter by agent profile IDs (can specify multiple, there is an 'OR' condition applied to these)
Filter by execution status (can specify multiple, there is an 'OR' condition applied to these)
starting, running, paused, awaiting_confirmation, completed, cancelled, failed, paused_by_agent Filter executions created after this timestamp
Filter executions created before this timestamp
Filter by human labels (can specify multiple label IDs, there is an 'OR' condition applied to these)
Filter by execution result outcome (partial, case-insensitive match)
Filter by metadata key - must be used together with metadataValue
Filter by metadata value - must be used together with metadataKey
Filter by input variable key - must be used together with inputsValue
Filter by input variable value (partial, case-insensitive match) - must be used together with inputsKey
Filter by workflow version number
Filter by whether the execution recorded any script failures
Fields that can be used for sorting executions
created_at, status asc, desc 
