Tasks
Follow-up reminders / to-dos, optionally linked to a contact or deal. Marking a task completed stamps completed_at and fires task.completed. Scopes: crm.tasks.read / crm.tasks.write / crm.tasks.delete.
Endpoints
GET /api/workspace/v1/tasks
GET /api/workspace/v1/tasks/{id}
POST /api/workspace/v1/tasks
PATCH /api/workspace/v1/tasks/{id}
DELETE /api/workspace/v1/tasks/{id}
POST /api/workspace/v1/tasks/{id}/restore
POST /api/workspace/v1/tasks/bulk-delete
The task object
| Field | Type | Description |
|---|---|---|
| title* | string | Task title (required, <= 500 chars) |
| due_at | ISO datetime | When the task is due |
| assigned_to_user_id | integer | Team member owning the task |
| crm_contact_id | integer | Optional linked contact |
| crm_deal_id | integer | Optional linked deal |
| priority | enum | low | medium | high (default medium) |
| status | enum | open | completed (read-only on create) |
| context_note | string | Free-form note attached to the task |
Create a task
curl "https://app.staffifyai.com/api/workspace/v1/tasks" \
-X POST \
-H "Authorization: Bearer sfy_wsp_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Call Acme back about renewal",
"priority": "high",
"due_at": "2026-09-20T09:00:00Z",
"crm_contact_id": 1893
}'Complete a task
PATCH with { "status": "completed" }. Fires task.completed in addition to task.updated. Setting status back to open clears completed_at.
curl -X PATCH "https://app.staffifyai.com/api/workspace/v1/tasks/42" \
-H "Authorization: Bearer sfy_wsp_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "status": "completed" }'List overdue tasks
curl "https://app.staffifyai.com/api/workspace/v1/tasks?overdue=true" \ -H "Authorization: Bearer sfy_wsp_live_YOUR_KEY"
Webhooks
task.createdtask.updatedtask.completedtask.deletedtask.restored