curl --request POST \
--url https://api.folk.app/v1/tasks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"entity": {
"id": "per_55175e81-9a52-4ac3-930e-82792c23499b"
},
"title": "Follow up with John Doe",
"dueAt": "2025-07-17",
"dueTime": "15:00",
"description": "Discuss the Q3 proposal.",
"completedAt": "2025-07-17T09:00:00.000Z",
"assignedUsers": [
{
"id": "<string>",
"email": "<string>"
}
],
"isPublic": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
entity: {id: 'per_55175e81-9a52-4ac3-930e-82792c23499b'},
title: 'Follow up with John Doe',
dueAt: '2025-07-17',
dueTime: '15:00',
description: 'Discuss the Q3 proposal.',
completedAt: '2025-07-17T09:00:00.000Z',
assignedUsers: [{id: '<string>', email: '<string>'}],
isPublic: true
})
};
fetch('https://api.folk.app/v1/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.folk.app/v1/tasks"
payload = {
"entity": { "id": "per_55175e81-9a52-4ac3-930e-82792c23499b" },
"title": "Follow up with John Doe",
"dueAt": "2025-07-17",
"dueTime": "15:00",
"description": "Discuss the Q3 proposal.",
"completedAt": "2025-07-17T09:00:00.000Z",
"assignedUsers": [
{
"id": "<string>",
"email": "<string>"
}
],
"isPublic": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)require 'uri'
require 'net/http'
url = URI("https://api.folk.app/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 \"entity\": {\n \"id\": \"per_55175e81-9a52-4ac3-930e-82792c23499b\"\n },\n \"title\": \"Follow up with John Doe\",\n \"dueAt\": \"2025-07-17\",\n \"dueTime\": \"15:00\",\n \"description\": \"Discuss the Q3 proposal.\",\n \"completedAt\": \"2025-07-17T09:00:00.000Z\",\n \"assignedUsers\": [\n {\n \"id\": \"<string>\",\n \"email\": \"<string>\"\n }\n ],\n \"isPublic\": true\n}"
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.folk.app/v1/tasks"
payload := strings.NewReader("{\n \"entity\": {\n \"id\": \"per_55175e81-9a52-4ac3-930e-82792c23499b\"\n },\n \"title\": \"Follow up with John Doe\",\n \"dueAt\": \"2025-07-17\",\n \"dueTime\": \"15:00\",\n \"description\": \"Discuss the Q3 proposal.\",\n \"completedAt\": \"2025-07-17T09:00:00.000Z\",\n \"assignedUsers\": [\n {\n \"id\": \"<string>\",\n \"email\": \"<string>\"\n }\n ],\n \"isPublic\": true\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.folk.app/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([
'entity' => [
'id' => 'per_55175e81-9a52-4ac3-930e-82792c23499b'
],
'title' => 'Follow up with John Doe',
'dueAt' => '2025-07-17',
'dueTime' => '15:00',
'description' => 'Discuss the Q3 proposal.',
'completedAt' => '2025-07-17T09:00:00.000Z',
'assignedUsers' => [
[
'id' => '<string>',
'email' => '<string>'
]
],
'isPublic' => true
]),
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;
}{
"data": {
"id": "tsk_91118b73-5a75-480b-b8e3-a33671c35cdc",
"title": "Follow up with John Doe",
"description": "Discuss the Q3 proposal.",
"entity": {
"id": "per_55175e81-9a52-4ac3-930e-82792c23499b",
"entityType": "person",
"fullName": "John Doe"
},
"dueAt": "2025-07-17",
"dueTime": "15:00",
"completedAt": null,
"recurrenceFrequency": null,
"isPublic": true,
"assignedUsers": [
{
"id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"fullName": "John Doe",
"email": "john.doe@example.com"
}
],
"createdBy": {
"id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"fullName": "John Doe",
"email": "john.doe@example.com"
},
"createdAt": "2025-07-17T09:00:00.000Z",
"updatedAt": "2025-07-17T09:00:00.000Z"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "The request was invalid.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#bad-request",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "No valid API key provided.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unauthorized",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "The API key doesn’t have permissions to perform the request.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#forbidden",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "The requested resource was not found.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#not-found",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNPROCESSABLE_ENTITY",
"message": "Invalid query parameters",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unprocessable-entity",
"details": {
"issues": [
{
"code": "too_small",
"minimum": 1,
"type": "number",
"inclusive": true,
"exact": false,
"message": "Number must be greater than or equal to 1",
"path": [
"limit"
]
}
]
},
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "The rate limit has been exceeded.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#rate-limiting",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z",
"details": {
"limit": 1000,
"remaining": 0,
"retryAfter": "2025-10-01T12:00:00Z"
}
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An internal server error occurred.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#internal-server-error",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "The service is currently unavailable.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#service-unavailable",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}Create a task
Create a new task in the workspace.
curl --request POST \
--url https://api.folk.app/v1/tasks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"entity": {
"id": "per_55175e81-9a52-4ac3-930e-82792c23499b"
},
"title": "Follow up with John Doe",
"dueAt": "2025-07-17",
"dueTime": "15:00",
"description": "Discuss the Q3 proposal.",
"completedAt": "2025-07-17T09:00:00.000Z",
"assignedUsers": [
{
"id": "<string>",
"email": "<string>"
}
],
"isPublic": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
entity: {id: 'per_55175e81-9a52-4ac3-930e-82792c23499b'},
title: 'Follow up with John Doe',
dueAt: '2025-07-17',
dueTime: '15:00',
description: 'Discuss the Q3 proposal.',
completedAt: '2025-07-17T09:00:00.000Z',
assignedUsers: [{id: '<string>', email: '<string>'}],
isPublic: true
})
};
fetch('https://api.folk.app/v1/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.folk.app/v1/tasks"
payload = {
"entity": { "id": "per_55175e81-9a52-4ac3-930e-82792c23499b" },
"title": "Follow up with John Doe",
"dueAt": "2025-07-17",
"dueTime": "15:00",
"description": "Discuss the Q3 proposal.",
"completedAt": "2025-07-17T09:00:00.000Z",
"assignedUsers": [
{
"id": "<string>",
"email": "<string>"
}
],
"isPublic": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)require 'uri'
require 'net/http'
url = URI("https://api.folk.app/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 \"entity\": {\n \"id\": \"per_55175e81-9a52-4ac3-930e-82792c23499b\"\n },\n \"title\": \"Follow up with John Doe\",\n \"dueAt\": \"2025-07-17\",\n \"dueTime\": \"15:00\",\n \"description\": \"Discuss the Q3 proposal.\",\n \"completedAt\": \"2025-07-17T09:00:00.000Z\",\n \"assignedUsers\": [\n {\n \"id\": \"<string>\",\n \"email\": \"<string>\"\n }\n ],\n \"isPublic\": true\n}"
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.folk.app/v1/tasks"
payload := strings.NewReader("{\n \"entity\": {\n \"id\": \"per_55175e81-9a52-4ac3-930e-82792c23499b\"\n },\n \"title\": \"Follow up with John Doe\",\n \"dueAt\": \"2025-07-17\",\n \"dueTime\": \"15:00\",\n \"description\": \"Discuss the Q3 proposal.\",\n \"completedAt\": \"2025-07-17T09:00:00.000Z\",\n \"assignedUsers\": [\n {\n \"id\": \"<string>\",\n \"email\": \"<string>\"\n }\n ],\n \"isPublic\": true\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.folk.app/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([
'entity' => [
'id' => 'per_55175e81-9a52-4ac3-930e-82792c23499b'
],
'title' => 'Follow up with John Doe',
'dueAt' => '2025-07-17',
'dueTime' => '15:00',
'description' => 'Discuss the Q3 proposal.',
'completedAt' => '2025-07-17T09:00:00.000Z',
'assignedUsers' => [
[
'id' => '<string>',
'email' => '<string>'
]
],
'isPublic' => true
]),
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;
}{
"data": {
"id": "tsk_91118b73-5a75-480b-b8e3-a33671c35cdc",
"title": "Follow up with John Doe",
"description": "Discuss the Q3 proposal.",
"entity": {
"id": "per_55175e81-9a52-4ac3-930e-82792c23499b",
"entityType": "person",
"fullName": "John Doe"
},
"dueAt": "2025-07-17",
"dueTime": "15:00",
"completedAt": null,
"recurrenceFrequency": null,
"isPublic": true,
"assignedUsers": [
{
"id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"fullName": "John Doe",
"email": "john.doe@example.com"
}
],
"createdBy": {
"id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c",
"fullName": "John Doe",
"email": "john.doe@example.com"
},
"createdAt": "2025-07-17T09:00:00.000Z",
"updatedAt": "2025-07-17T09:00:00.000Z"
}
}{
"error": {
"code": "INVALID_REQUEST",
"message": "The request was invalid.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#bad-request",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "No valid API key provided.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unauthorized",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "The API key doesn’t have permissions to perform the request.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#forbidden",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "The requested resource was not found.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#not-found",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "UNPROCESSABLE_ENTITY",
"message": "Invalid query parameters",
"documentationUrl": "https://developer.folk.app/api-reference/errors#unprocessable-entity",
"details": {
"issues": [
{
"code": "too_small",
"minimum": 1,
"type": "number",
"inclusive": true,
"exact": false,
"message": "Number must be greater than or equal to 1",
"path": [
"limit"
]
}
]
},
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "The rate limit has been exceeded.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#rate-limiting",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z",
"details": {
"limit": 1000,
"remaining": 0,
"retryAfter": "2025-10-01T12:00:00Z"
}
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An internal server error occurred.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#internal-server-error",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "The service is currently unavailable.",
"documentationUrl": "https://developer.folk.app/api-reference/errors#service-unavailable",
"requestId": "123e4567-e89b-12d3-a456-426614174000",
"timestamp": "2025-10-01T12:00:00Z"
}
}Authorizations
API key for authentication
Body
The entity connected to the task. You can link people, companies and deals.
Show child attributes
Show child attributes
{ "id": "per_55175e81-9a52-4ac3-930e-82792c23499b" }
The title of the task.
255"Follow up with John Doe"
The due date of the task, in YYYY-MM-DD format.
10"2025-07-17"
The due time of the task, in HH:mm format.
5"15:00"
The description of the task, in markdown format.
10000"Discuss the Q3 proposal."
The recurrence frequency of the task. One of: weekday, weekly, biweekly, monthly, quarterly, yearly. Null if non-recurring.
weekday, weekly, biweekly, monthly, quarterly, yearly, null The date and time the task was completed, or null if not yet completed.
30"2025-07-17T09:00:00.000Z"
Users to assign to this task. Accepts user IDs or emails, not both. If omitted, the task is assigned to the current user (the API key owner).
50Show child attributes
Show child attributes
Whether the task is visible to all workspace members (true) or only to its assigned users (false).
true
Response
The task created in the workspace.
A task created by a user.
Show child attributes
Show child attributes
{ "id": "tsk_91118b73-5a75-480b-b8e3-a33671c35cdc", "title": "Follow up with John Doe", "description": "Discuss the Q3 proposal.", "entity": { "id": "per_55175e81-9a52-4ac3-930e-82792c23499b", "entityType": "person", "fullName": "John Doe" }, "dueAt": "2025-07-17", "dueTime": "15:00", "completedAt": null, "recurrenceFrequency": null, "isPublic": true, "assignedUsers": [ { "id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c", "fullName": "John Doe", "email": "john.doe@example.com" } ], "createdBy": { "id": "usr_14c18444-a0c7-459a-86b0-ccd70ebcd65c", "fullName": "John Doe", "email": "john.doe@example.com" }, "createdAt": "2025-07-17T09:00:00.000Z", "updatedAt": "2025-07-17T09:00:00.000Z" }
["This field is deprecated"]