curl --request GET \
--url https://{host}/api/tasks \
--header 'Authorization: Bearer <token>'import requests
url = "https://{host}/api/tasks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/api/tasks', 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://{host}/api/tasks",
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://{host}/api/tasks"
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://{host}/api/tasks")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/api/tasks")
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{
"items": [
{
"id": "<string>",
"project_id": "<string>",
"created_by": "<string>",
"workflow": "<string>",
"state": "<string>",
"input": {
"session_id": "<string>",
"query_id": "<string>",
"ask": "<string>",
"messages": [
{
"role": "<string>",
"content": "<string>"
}
],
"models": [
"<string>"
],
"tools": [
"<string>"
],
"shape": {},
"instructions": "<string>",
"scope": [
"<string>"
],
"turn_timeout_seconds": 123,
"comparison_group": "<string>",
"retrieval": {
"retrieval_only": true,
"pointers_only": true,
"chunks_only": true,
"artifacts_only": true,
"max_retrieved": 123,
"max_retrieved_chars": 123,
"compose": true,
"max_steps": 123,
"thinking_level": "<string>"
}
},
"steps": [
{
"step_id": "<string>",
"status": "<string>",
"type": "<string>",
"content": "<string>",
"commentary": "<string>",
"code": "<string>",
"result": "<string>",
"cum_input_tokens": 123,
"cum_output_tokens": 123,
"job_id": "<string>",
"path": "<string>"
}
],
"tokens_prompt": 123,
"tokens_completion": 123,
"runtime_seconds": 123,
"created_at": "2023-11-07T05:31:56Z",
"context_id": "<string>",
"agent_id": "<string>",
"session_id": "<string>",
"error": "<string>",
"output": {
"status": "<string>",
"query_id": "<string>",
"answer": "<string>",
"citations": [
"<string>"
],
"latency_ms": 123,
"output_json": {},
"unknown_models": [
"<string>"
]
},
"steps_total": 123,
"running_from": "2023-11-07T05:31:56Z",
"timeout_seconds": 123,
"timeout_at": "2023-11-07T05:31:56Z",
"archived_at": "2023-11-07T05:31:56Z",
"last_activity_at": "2023-11-07T05:31:56Z",
"schedule": "<string>",
"scheduled_at": "2023-11-07T05:31:56Z",
"parent_task_id": "<string>",
"progress": {
"phase": 123,
"phases": 123,
"label": "<string>",
"pct": 123,
"eta_seconds": 123
}
}
],
"total": 123,
"limit": 123,
"offset": 123,
"page": 123,
"pages": 123
}List tasks (project-wide, paginated)
Task records across the project, newest first. Filter by workflow, state, or context, and page with limit plus page or offset.
curl --request GET \
--url https://{host}/api/tasks \
--header 'Authorization: Bearer <token>'import requests
url = "https://{host}/api/tasks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/api/tasks', 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://{host}/api/tasks",
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://{host}/api/tasks"
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://{host}/api/tasks")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/api/tasks")
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{
"items": [
{
"id": "<string>",
"project_id": "<string>",
"created_by": "<string>",
"workflow": "<string>",
"state": "<string>",
"input": {
"session_id": "<string>",
"query_id": "<string>",
"ask": "<string>",
"messages": [
{
"role": "<string>",
"content": "<string>"
}
],
"models": [
"<string>"
],
"tools": [
"<string>"
],
"shape": {},
"instructions": "<string>",
"scope": [
"<string>"
],
"turn_timeout_seconds": 123,
"comparison_group": "<string>",
"retrieval": {
"retrieval_only": true,
"pointers_only": true,
"chunks_only": true,
"artifacts_only": true,
"max_retrieved": 123,
"max_retrieved_chars": 123,
"compose": true,
"max_steps": 123,
"thinking_level": "<string>"
}
},
"steps": [
{
"step_id": "<string>",
"status": "<string>",
"type": "<string>",
"content": "<string>",
"commentary": "<string>",
"code": "<string>",
"result": "<string>",
"cum_input_tokens": 123,
"cum_output_tokens": 123,
"job_id": "<string>",
"path": "<string>"
}
],
"tokens_prompt": 123,
"tokens_completion": 123,
"runtime_seconds": 123,
"created_at": "2023-11-07T05:31:56Z",
"context_id": "<string>",
"agent_id": "<string>",
"session_id": "<string>",
"error": "<string>",
"output": {
"status": "<string>",
"query_id": "<string>",
"answer": "<string>",
"citations": [
"<string>"
],
"latency_ms": 123,
"output_json": {},
"unknown_models": [
"<string>"
]
},
"steps_total": 123,
"running_from": "2023-11-07T05:31:56Z",
"timeout_seconds": 123,
"timeout_at": "2023-11-07T05:31:56Z",
"archived_at": "2023-11-07T05:31:56Z",
"last_activity_at": "2023-11-07T05:31:56Z",
"schedule": "<string>",
"scheduled_at": "2023-11-07T05:31:56Z",
"parent_task_id": "<string>",
"progress": {
"phase": 123,
"phases": 123,
"label": "<string>",
"pct": 123,
"eta_seconds": 123
}
}
],
"total": 123,
"limit": 123,
"offset": 123,
"page": 123,
"pages": 123
}Authorizations
Session token from POST /auth/login, sent as Authorization: Bearer <token>.
Headers
Date-based contract version, echoed back on the same header. Omit for the default (2026-07); send unstable for the in-development surface. An unrecognized value is rejected with 400 unsupported_api_version.
Query Parameters
Return only tasks of this workflow. The canonical workflow name.
Return only tasks in this state.
Where the run has got to. scheduled waits for its due time; starting and provisioning are a container being claimed and built; running is the work happening; stopping is a termination in progress. completed, cancelled and failed are terminal.
Context slug or UUID
Free-text over id/created_by/input
Maximum tasks per page.
1 <= x <= 10001-based page to return. Ignored when offset is given.
Where the page starts. Takes precedence over page.
Response
Paginated tasks
One page of task records.
The tasks on this page.
Show child attributes
Show child attributes
Tasks matching the filter, across every page.
Maximum tasks per page.
Where this page starts.
1-based index of this page.
Total pages available.
Was this page helpful?