API Reference
Tasks
Manage tasks within projects and task hierarchies.
REST /api/v1API key authentication5 endpoints
GET
/api/v1/tasksList tasks with optional filters
Query schema
const listQuerySchema = z.object({
projectId: z.string().uuid().optional(),
parentTaskId: z.string().uuid().optional(),
search: z.string().optional(),
limit: z.coerce.number().int().min(1).max(100).default(50),
offset: z.coerce.number().int().min(0).default(0),
lifecycleScope: z.enum(['active', 'all']).default('all'),
});Response200JSON response with data and pagination envelopes.
POST
/api/v1/tasksCreate a new task (child of a project or another task)
JSON body schema
const legacyTaskTypeSchema = z.enum(['project', 'admin', 'template', 'phase', 'stage', 'task']);
const createBodySchema = z.object({
parentTaskId: z.string().uuid(),
versionId: z.string().uuid(),
name: z.string().min(1),
taskTypeId: z.string().uuid().nullable().optional(),
taskType: legacyTaskTypeSchema.optional(),
startDate: z.string().optional(),
endDate: z.string().optional(),
description: z.string().optional(),
position: z.number().int().min(0).optional(),
});Response201JSON response with a data envelope.
DELETE
/api/v1/tasks/:idDelete a task (soft delete)
Path parametersid: string
Response204No response body.
GET
/api/v1/tasks/:idGet a single task
Path parametersid: string
Response200JSON response with a data envelope.
PATCH
/api/v1/tasks/:idUpdate a task
Path parametersid: string
JSON body schema
const taskStatusSchema = z.enum(['pending', 'in_progress', 'completed', 'blocked', 'cancelled']);
const updateBodySchema = z.object({
name: z.string().min(1).optional(),
description: z.string().nullable().optional(),
startDate: z.string().nullable().optional(),
endDate: z.string().nullable().optional(),
status: taskStatusSchema.optional(),
color: z
.string()
.regex(/^#[0-9A-Fa-f]{6}$/, 'Invalid color format')
.nullable()
.optional(),
taskTypeId: z.string().uuid().nullable().optional(),
});Response200JSON response with a data envelope.