API / Tasks
Tasks
Work items, numbered T-1, T-2 and so on per workspace. List shared tasks or open new ones from your own tools. Private tasks belong to one person and are never visible to a key.
List tasks
GET/api/v1/tasks
Shared tasks in the workspace, newest first, with cursor paging. Filters combine.
Query parameters
| Parameter | Type | Description |
|---|---|---|
status | string | One of your workspace's task statuses by value, or open / done as shorthands for not-done and done. |
assigneeId | string | Only tasks assigned to this user. |
contactId | string | Only tasks filed against this contact. |
projectId | string | Only tasks in this project. |
q | string | Case-insensitive match on the title. |
limit | number | 1 to 100. Default 50. |
cursor | string | The nextCursor from the previous page. |
Responses
| Status | Meaning |
|---|---|
| 200 | Body: { tasks: [...], nextCursor: string | null }. |
Example request
curl "https://crowdstack.org/api/v1/tasks?status=open&limit=1" \
-H "Authorization: Bearer $CROWDSTACK_API_KEY"Example response
{
"tasks": [
{
"id": "cmf3k2x9a0040abcd",
"number": 12,
"key": "T-12",
"title": "Send Acme the security questionnaire",
"description": null,
"status": "todo",
"type": "chore",
"priority": 3,
"dueDate": "2026-09-18",
"doneAt": null,
"assignee": { "id": "cmf3k2x9a0003abcd", "name": "Jane Doe", "email": "jane@acme-mail.com" },
"contact": { "id": "cmf3k2x9a0001abcd", "email": "jane@acme.com", "firstName": "Jane", "lastName": "Doe" },
"project": null,
"fields": { "effort": "medium" },
"createdAt": "2026-09-15T10:12:00.000Z",
"updatedAt": "2026-09-15T10:12:00.000Z"
}
],
"nextCursor": "cmf3k2x9a0040abcd"
}Create a task
POST/api/v1/tasks
Opens a shared task. Only the title is required; everything else falls back to the workspace's defaults. Pass createdById and assigneeId to say whose task it is; list users to find their ids.
Status and type accept a value or its label from Settings → Tasks. Priority is 0 to 4 or none, low, medium, high, urgent. Due dates are day-granular, yyyy-mm-dd.
Custom field keys must exist under Settings → Tasks → Fields. Unknown keys are rejected with 422 rather than dropped. Select fields accept either the option value or its label.
Every task has a creator. When createdById is left out it is whoever made the API key, then the assignee, then the workspace's longest-standing member. An assignee left out defaults to the creator.
Creating a task with the done status stamps doneAt immediately. Tasks made through the API are always shared, never private.
Request body
| Field | Type | Description |
|---|---|---|
titlerequired | string | Up to 200 characters. |
description | string | null | Plain text, up to 8000 characters. |
status | string | Defaults to the workspace's default task status. |
type | string | null | Defaults to the workspace's default task type. null leaves it untyped. |
priority | number | string | 0 to 4, or none, low, medium, high, urgent. Default 0. |
dueDate | string | null | yyyy-mm-dd. |
assigneeId | string | An active member of the workspace. Defaults to the creator. |
createdById | string | The active member the task is recorded as created by. See the note above for the default. |
contactId | string | Files the task against a contact and logs it on their timeline. |
projectId | string | An open project in the workspace. |
fields | object | Custom field values keyed by field key. Strings, numbers, booleans or null, matching each field's type. |
Responses
| Status | Meaning |
|---|---|
| 201 | The task was created. Body: { task }. |
| 422 | Validation failed; see details for the offending paths, including unknown assignee, contact or project ids. |
Example request
curl -X POST https://crowdstack.org/api/v1/tasks \
-H "Authorization: Bearer $CROWDSTACK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Send Acme the security questionnaire",
"assigneeId": "cmf3k2x9a0003abcd",
"priority": "high",
"dueDate": "2026-09-18",
"contactId": "cmf3k2x9a0001abcd",
"fields": { "effort": "medium" }
}'Example response
{
"task": {
"id": "cmf3k2x9a0040abcd",
"number": 12,
"key": "T-12",
"title": "Send Acme the security questionnaire",
"description": null,
"status": "todo",
"type": "chore",
"priority": 3,
"dueDate": "2026-09-18",
"doneAt": null,
"assignee": { "id": "cmf3k2x9a0003abcd", "name": "Jane Doe", "email": "jane@acme-mail.com" },
"contact": { "id": "cmf3k2x9a0001abcd", "email": "jane@acme.com", "firstName": "Jane", "lastName": "Doe" },
"project": null,
"fields": { "effort": "medium" },
"createdAt": "2026-09-15T10:12:00.000Z",
"updatedAt": "2026-09-15T10:12:00.000Z"
}
}