Skip to main content

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

FieldTypeDescription
title*stringTask title (required, <= 500 chars)
due_atISO datetimeWhen the task is due
assigned_to_user_idintegerTeam member owning the task
crm_contact_idintegerOptional linked contact
crm_deal_idintegerOptional linked deal
priorityenumlow | medium | high (default medium)
statusenumopen | completed (read-only on create)
context_notestringFree-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.created
  • task.updated
  • task.completed
  • task.deleted
  • task.restored
Tasks - Workspace API - Staffify