List task categorys
curl --request GET \
--url https://www.ruddr.io/api/workspace/task-categories \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/task-categories"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.ruddr.io/api/workspace/task-categories', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.ruddr.io/api/workspace/task-categories",
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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.ruddr.io/api/workspace/task-categories"
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))
}HttpResponse<String> response = Unirest.get("https://www.ruddr.io/api/workspace/task-categories")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/task-categories")
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_body{
"results": [
{
"id": "c7e2f4a1-9b38-4d65-8c17-3a5f1e2d4b96",
"name": "Standard Task",
"type": "standard",
"icon": "file-alt",
"color": "grey",
"isActive": true,
"isDefault": true,
"createdAt": "2026-03-18T10:15:22.741Z"
}
],
"hasMore": true
}{
"status": 400,
"message": "Parameter 'startingAfter' is not a valid UUID."
}Task Categories
List task categorys
GET
/
task-categories
List task categorys
curl --request GET \
--url https://www.ruddr.io/api/workspace/task-categories \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.ruddr.io/api/workspace/task-categories"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.ruddr.io/api/workspace/task-categories', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.ruddr.io/api/workspace/task-categories",
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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.ruddr.io/api/workspace/task-categories"
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))
}HttpResponse<String> response = Unirest.get("https://www.ruddr.io/api/workspace/task-categories")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.ruddr.io/api/workspace/task-categories")
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_body{
"results": [
{
"id": "c7e2f4a1-9b38-4d65-8c17-3a5f1e2d4b96",
"name": "Standard Task",
"type": "standard",
"icon": "file-alt",
"color": "grey",
"isActive": true,
"isDefault": true,
"createdAt": "2026-03-18T10:15:22.741Z"
}
],
"hasMore": true
}{
"status": 400,
"message": "Parameter 'startingAfter' is not a valid UUID."
}A classification applied to project tasks that determines their behavior.
standard categories represent regular tasks, while rollup categories act as containers whose budgets and rollups derive from their descendant standard tasks.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
A cursor ID (uuid) used to request the next page of results. If not provided, defaults to the first page of results.
A cursor ID (uuid) used to request the previous page of results. Is mutually exclusive with startingAfter.
The maximum number of results to be returned. Can be any number from 1 to 100. Defaults to 10, if not provided.
Filter by task category name when it exactly matches the provided keyword.