Tasks
List tasks
Returns a paginated list of top-level tasks in a workspace, ordered by creation date (newest first).
GET
/
api
/
v1
/
workspaces
/
{id}
/
tasks
List tasks
curl --request GET \
--url https://api.getarca.app/api/v1/workspaces/{id}/tasks \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getarca.app/api/v1/workspaces/{id}/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getarca.app/api/v1/workspaces/{id}/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://api.getarca.app/api/v1/workspaces/{id}/tasks';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://api.getarca.app/api/v1/workspaces/{id}/tasks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getarca.app/api/v1/workspaces/{id}/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))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getarca.app/api/v1/workspaces/{id}/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;
}falsefalserequire 'uri'
require 'net/http'
url = URI("https://api.getarca.app/api/v1/workspaces/{id}/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_bodyHttpResponse<String> response = Unirest.get("https://api.getarca.app/api/v1/workspaces/{id}/tasks")
.header("Authorization", "Bearer <token>")
.asString();import Foundation
let url = URL(string: "https://api.getarca.app/api/v1/workspaces/{id}/tasks")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["Authorization": "Bearer <token>"]
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.getarca.app/api/v1/workspaces/{id}/tasks");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.getarca.app/api/v1/workspaces/{id}/tasks");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.getarca.app/api/v1/workspaces/{id}/tasks");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);using RestSharp;
var options = new RestClientOptions("https://api.getarca.app/api/v1/workspaces/{id}/tasks");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.getarca.app/api/v1/workspaces/{id}/tasks")
.get()
.addHeader("Authorization", "Bearer <token>")
.build()
val response = client.newCall(request).execute(){
"data": [
{
"id": 101,
"workspace_id": 3,
"list_id": 20,
"title": "Set up CI pipeline",
"priority": "high",
"identifier": 5,
"due_date": "2026-03-25T00:00:00.000Z",
"start_date": null,
"creator_id": 1,
"created_at": "2026-03-10T14:22:00.000Z",
"status": {
"id": 2,
"name": "In Progress",
"icon": "in-progress",
"color": "blue",
"category": "in_progress"
},
"assignees": [
{
"id": 7,
"name": "Bob",
"avatar_url": "https://cdn.example.com/avatars/bob.png"
}
],
"subtasks": [
{
"id": 102,
"title": "Write unit tests",
"priority": "medium",
"identifier": 6,
"status": {
"id": 1,
"name": "Backlog",
"icon": null,
"color": "gray",
"category": "pending"
},
"assignees": []
}
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Pro"
}
]
}
],
"page": 1,
"limit": 20,
"total": 1,
"total_pages": 1
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:read' is required for this endpoint"
}
{
"error": "Workspace not found"
}
Requires the
tasks:read scope. You must be a member of the workspace.
Access-restricted members only receive tasks in their permitted lists. Passing
a list_id for an inaccessible list returns 403.This endpoint returns top-level tasks only. Each task includes its direct
subtasks inline in the
subtasks array.Path parameters
string
required
The numeric workspace ID.
Query parameters
string
Filter results to a specific list. If omitted, tasks from all lists are
returned.
number
default:"1"
Page number (1-based).
number
default:"50"
Number of tasks per page. Minimum
1, maximum 100.Response
array
required
Array of task objects.
Show Task object fields
Show Task object fields
number
required
Task identifier.
number
required
Workspace this task belongs to.
number | null
List this task belongs to.
null if the task is not in a list.string
required
Task title.
string
required
Task priority. One of
urgent, high, medium, low, or none.number
required
Workspace-scoped sequential task number (e.g.,
1, 2, 3).string | null
UTC ISO-8601 due date.
null if not set.string | null
UTC ISO-8601 start date.
null if not set.number
required
User ID of the person who created the task.
string
required
UTC ISO-8601 creation timestamp.
object | null
Current task status.
null if no status is assigned.array
required
array
required
Direct subtasks of this task. Empty array if none.
Show Subtask fields
Show Subtask fields
number
required
Subtask identifier.
string
required
Subtask title.
string
required
Subtask priority.
number
required
Workspace-scoped sequential task number.
object | null
Current status of the subtask. Same shape as the parent task status.
array
required
Users assigned to the subtask. Same shape as the parent task assignees.
array
required
Custom fields that apply to each task’s list, each with its current value. Fields restricted to other lists or folders are not returned.
Show Custom field entry
Show Custom field entry
number
required
Custom field identifier.
string
required
Custom field name (e.g.,
"Customer Tier").string
required
Field type. One of
text, number, date, checkbox, rating, dropdown, money, or people.object | null
Type-specific configuration.For example:
ratingfields includeiconandcolor;dropdownfields include anoptionsarray of strings;moneyfields includecurrencyanddecimals.
null for field types with no configuration (which are text, number, date, checkbox and people).number
required
Sort position of the field within the workspace.
string | null
The task’s value for this field.
null when no value has been set.number
required
Current page number.
number
required
Number of tasks per page used for this response.
number
required
Total number of matching tasks across all pages.
number
required
Total number of pages.
{
"data": [
{
"id": 101,
"workspace_id": 3,
"list_id": 20,
"title": "Set up CI pipeline",
"priority": "high",
"identifier": 5,
"due_date": "2026-03-25T00:00:00.000Z",
"start_date": null,
"creator_id": 1,
"created_at": "2026-03-10T14:22:00.000Z",
"status": {
"id": 2,
"name": "In Progress",
"icon": "in-progress",
"color": "blue",
"category": "in_progress"
},
"assignees": [
{
"id": 7,
"name": "Bob",
"avatar_url": "https://cdn.example.com/avatars/bob.png"
}
],
"subtasks": [
{
"id": 102,
"title": "Write unit tests",
"priority": "medium",
"identifier": 6,
"status": {
"id": 1,
"name": "Backlog",
"icon": null,
"color": "gray",
"category": "pending"
},
"assignees": []
}
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Pro"
}
]
}
],
"page": 1,
"limit": 20,
"total": 1,
"total_pages": 1
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:read' is required for this endpoint"
}
{
"error": "Workspace not found"
}
Was this page helpful?
⌘I
List tasks
curl --request GET \
--url https://api.getarca.app/api/v1/workspaces/{id}/tasks \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getarca.app/api/v1/workspaces/{id}/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getarca.app/api/v1/workspaces/{id}/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://api.getarca.app/api/v1/workspaces/{id}/tasks';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://api.getarca.app/api/v1/workspaces/{id}/tasks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.getarca.app/api/v1/workspaces/{id}/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))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.getarca.app/api/v1/workspaces/{id}/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;
}falsefalserequire 'uri'
require 'net/http'
url = URI("https://api.getarca.app/api/v1/workspaces/{id}/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_bodyHttpResponse<String> response = Unirest.get("https://api.getarca.app/api/v1/workspaces/{id}/tasks")
.header("Authorization", "Bearer <token>")
.asString();import Foundation
let url = URL(string: "https://api.getarca.app/api/v1/workspaces/{id}/tasks")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.timeoutInterval = 10
request.allHTTPHeaderFields = ["Authorization": "Bearer <token>"]
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.getarca.app/api/v1/workspaces/{id}/tasks");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.getarca.app/api/v1/workspaces/{id}/tasks");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.getarca.app/api/v1/workspaces/{id}/tasks");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);using RestSharp;
var options = new RestClientOptions("https://api.getarca.app/api/v1/workspaces/{id}/tasks");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.getarca.app/api/v1/workspaces/{id}/tasks")
.get()
.addHeader("Authorization", "Bearer <token>")
.build()
val response = client.newCall(request).execute(){
"data": [
{
"id": 101,
"workspace_id": 3,
"list_id": 20,
"title": "Set up CI pipeline",
"priority": "high",
"identifier": 5,
"due_date": "2026-03-25T00:00:00.000Z",
"start_date": null,
"creator_id": 1,
"created_at": "2026-03-10T14:22:00.000Z",
"status": {
"id": 2,
"name": "In Progress",
"icon": "in-progress",
"color": "blue",
"category": "in_progress"
},
"assignees": [
{
"id": 7,
"name": "Bob",
"avatar_url": "https://cdn.example.com/avatars/bob.png"
}
],
"subtasks": [
{
"id": 102,
"title": "Write unit tests",
"priority": "medium",
"identifier": 6,
"status": {
"id": 1,
"name": "Backlog",
"icon": null,
"color": "gray",
"category": "pending"
},
"assignees": []
}
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Pro"
}
]
}
],
"page": 1,
"limit": 20,
"total": 1,
"total_pages": 1
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:read' is required for this endpoint"
}
{
"error": "Workspace not found"
}