Krokanti Tasks API
Automate your task management workflow. Integrate Krokanti Tasks with your tools using personal API tokens and a simple REST API.
https://tasks.krokanti.com/api100 req/min per tokenPro or Team plan required
API access is available on Pro and Team plans. Generate your tokens in Settings → API Tokens.
Upgrade your plan →Authentication
All API requests must include an Authorization header with a personal API token. Generate tokens in Settings → API Tokens. Tokens start with kt_ and are shown once on creation.
curl https://tasks.krokanti.com/api/spaces
-H "Authorization: Bearer kt_your_token_here"
-H "Content-Type: application/json"Spaces
/api/spacesList all spaces the authenticated user belongs to.
- →Returns an array of space objects including personal space.
/api/spacesCreate a new team space.
| Parameter | Type | Description |
|---|---|---|
namerequired | string | Space display name. |
slugrequired | string | Unique URL-friendly identifier (3-50 chars, a-z 0-9 -). |
description | string | Optional description. |
color | string | Hex color for the space icon. |
- →The authenticated user becomes the space owner with Owner role.
- →A default General project with statuses is created automatically.
Projects
/api/projectsList all projects in a space.
| Parameter | Type | Description |
|---|---|---|
spaceIdrequired | string (UUID) | The space ID to list projects for. |
/api/projectsCreate a new project in a space.
| Parameter | Type | Description |
|---|---|---|
spaceIdrequired | string (UUID) | The space to create the project in. |
namerequired | string | Project display name. |
slugrequired | string | URL-friendly identifier, unique within the space. |
description | string | Optional description. |
defaultView | kanban | list | calendar | gantt | Default view mode. |
color | string | Hex color. |
- →Requires Owner, Admin, or Member role in the space.
- →Default Kanban statuses are created automatically.
/api/projects/:idUpdate project settings.
| Parameter | Type | Description |
|---|---|---|
idrequired | string (UUID) | Project ID. |
name | string | New display name. |
slug | string | New slug (must be unique within space). |
description | string | null | Project description. |
defaultView | kanban | list | calendar | gantt | Default view. |
- →Requires Owner or Admin role in the space.
/api/projects/:idArchive a project (soft delete). Requires Owner or Admin role.
| Parameter | Type | Description |
|---|---|---|
idrequired | string (UUID) | Project ID. |
Tasks
/api/tasksList all active tasks in a project.
| Parameter | Type | Description |
|---|---|---|
projectIdrequired | string (UUID) | The project ID to list tasks for. |
archived | boolean | Set to true to list archived tasks instead. |
/api/tasksCreate a new task in a project.
| Parameter | Type | Description |
|---|---|---|
projectIdrequired | string (UUID) | Project to create the task in. |
titlerequired | string | Task title. |
statusId | string (UUID) | null | Status column for the task. |
priority | none | low | medium | high | urgent | Task priority. |
dueDate | string (ISO 8601) | Due date. |
parentTaskId | string (UUID) | null | Parent task for subtasks. |
- →Requires at least Member role in the space (not Viewer).
- →Position is assigned automatically at the end of the status column.
/api/tasks/:idUpdate a task. All fields optional — only provided fields are changed.
| Parameter | Type | Description |
|---|---|---|
idrequired | string (UUID) | Task ID. |
title | string | New title. |
statusId | string (UUID) | null | Move to a different status column. |
priority | none | low | medium | high | urgent | Priority. |
dueDate | string (ISO 8601) | null | Due date. |
completedAt | string (ISO 8601) | null | Mark done (ISO date) or reopen (null). |
isArchived | boolean | Archive or restore the task. |
estimatedHours | number | null | Time estimate in hours. |
- →Requires at least Member role (not Viewer).
- →Setting completedAt to an ISO date marks the task as done.
/api/tasks/:idPermanently delete a task. Requires Owner, Admin, or task creator.
| Parameter | Type | Description |
|---|---|---|
idrequired | string (UUID) | Task ID. |
Error codes
Error responses include an error field. Some errors also include a machine-readable code field.
| Status | Meaning | Common cause |
|---|---|---|
400 | Bad Request | Missing or invalid fields in the request body. |
401 | Unauthorized | Missing or invalid API token. |
402 | Payment Required | API access requires a Pro or Team plan. |
403 | Forbidden | Insufficient role (Viewer trying to write, non-owner deleting, etc.). |
404 | Not Found | The requested resource does not exist. |
409 | Conflict | Slug already taken within this space. |
429 | Too Many Requests | Exceeded 100 requests per minute per token. |
// Error response body
{ "error": "Unauthorized" }
// With machine-readable subcode
{ "error": "API access requires a Pro or Team plan", "code": "pro_required" }Rate limits
API token requests are limited to 100 requests per minute per token. Session-based requests (from the web app) are not rate limited.
When you exceed the limit you receive 429 Too Many Requests. The response includes a Retry-After header indicating how many seconds to wait before retrying.
HTTP/1.1 429 Too Many Requests
Retry-After: 42
Content-Type: application/json
{ "error": "Rate limit exceeded" }Code examples
Replace kt_your_token_here with your actual token.
cURL
# List your spaces
curl "https://tasks.krokanti.com/api/spaces"
-H "Authorization: Bearer kt_your_token_here"
# List projects in a space
curl "https://tasks.krokanti.com/api/projects?spaceId=SPACE_ID"
-H "Authorization: Bearer kt_your_token_here"
# List tasks in a project
curl "https://tasks.krokanti.com/api/tasks?projectId=PROJECT_ID"
-H "Authorization: Bearer kt_your_token_here"
# Create a task
curl -X POST "https://tasks.krokanti.com/api/tasks"
-H "Authorization: Bearer kt_your_token_here"
-H "Content-Type: application/json"
-d '{ "projectId": "PROJECT_ID", "title": "My new task", "priority": "high" }'
# Complete a task
curl -X PATCH "https://tasks.krokanti.com/api/tasks/TASK_ID"
-H "Authorization: Bearer kt_your_token_here"
-H "Content-Type: application/json"
-d '{ "completedAt": "2026-02-22T10:00:00.000Z" }'JavaScript / Node
const BASE = "https://tasks.krokanti.com/api";
const TOKEN = "kt_your_token_here";
const headers = {
Authorization: `Bearer ${TOKEN}`,
"Content-Type": "application/json",
};
// List spaces
const spaces = await fetch(`${BASE}/spaces`, { headers }).then(r => r.json());
// List projects in first space
const projects = await fetch(
`${BASE}/projects?spaceId=${spaces[0].id}`,
{ headers }
).then(r => r.json());
// Create a task
const { task } = await fetch(`${BASE}/tasks`, {
method: "POST",
headers,
body: JSON.stringify({
projectId: projects[0].id,
title: "Review pull request",
priority: "high",
dueDate: new Date(Date.now() + 86400000).toISOString(),
}),
}).then(r => r.json());
// Mark it done
await fetch(`${BASE}/tasks/${task.id}`, {
method: "PATCH",
headers,
body: JSON.stringify({ completedAt: new Date().toISOString() }),
});Python
import requests
from datetime import datetime, timedelta, timezone
BASE = "https://tasks.krokanti.com/api"
TOKEN = "kt_your_token_here"
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
# List spaces
spaces = requests.get(f"{BASE}/spaces", headers=HEADERS).json()
# List projects
projects = requests.get(
f"{BASE}/projects", headers=HEADERS,
params={"spaceId": spaces[0]["id"]}
).json()
# Create a task
tomorrow = (datetime.now(timezone.utc) + timedelta(days=1)).isoformat()
resp = requests.post(f"{BASE}/tasks", headers=HEADERS, json={
"projectId": projects[0]["id"],
"title": "Deploy new release",
"priority": "urgent",
"dueDate": tomorrow,
})
task = resp.json()["task"]
print(f"Created task: {task['id']}")
# Complete the task
requests.patch(f"{BASE}/tasks/{task['id']}", headers=HEADERS, json={
"completedAt": datetime.now(timezone.utc).isoformat()
})MCP — AI Integration
Krokanti Tasks ships with a built-in MCP (Model Context Protocol) server. Connect Claude Code, Claude Desktop, or Cursor to your tasks and let AI create, update, and query tasks on your behalf — using the same API token.
Claude Code
Create a .mcp.json file in the root of your project (or add to an existing one):
// .mcp.json (project root)
{
"mcpServers": {
"krokanti-tasks": {
"type": "http",
"url": "https://tasks.krokanti.com/api/mcp",
"headers": {
"Authorization": "Bearer kt_your_token_here"
}
}
}
}Claude Code also needs the server enabled. Create .claude/settings.local.json in the same directory:
// .claude/settings.local.json
{
"enableAllProjectMcpServers": true,
"enabledMcpjsonServers": ["krokanti-tasks"]
}Claude Desktop
Add to your Claude Desktop configuration file. On macOS the file is at ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows: %APPDATA%\Claude\claude_desktop_config.json.
// claude_desktop_config.json
{
"mcpServers": {
"krokanti-tasks": {
"command": "npx",
"args": [
"mcp-remote@latest",
"https://tasks.krokanti.com/api/mcp",
"--header",
"Authorization: Bearer kt_your_token_here"
]
}
}
}Cursor
Add to .cursor/mcp.json in your project root (project-level) or ~/.cursor/mcp.json for global access:
// .cursor/mcp.json (or ~/.cursor/mcp.json for global)
{
"mcpServers": {
"krokanti-tasks": {
"type": "http",
"url": "https://tasks.krokanti.com/api/mcp",
"headers": {
"Authorization": "Bearer kt_your_token_here"
}
}
}
}Available tools
| Tool | Description | Key inputs |
|---|---|---|
list_spaces | List all spaces the user belongs to | — |
list_projects | List projects in a space | spaceId |
list_statuses | List status columns in a project | projectId |
list_tasks | List tasks in a project (lean summary) | projectId |
get_task | Full task detail including comments | taskId |
create_task | Create a new task | projectId, title, statusId?, priority?, dueDate? |
update_task | Update title, status, priority, due date, hours | taskId + fields to change |
complete_task | Mark done or reopen a task | taskId, reopen? |
add_comment | Add a comment to a task | taskId, content |
assign_task | Assign a space member to a task | taskId, userId |
All write operations (create, update, complete, add_comment, assign) require at least Member role in the space. Viewer role is read-only.
Built-in prompts
| Prompt | Description | Inputs |
|---|---|---|
plan_sprint | Review a project and suggest a prioritized sprint plan | projectId, goal? |
daily_standup | Generate a done/in-progress/next/blockers report | projectId, userName? |
Prompts guide the AI to use multiple tools together for common workflows.