curl -X POST https://kliio.app/api/v1/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"project_id": "proj-uuid-...",
"name": "Design homepage mockup",
"estimated_hours": 8,
"billable": true,
"rate": 120
}'
const res = await fetch('https://kliio.app/api/v1/tasks', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
project_id: 'proj-uuid-...',
name: 'Design homepage mockup',
estimated_hours: 8,
billable: true,
rate: 120
})
})
const { data } = await res.json()
{
"success": true,
"data": {
"id": "task-uuid-...",
"name": "Design homepage mockup",
"description": null,
"status": "todo",
"estimated_hours": 8,
"billable": true,
"rate": 120,
"total_seconds": 0,
"phase_id": null,
"project": { "id": "proj-uuid-...", "name": "Acme Rebrand" },
"created_at": "2025-03-20T09:00:00.000Z"
}
}
{
"error": "Validation failed",
"details": { "name": ["name is required"] }
}
{
"error": "Project not found or access denied"
}
Tasks
Create Task
Creates a new task under a project.
POST
/
api
/
v1
/
tasks
curl -X POST https://kliio.app/api/v1/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"project_id": "proj-uuid-...",
"name": "Design homepage mockup",
"estimated_hours": 8,
"billable": true,
"rate": 120
}'
const res = await fetch('https://kliio.app/api/v1/tasks', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
project_id: 'proj-uuid-...',
name: 'Design homepage mockup',
estimated_hours: 8,
billable: true,
rate: 120
})
})
const { data } = await res.json()
{
"success": true,
"data": {
"id": "task-uuid-...",
"name": "Design homepage mockup",
"description": null,
"status": "todo",
"estimated_hours": 8,
"billable": true,
"rate": 120,
"total_seconds": 0,
"phase_id": null,
"project": { "id": "proj-uuid-...", "name": "Acme Rebrand" },
"created_at": "2025-03-20T09:00:00.000Z"
}
}
{
"error": "Validation failed",
"details": { "name": ["name is required"] }
}
{
"error": "Project not found or access denied"
}
Headers
string
required
Bearer YOUR_API_KEYBody
string
required
UUID of the project this task belongs to. Must belong to your account.
string
required
Task name.
string
Optional task description.
string
Initial status. One of:
todo (default), in_progress, done.number
Estimated hours to complete the task.
boolean
Whether this task is billable. Defaults to
false.number
Hourly rate for this task. Overrides the project rate when set.
string
UUID of a project phase to assign this task to. The phase must belong to the same project.
Response
boolean
true on creation.object
The newly created task, including an embedded
project object.curl -X POST https://kliio.app/api/v1/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"project_id": "proj-uuid-...",
"name": "Design homepage mockup",
"estimated_hours": 8,
"billable": true,
"rate": 120
}'
const res = await fetch('https://kliio.app/api/v1/tasks', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
project_id: 'proj-uuid-...',
name: 'Design homepage mockup',
estimated_hours: 8,
billable: true,
rate: 120
})
})
const { data } = await res.json()
{
"success": true,
"data": {
"id": "task-uuid-...",
"name": "Design homepage mockup",
"description": null,
"status": "todo",
"estimated_hours": 8,
"billable": true,
"rate": 120,
"total_seconds": 0,
"phase_id": null,
"project": { "id": "proj-uuid-...", "name": "Acme Rebrand" },
"created_at": "2025-03-20T09:00:00.000Z"
}
}
{
"error": "Validation failed",
"details": { "name": ["name is required"] }
}
{
"error": "Project not found or access denied"
}

