curl --request GET \
--url https://api.tela.com/task \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tela.com/task"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tela.com/task', 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://api.tela.com/task",
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://api.tela.com/task"
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://api.tela.com/task")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tela.com/task")
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{
"data": [
{
"id": "8b6d2c9a-1f4e-4c1b-9a1e-3c2d5e6f7a80",
"reference": 42,
"name": "Invoice-2025-001.pdf",
"status": "completed",
"rawInput": {
"application_id": "95cec438-6080-44fe-8275-28b16bd40178",
"variables": {
"document": {
"files": [
{
"file_url": "https://example.com/invoice.pdf",
"file_name": "Invoice-2025-001.pdf",
"mime_type": "application/pdf"
}
]
}
}
},
"inputContent": {
"variables": {
"document": {
"files": [
{
"file_url": "https://example.com/invoice.pdf",
"file_name": "Invoice-2025-001.pdf",
"mime_type": "application/pdf"
}
]
}
},
"messages": [],
"files": [
{
"name": "document",
"filename": "Invoice-2025-001.pdf",
"url": "https://example.com/invoice.pdf",
"usedAt": "variables",
"mimeType": "application/pdf"
}
]
},
"outputContent": {
"role": "assistant",
"content": {
"cliente": "Acme Corporation",
"valor": 150000
}
},
"originalOutputContent": {
"role": "assistant",
"content": {
"cliente": "Acme Corporation",
"valor": 150000
}
},
"createdBy": "api@company.com",
"approvedBy": "reviewer@company.com",
"approvedAt": "2025-01-15T11:00:00.000Z",
"completionRunId": "b83b1558-de5b-4e45-b517-7bececbdd154",
"workflowRunId": null,
"sourceType": "prompt",
"agentId": null,
"agentRef": null,
"agentSessionId": null,
"promptVersionId": "76065caa-c519-441a-8fe2-cc43e29664ab",
"promptApplicationId": "95cec438-6080-44fe-8275-28b16bd40178",
"workspaceId": "3f55cfd9-4427-4887-a181-d9ad39967802",
"metadata": null,
"tags": [
"priority"
],
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T11:00:00.000Z",
"deletedAt": null
}
],
"meta": {
"totalCount": 142,
"limit": 10,
"offset": 0,
"currentPage": 1,
"totalPages": 15,
"lastReference": 142,
"links": {
"first": "?promptApplicationId=95cec438-6080-44fe-8275-28b16bd40178&limit=10&offset=0",
"last": "?promptApplicationId=95cec438-6080-44fe-8275-28b16bd40178&limit=10&offset=140",
"next": "?promptApplicationId=95cec438-6080-44fe-8275-28b16bd40178&limit=10&offset=10",
"previous": null
}
}
}List tasks
Returns a paginated list of tasks in the authenticated workspace. Soft-deleted tasks are never returned.
curl --request GET \
--url https://api.tela.com/task \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tela.com/task"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tela.com/task', 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://api.tela.com/task",
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://api.tela.com/task"
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://api.tela.com/task")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tela.com/task")
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{
"data": [
{
"id": "8b6d2c9a-1f4e-4c1b-9a1e-3c2d5e6f7a80",
"reference": 42,
"name": "Invoice-2025-001.pdf",
"status": "completed",
"rawInput": {
"application_id": "95cec438-6080-44fe-8275-28b16bd40178",
"variables": {
"document": {
"files": [
{
"file_url": "https://example.com/invoice.pdf",
"file_name": "Invoice-2025-001.pdf",
"mime_type": "application/pdf"
}
]
}
}
},
"inputContent": {
"variables": {
"document": {
"files": [
{
"file_url": "https://example.com/invoice.pdf",
"file_name": "Invoice-2025-001.pdf",
"mime_type": "application/pdf"
}
]
}
},
"messages": [],
"files": [
{
"name": "document",
"filename": "Invoice-2025-001.pdf",
"url": "https://example.com/invoice.pdf",
"usedAt": "variables",
"mimeType": "application/pdf"
}
]
},
"outputContent": {
"role": "assistant",
"content": {
"cliente": "Acme Corporation",
"valor": 150000
}
},
"originalOutputContent": {
"role": "assistant",
"content": {
"cliente": "Acme Corporation",
"valor": 150000
}
},
"createdBy": "api@company.com",
"approvedBy": "reviewer@company.com",
"approvedAt": "2025-01-15T11:00:00.000Z",
"completionRunId": "b83b1558-de5b-4e45-b517-7bececbdd154",
"workflowRunId": null,
"sourceType": "prompt",
"agentId": null,
"agentRef": null,
"agentSessionId": null,
"promptVersionId": "76065caa-c519-441a-8fe2-cc43e29664ab",
"promptApplicationId": "95cec438-6080-44fe-8275-28b16bd40178",
"workspaceId": "3f55cfd9-4427-4887-a181-d9ad39967802",
"metadata": null,
"tags": [
"priority"
],
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T11:00:00.000Z",
"deletedAt": null
}
],
"meta": {
"totalCount": 142,
"limit": 10,
"offset": 0,
"currentPage": 1,
"totalPages": 15,
"lastReference": 142,
"links": {
"first": "?promptApplicationId=95cec438-6080-44fe-8275-28b16bd40178&limit=10&offset=0",
"last": "?promptApplicationId=95cec438-6080-44fe-8275-28b16bd40178&limit=10&offset=140",
"next": "?promptApplicationId=95cec438-6080-44fe-8275-28b16bd40178&limit=10&offset=10",
"previous": null
}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Page size. Defaults to 10 and is clamped to the range 1–100.
1 <= x <= 100Number of tasks to skip. Defaults to 0.
x >= 0When true, meta.links.* are returned as objects ({ ...filters, limit, offset }) instead of query strings.
true, false JSON-encoded array of statuses, e.g. ["completed","failed"]. The raw value is passed through JSON.parse, so it must be valid JSON.
[DEPRECATED] Alias for approvedAtSince. Ignored when approvedAtSince is also provided.
[DEPRECATED] Alias for approvedAtUntil. Ignored when approvedAtUntil is also provided.
Lower bound (inclusive) on approvedAt. Any value accepted by JavaScript new Date() (ISO 8601 recommended).
Upper bound (inclusive) on approvedAt.
Lower bound (inclusive) on createdAt.
Upper bound (inclusive) on createdAt.
Lower bound (inclusive) on updatedAt.
Upper bound (inclusive) on updatedAt.
Approver emails to match. Declared as an array in the route schema; repeat the parameter to pass several values (approvedBy=a@x.com&approvedBy=b@x.com). Whether a comma-separated single value is also accepted depends on the framework query parser and was not verified.
Creator emails to match. Same encoding rules as approvedBy.
Restrict to tasks of this Workstation/App (sourceType: prompt). The app must be accessible to the caller (404 otherwise). Cannot be combined with agentId.
Restrict to tasks of this agent (sourceType: agent). Cannot be combined with promptApplicationId.
Restrict to tasks executed with this Canvas version. The version must be accessible to the caller (404 otherwise).
Restrict to tasks linked to this completion run.
Sort field. Either a single field name or a JSON-encoded array of field names for multi-column sorting, e.g. ["status","createdAt"]. Defaults to updatedAt. Allowed values: name, reference, approvedAt, createdAt, updatedAt, id, status, approvedBy, createdBy. status sorts by lifecycle order rather than alphabetically.
Sort direction. Defaults to desc.
asc, desc JSON-encoded array of task IDs to return, e.g. ["<uuid>","<uuid>"].
Case-insensitive substring match on the task name.
When true, omits rawInput, inputContent and originalOutputContent from each task and adds a lightweight inputFiles summary instead (unless excludeInputFiles is also true).
Only meaningful together with excludeInputOutputColumns=true; suppresses the inputFiles summary.
When true, omits outputContent from each task.
Tags the task must contain (all of them). Accepts either a JSON-encoded array (["a","b"]) or a comma-separated list (a,b). Values are trimmed and de-duplicated.