Tasks
Update task
Updates one or more fields of a task. Only the fields you include are changed.
PATCH
/
api
/
v1
/
tasks
/
{id}
Update task
curl --request PATCH \
--url https://api.getarca.app/api/v1/tasks/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"list_id": "<string>",
"due_date": {},
"start_date": {},
"assignee_ids": [
{}
],
"custom_fields": [
{}
]
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
list_id: '<string>',
due_date: {},
start_date: {},
assignee_ids: [{}],
custom_fields: [{}]
})
};
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: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
list_id: '<string>',
due_date: {},
start_date: {},
assignee_ids: [{}],
custom_fields: [{}]
})
};
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: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
list_id: '<string>',
due_date: {},
start_date: {},
assignee_ids: [{}],
custom_fields: [{}]
})
};
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}"
payload = {
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"list_id": "<string>",
"due_date": {},
"start_date": {},
"assignee_ids": [{}],
"custom_fields": [{}]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getarca.app/api/v1/tasks/{id}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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 => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>',
'description' => '<string>',
'priority' => '<string>',
'status_id' => '<string>',
'list_id' => '<string>',
'due_date' => [
],
'start_date' => [
],
'assignee_ids' => [
[
]
],
'custom_fields' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.patch("https://api.getarca.app/api/v1/tasks/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
.asString();import Foundation
let parameters = [
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"list_id": "<string>",
"due_date": [],
"start_date": [],
"assignee_ids": [[]],
"custom_fields": [[]]
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.getarca.app/api/v1/tasks/{id}")!
var request = URLRequest(url: url)
request.httpMethod = "PATCH"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
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>");
request.AddJsonBody("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "PATCH");
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>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}");
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "PATCH");
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>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}");
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>");
request.AddJsonBody("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
val request = Request.Builder()
.url("https://api.getarca.app/api/v1/tasks/{id}")
.patch(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute(){
"id": 110,
"workspace_id": 3,
"list_id": 20,
"title": "Write unit tests",
"description": "<p>Cover all service layer methods.</p>",
"priority": "urgent",
"identifier": 14,
"due_date": "2026-03-22T09:00:00.000Z",
"start_date": null,
"creator_id": 1,
"created_at": "2026-03-18T18:00:00.000Z",
"status": {
"id": 1,
"name": "To Do",
"icon": "todo",
"color": "gray",
"category": "pending"
},
"assignees": [
{
"id": 7,
"name": "Alice",
"avatar_url": null
}
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Starter"
}
]
}
{
"error": "Invalid priority. Must be one of: urgent, high, medium, low, none"
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:write' is required for this endpoint"
}
{
"error": "Task not found"
}
Requires the
tasks:write scope. Viewers cannot edit tasks. Access-restricted
members receive 403 if the task belongs to, or is being moved to, a list
outside their permitted scope.Path parameters
string
required
The numeric task ID.
Request body
All fields are optional. Send only the fields you want to update.string
New task title. Cannot be set to an empty string.
string
Task description as an HTML string.
string
Task priority. Must be one of
urgent, high, medium, low, or none.string
Numeric ID of a workspace status to apply. The status must belong to the same
workspace.
string
Numeric ID of a list to move the task into. The list must belong to the same
workspace.
string | null
Due date in ISO 8601 UTC format (e.g.,
"2026-03-30T17:00:00Z"). Pass null or an empty string to remove the due date.string | null
Start date in ISO 8601 UTC format. Pass
null or an empty string to remove the start date.array
Array of numeric user IDs to assign to the task. Replaces the current
assignees entirely. Pass an empty array to remove all assignees. Omit this
field to leave the current assignees unchanged. All IDs must be members of the
same workspace; non-member IDs are silently ignored.
array
Optional array of custom field values to update. Each entry must contain a numeric
id and a string value (or null to clear that field’s value). Omitting this field entirely leaves all custom field values unchanged. Only fields that apply to the task’s list and are visible to the API key user are processed; other fields are silently ignored."custom_fields": [
{ "id": 1, "value": "Starter" },
{ "id": 2, "value": null }
]
Response
Returns the full updated task including its current assignees.number
required
Task identifier.
number
required
Workspace this task belongs to.
number | null
List this task belongs to.
string
required
Task title.
string | null
Task description.
string
required
Task priority.
number
required
Workspace-scoped sequential task number.
string | null
UTC ISO-8601 due date.
string | null
UTC ISO-8601 start date.
number
required
User ID of the task creator.
string
required
UTC ISO-8601 creation timestamp.
object | null
array
required
array
required
Custom fields that apply to the task’s list, each with its current value after the update.
Fields the user does not have access to 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.{
"id": 110,
"workspace_id": 3,
"list_id": 20,
"title": "Write unit tests",
"description": "<p>Cover all service layer methods.</p>",
"priority": "urgent",
"identifier": 14,
"due_date": "2026-03-22T09:00:00.000Z",
"start_date": null,
"creator_id": 1,
"created_at": "2026-03-18T18:00:00.000Z",
"status": {
"id": 1,
"name": "To Do",
"icon": "todo",
"color": "gray",
"category": "pending"
},
"assignees": [
{
"id": 7,
"name": "Alice",
"avatar_url": null
}
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Starter"
}
]
}
{
"error": "Invalid priority. Must be one of: urgent, high, medium, low, none"
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:write' is required for this endpoint"
}
{
"error": "Task not found"
}
Was this page helpful?
⌘I
Update task
curl --request PATCH \
--url https://api.getarca.app/api/v1/tasks/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"list_id": "<string>",
"due_date": {},
"start_date": {},
"assignee_ids": [
{}
],
"custom_fields": [
{}
]
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
list_id: '<string>',
due_date: {},
start_date: {},
assignee_ids: [{}],
custom_fields: [{}]
})
};
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: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
list_id: '<string>',
due_date: {},
start_date: {},
assignee_ids: [{}],
custom_fields: [{}]
})
};
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: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
list_id: '<string>',
due_date: {},
start_date: {},
assignee_ids: [{}],
custom_fields: [{}]
})
};
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}"
payload = {
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"list_id": "<string>",
"due_date": {},
"start_date": {},
"assignee_ids": [{}],
"custom_fields": [{}]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.getarca.app/api/v1/tasks/{id}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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 => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>',
'description' => '<string>',
'priority' => '<string>',
'status_id' => '<string>',
'list_id' => '<string>',
'due_date' => [
],
'start_date' => [
],
'assignee_ids' => [
[
]
],
'custom_fields' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.patch("https://api.getarca.app/api/v1/tasks/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
.asString();import Foundation
let parameters = [
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"list_id": "<string>",
"due_date": [],
"start_date": [],
"assignee_ids": [[]],
"custom_fields": [[]]
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.getarca.app/api/v1/tasks/{id}")!
var request = URLRequest(url: url)
request.httpMethod = "PATCH"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
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>");
request.AddJsonBody("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "PATCH");
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>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}");
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "PATCH");
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>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}");
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>");
request.AddJsonBody("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"list_id\": \"<string>\",\n \"due_date\": {},\n \"start_date\": {},\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
val request = Request.Builder()
.url("https://api.getarca.app/api/v1/tasks/{id}")
.patch(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute(){
"id": 110,
"workspace_id": 3,
"list_id": 20,
"title": "Write unit tests",
"description": "<p>Cover all service layer methods.</p>",
"priority": "urgent",
"identifier": 14,
"due_date": "2026-03-22T09:00:00.000Z",
"start_date": null,
"creator_id": 1,
"created_at": "2026-03-18T18:00:00.000Z",
"status": {
"id": 1,
"name": "To Do",
"icon": "todo",
"color": "gray",
"category": "pending"
},
"assignees": [
{
"id": 7,
"name": "Alice",
"avatar_url": null
}
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Starter"
}
]
}
{
"error": "Invalid priority. Must be one of: urgent, high, medium, low, none"
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:write' is required for this endpoint"
}
{
"error": "Task not found"
}