Tasks
Get task
Returns a single task with full details including its status, assignees, labels, and attachments.
GET
/
api
/
v1
/
tasks
/
{id}
Get task
curl --request GET \
--url https://api.getarca.app/api/v1/tasks/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getarca.app/api/v1/tasks/{id}', 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/tasks/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://api.getarca.app/api/v1/tasks/{id}';
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/tasks/{id}"
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/tasks/{id}"
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/tasks/{id}",
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/tasks/{id}")
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/tasks/{id}")
.header("Authorization", "Bearer <token>")
.asString();import Foundation
let url = URL(string: "https://api.getarca.app/api/v1/tasks/{id}")!
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/tasks/{id}");
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/tasks/{id}");
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/tasks/{id}");
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/tasks/{id}");
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/tasks/{id}")
.get()
.addHeader("Authorization", "Bearer <token>")
.build()
val response = client.newCall(request).execute(){
"id": 101,
"workspace_id": 3,
"list_id": 20,
"title": "Set up CI pipeline",
"description": "<p>Use GitHub Actions for the build pipeline.</p>",
"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"
}
],
"labels": [
{
"id": 2,
"name": "Backend",
"color": "purple"
}
],
"subtasks": [
{
"id": 102,
"title": "Write unit tests",
"priority": "medium",
"identifier": 6,
"status": {
"id": 1,
"name": "Backlog",
"icon": null,
"color": "gray",
"category": "pending"
},
"assignees": []
}
],
"attachments": [
{
"id": 4,
"file_name": "diagram.png",
"file_size": 204800,
"mime_type": "image/png",
"created_at": "2026-03-11T09:00:00.000Z",
"uploader": {
"id": 1,
"name": "Alice",
"avatar_url": null
}
}
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Pro"
},
{
"id": 2,
"name": "Story Points",
"type": "number",
"config": null,
"position": 2,
"value": null
}
]
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:read' is required for this endpoint"
}
{
"error": "Task not found"
}
Requires the
tasks:read scope. You must be a member of the task’s workspace.
Access-restricted members receive 403 if the task belongs to a list outside
their permitted scope.Path parameters
string
required
The numeric task ID.
Response
number
required
Task identifier.
number
required
Workspace this task belongs to.
number | null
List this task belongs to.
null if not in a list.string
required
Task title.
string | null
Task description as an HTML string.
null if not set.string
required
Task priority. One of
urgent, high, medium, low, or none.number
required
Workspace-scoped sequential task number.
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 task creator.
string
required
UTC ISO-8601 creation timestamp.
object | null
Current task status.
null if no status is assigned.array
required
array
required
array
required
Direct subtasks of this task. Empty array if the task has no subtasks.
Show Subtask fields
Show Subtask fields
number
required
Subtask identifier.
string
required
Subtask title.
string
required
Subtask priority. One of
urgent, high, medium, low, or none.number
required
Workspace-scoped sequential task number.
object | null
Current status of the subtask.
null if no status is assigned. Same shape as the parent task status field.array
required
Users assigned to the subtask. Same shape as the parent task
assignees array.array
required
Confirmed file attachments on the task. Empty array if none.
Show Attachment fields
Show Attachment fields
number
required
Attachment identifier.
string
required
Original file name.
number
required
File size in bytes.
string
required
MIME type (e.g.,
"image/png").string
required
UTC ISO-8601 upload timestamp.
array
required
Custom fields that apply to this task’s list, each with its current value. Fields restricted to other lists or folders are not returned. Fields the user does not have access to are also omitted.
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.{
"id": 101,
"workspace_id": 3,
"list_id": 20,
"title": "Set up CI pipeline",
"description": "<p>Use GitHub Actions for the build pipeline.</p>",
"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"
}
],
"labels": [
{
"id": 2,
"name": "Backend",
"color": "purple"
}
],
"subtasks": [
{
"id": 102,
"title": "Write unit tests",
"priority": "medium",
"identifier": 6,
"status": {
"id": 1,
"name": "Backlog",
"icon": null,
"color": "gray",
"category": "pending"
},
"assignees": []
}
],
"attachments": [
{
"id": 4,
"file_name": "diagram.png",
"file_size": 204800,
"mime_type": "image/png",
"created_at": "2026-03-11T09:00:00.000Z",
"uploader": {
"id": 1,
"name": "Alice",
"avatar_url": null
}
}
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Pro"
},
{
"id": 2,
"name": "Story Points",
"type": "number",
"config": null,
"position": 2,
"value": null
}
]
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:read' is required for this endpoint"
}
{
"error": "Task not found"
}
Was this page helpful?
⌘I
Get task
curl --request GET \
--url https://api.getarca.app/api/v1/tasks/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.getarca.app/api/v1/tasks/{id}', 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/tasks/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://api.getarca.app/api/v1/tasks/{id}';
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/tasks/{id}"
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/tasks/{id}"
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/tasks/{id}",
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/tasks/{id}")
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/tasks/{id}")
.header("Authorization", "Bearer <token>")
.asString();import Foundation
let url = URL(string: "https://api.getarca.app/api/v1/tasks/{id}")!
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/tasks/{id}");
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/tasks/{id}");
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/tasks/{id}");
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/tasks/{id}");
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/tasks/{id}")
.get()
.addHeader("Authorization", "Bearer <token>")
.build()
val response = client.newCall(request).execute(){
"id": 101,
"workspace_id": 3,
"list_id": 20,
"title": "Set up CI pipeline",
"description": "<p>Use GitHub Actions for the build pipeline.</p>",
"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"
}
],
"labels": [
{
"id": 2,
"name": "Backend",
"color": "purple"
}
],
"subtasks": [
{
"id": 102,
"title": "Write unit tests",
"priority": "medium",
"identifier": 6,
"status": {
"id": 1,
"name": "Backlog",
"icon": null,
"color": "gray",
"category": "pending"
},
"assignees": []
}
],
"attachments": [
{
"id": 4,
"file_name": "diagram.png",
"file_size": 204800,
"mime_type": "image/png",
"created_at": "2026-03-11T09:00:00.000Z",
"uploader": {
"id": 1,
"name": "Alice",
"avatar_url": null
}
}
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Pro"
},
{
"id": 2,
"name": "Story Points",
"type": "number",
"config": null,
"position": 2,
"value": null
}
]
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:read' is required for this endpoint"
}
{
"error": "Task not found"
}