Tasks API

Create, query, move, and manage tasks on your kanban board programmatically.

Authentication

All API requests require authentication via an API key passed in the Authorization header:

Authorization: Bearer YOUR_API_KEY

You can find your API key in Settings → API Keys on the dashboard. Keep it secret — anyone with your key can manage your tasks.

Security: Never expose your API key in client-side code or public repositories. Use environment variables or a secrets manager.

Base URL

https://dashboard.delegated.nl/tasks-api.php

Endpoints

GET Get Tasks by Column

Retrieve all tasks in a specific column.

GET /tasks-api.php?action=todo
GET /tasks-api.php?action=doing
GET /tasks-api.php?action=done

Response:

{
  "success": true,
  "tasks": [
    {
      "id": "task_8xK2mP",
      "title": "Generate weekly ad creatives",
      "description": "Create 5 ad variations for the spring campaign",
      "priority": "high",
      "priority_score": 0.85,
      "status": "TODO",
      "created_at": "2026-03-04T05:01:00Z",
      "due_date": "2026-03-07T09:00:00Z",
      "tags": ["ads", "creative"]
    }
  ],
  "count": 1
}

POST Create a Task

Add a new task to the TODO column.

POST /tasks-api.php?action=add
Content-Type: application/json

{
  "title": "Write product descriptions",
  "description": "Write compelling descriptions for our top 5 products",
  "priority": "high",
  "due_date": "2026-03-10T17:00:00Z",
  "tags": ["content", "products"]
}

Parameters:

FieldTypeRequiredDescription
titlestringYesTask title (max 200 chars)
descriptionstringNoDetailed instructions for the agent
prioritystringNourgent, high, medium, low (default: medium)
due_datestringNoISO 8601 datetime
tagsarrayNoArray of string labels

Response:

{
  "success": true,
  "task": {
    "id": "task_nR4kLp",
    "title": "Write product descriptions",
    "status": "TODO",
    "priority_score": 0.72,
    "created_at": "2026-03-04T12:30:00Z"
  }
}

POST Move a Task

Move a task between columns (e.g., from TODO to DONE, or back to TODO).

POST /tasks-api.php?action=move
Content-Type: application/json

{
  "task_id": "task_8xK2mP",
  "to": "done"
}

Parameters:

FieldTypeRequiredDescription
task_idstringYesThe task ID to move
tostringYesTarget column: todo, doing, or done

POST Send Chat Message

Send a message to the AI agent via the chat API.

POST /tasks-api.php?action=chat
Content-Type: application/json

{
  "message": "What tasks are currently in progress?",
  "user": "admin"
}

Response:

{
  "success": true,
  "reply": "I'm currently working on 'Generate weekly ad creatives' — I've completed 3 of 5 variations. No other tasks in DOING.",
  "timestamp": "2026-03-04T12:35:00Z"
}

Error Handling

All errors follow a consistent format:

{
  "success": false,
  "error": "Task not found",
  "code": "TASK_NOT_FOUND"
}
CodeHTTP StatusDescription
UNAUTHORIZED401Missing or invalid API key
INVALID_ACTION400Unknown action parameter
MISSING_FIELD400Required field not provided
TASK_NOT_FOUND404Task ID doesn't exist
RATE_LIMITED429Too many requests (max 60/min)

Rate Limits

The API allows up to 60 requests per minute per API key. Exceeding this returns a 429 status with a Retry-After header.

Tip: Use the GET endpoints to poll for task updates. For real-time updates, consider using webhooks instead.

cURL Examples

Create a task

curl -X POST "https://dashboard.delegated.nl/tasks-api.php?action=add" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Update pricing page","priority":"urgent"}'

Get all TODO tasks

curl "https://dashboard.delegated.nl/tasks-api.php?action=todo" \
  -H "Authorization: Bearer YOUR_API_KEY"

Next Steps