Tasks
Create task
Creates a new task in a workspace.
POST
/
api
/
v1
/
tasks
Create task
curl --request POST \
--url https://api.getarca.app/api/v1/tasks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"list_id": "<string>",
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"due_date": "<string>",
"start_date": "<string>",
"assignee_ids": [
{}
],
"custom_fields": [
{}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
list_id: '<string>',
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
due_date: '<string>',
start_date: '<string>',
assignee_ids: [{}],
custom_fields: [{}]
})
};
fetch('https://api.getarca.app/api/v1/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
list_id: '<string>',
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
due_date: '<string>',
start_date: '<string>',
assignee_ids: [{}],
custom_fields: [{}]
})
};
fetch('https://api.getarca.app/api/v1/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://api.getarca.app/api/v1/tasks';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
list_id: '<string>',
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
due_date: '<string>',
start_date: '<string>',
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"
payload = {
"list_id": "<string>",
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"due_date": "<string>",
"start_date": "<string>",
"assignee_ids": [{}],
"custom_fields": [{}]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(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"
payload := strings.NewReader("{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'list_id' => '<string>',
'title' => '<string>',
'description' => '<string>',
'priority' => '<string>',
'status_id' => '<string>',
'due_date' => '<string>',
'start_date' => '<string>',
'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")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.post("https://api.getarca.app/api/v1/tasks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
.asString();import Foundation
let parameters = [
"list_id": "<string>",
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"due_date": "<string>",
"start_date": "<string>",
"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")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
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");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.getarca.app/api/v1/tasks");
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 \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\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, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.getarca.app/api/v1/tasks");
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 \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\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");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
val request = Request.Builder()
.url("https://api.getarca.app/api/v1/tasks")
.post(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": "high",
"identifier": 14,
"due_date": "2026-03-30T17: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": "Jane Smith", "avatar_url": null }
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Pro"
}
]
}
{
"error": "list_id is required"
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:write' is required for this endpoint"
}
{
"error": "List not found in this workspace"
}
Requires the
tasks:write scope. Viewers cannot create tasks.
Access-restricted members receive 403 if the target list_id is outside
their permitted scope.Request body
string
required
Numeric ID of the list to place the task in.
string
required
Task title.
string
Optional task description. Accepts an HTML string.
string
default:"none"
Task priority. Must be one of
urgent, high, medium, low, or none.
Defaults to none if omitted.string
Numeric ID of the workspace status to apply. Must belong to the same
workspace. If omitted, the task is assigned the first status in the workspace
with the
pending category.string
Due date in ISO 8601 UTC format (e.g.,
"2026-03-25T17:00:00Z"). A string
without a timezone suffix is treated as UTC.string
Start date in ISO 8601 UTC format.
array
Optional array of numeric user IDs to assign to the task. All IDs must be
members of the workspace derived from
list_id. Invalid or non-member IDs are
silently ignored. Use GET /api/v1/workspaces/:id/members to resolve user IDs
before calling this endpoint.array
Optional array of custom field values to set on the new task. Each entry must contain a numeric
id and a string value (or null to clear). Only fields that apply to the task’s list and are visible to the API key user are applied; other fields are silently ignored."custom_fields": [
{ "id": 1, "value": "Pro" },
{ "id": 2, "value": "8" }
]
Response
Returns the created task. Theidentifier is a workspace-scoped sequential number auto-incremented from the last task in the workspace.
number
required
New task identifier.
number
required
Workspace this task belongs to.
number
required
List this task belongs to.
string
required
Task title.
string | null
Task description.
null if not provided.string
required
Task priority.
number
required
Auto-assigned 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 API key owner (the creator).
string
required
UTC ISO-8601 creation timestamp.
object | null
array
required
Array of assigned users. Each entry contains
id, name, and avatar_url.
Empty array if no assignee_ids were provided.array
required
Custom fields that apply to the new task’s list, each with its current value after creation.
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": "high",
"identifier": 14,
"due_date": "2026-03-30T17: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": "Jane Smith", "avatar_url": null }
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Pro"
}
]
}
{
"error": "list_id is required"
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:write' is required for this endpoint"
}
{
"error": "List not found in this workspace"
}
Was this page helpful?
⌘I
Create task
curl --request POST \
--url https://api.getarca.app/api/v1/tasks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"list_id": "<string>",
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"due_date": "<string>",
"start_date": "<string>",
"assignee_ids": [
{}
],
"custom_fields": [
{}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
list_id: '<string>',
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
due_date: '<string>',
start_date: '<string>',
assignee_ids: [{}],
custom_fields: [{}]
})
};
fetch('https://api.getarca.app/api/v1/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
list_id: '<string>',
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
due_date: '<string>',
start_date: '<string>',
assignee_ids: [{}],
custom_fields: [{}]
})
};
fetch('https://api.getarca.app/api/v1/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const url = 'https://api.getarca.app/api/v1/tasks';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
list_id: '<string>',
title: '<string>',
description: '<string>',
priority: '<string>',
status_id: '<string>',
due_date: '<string>',
start_date: '<string>',
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"
payload = {
"list_id": "<string>",
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"due_date": "<string>",
"start_date": "<string>",
"assignee_ids": [{}],
"custom_fields": [{}]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(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"
payload := strings.NewReader("{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'list_id' => '<string>',
'title' => '<string>',
'description' => '<string>',
'priority' => '<string>',
'status_id' => '<string>',
'due_date' => '<string>',
'start_date' => '<string>',
'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")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.post("https://api.getarca.app/api/v1/tasks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
.asString();import Foundation
let parameters = [
"list_id": "<string>",
"title": "<string>",
"description": "<string>",
"priority": "<string>",
"status_id": "<string>",
"due_date": "<string>",
"start_date": "<string>",
"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")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
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");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.getarca.app/api/v1/tasks");
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 \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\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, "POST");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.getarca.app/api/v1/tasks");
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 \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\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");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"list_id\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"priority\": \"<string>\",\n \"status_id\": \"<string>\",\n \"due_date\": \"<string>\",\n \"start_date\": \"<string>\",\n \"assignee_ids\": [\n {}\n ],\n \"custom_fields\": [\n {}\n ]\n}")
val request = Request.Builder()
.url("https://api.getarca.app/api/v1/tasks")
.post(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": "high",
"identifier": 14,
"due_date": "2026-03-30T17: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": "Jane Smith", "avatar_url": null }
],
"custom_fields": [
{
"id": 1,
"name": "Customer Tier",
"type": "dropdown",
"config": { "options": ["Free", "Starter", "Pro"] },
"position": 1,
"value": "Pro"
}
]
}
{
"error": "list_id is required"
}
{
"error": "Invalid API key"
}
{
"error": "Scope 'tasks:write' is required for this endpoint"
}
{
"error": "List not found in this workspace"
}