Tasks API

Manage tasks (also called "steps") within projects and phases. Tasks represent individual work items that can be assigned, tracked, and completed.

The Task Object

{
  "id": 123,
  "title": "Design homepage wireframe",
  "phase_id": 456,
  "completed": false,
  "due_date": "2023-02-15",
  "order": 1,
  "created_at": "2023-01-01T12:00:00Z",
  "updated_at": "2023-01-01T12:00:00Z",
  "phase": {
    "id": 456,
    "title": "Design Phase",
    "project": {
      "id": 789,
      "title": "Website Redesign",
      "client": {
        "id": 101,
        "title": "Acme Corporation",
        "company_id": 202
      }
    }
  }
}

Attributes

Attribute Type Description
id integer Unique identifier for the task
title string The task's name
phase_id integer ID of the phase this task belongs to
completed boolean Whether the task has been completed
due_date string Task due date (YYYY-MM-DD format)
order integer Order of the task within its phase
phase object The phase object this task belongs to

List Tasks

Retrieves a list of tasks the authenticated user has access to.

GET /api/v1/steps

Query Parameters

Parameter Type Description
company_id integer Filter tasks by specific company ID
completed boolean Filter by completion status
has_due_date boolean Filter tasks that have or don't have due dates
exclude_templates boolean Exclude tasks from template projects
per_page integer Number of results per page (max 1000)

Example Request

GET /api/v1/steps?completed=false&company_id=202&per_page=25
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json

Example Response

[
  {
    "id": 123,
    "title": "Design homepage wireframe",
    "phase_id": 456,
    "completed": false,
    "due_date": "2023-02-15",
    "order": 1,
    "created_at": "2023-01-01T12:00:00Z",
    "updated_at": "2023-01-01T12:00:00Z",
    "phase": {
      "id": 456,
      "title": "Design Phase",
      "project": {
        "id": 789,
        "title": "Website Redesign",
        "client": {
          "id": 101,
          "title": "Acme Corporation",
          "company_id": 202
        }
      }
    }
  }
]

Get a Task

Retrieves a specific task by ID.

GET /api/v1/steps/{id}

Example Request

GET /api/v1/steps/123
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json

Example Response

{
  "id": 123,
  "title": "Design homepage wireframe",
  "phase_id": 456,
  "completed": false,
  "due_date": "2023-02-15",
  "order": 1,
  "created_at": "2023-01-01T12:00:00Z",
  "updated_at": "2023-01-01T12:00:00Z",
  "phase": {
    "id": 456,
    "title": "Design Phase",
    "project": {
      "id": 789,
      "title": "Website Redesign",
      "client": {
        "id": 101,
        "title": "Acme Corporation",
        "company_id": 202
      }
    }
  }
}

Create a Task

Creates a new task within a phase.

POST /api/v1/steps

Request Body

Parameter Type Required Description
title string Yes The task's name
phase_id integer Yes ID of the phase this task belongs to
content string No Task content that will appear in the task details. Plain text is automatically converted to rich text format.
due_date string No Task due date (YYYY-MM-DD)
completed boolean No Whether the task is completed (defaults to false)

Example Request

POST /api/v1/steps
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
Accept: application/json

{
  "title": "Create user flow diagram",
  "phase_id": 456,
  "content": "Design user flow for the new checkout process.\n\nInclude all edge cases and error states.",
  "due_date": "2023-02-20"
}

Example Response

{
  "id": 124,
  "title": "Create user flow diagram",
  "phase_id": 456,
  "completed": false,
  "due_date": "2023-02-20",
  "order": 2,
  "created_at": "2023-01-15T10:00:00Z",
  "updated_at": "2023-01-15T10:00:00Z",
  "phase": {
    "id": 456,
    "title": "Design Phase",
    "project": {
      "id": 789,
      "title": "Website Redesign",
      "client": {
        "id": 101,
        "title": "Acme Corporation",
        "company_id": 202
      }
    }
  }
}

Update a Task

Updates an existing task's information, including marking it as completed.

PUT /api/v1/steps/{id}

Request Body

Parameter Type Description
title string The task's name
content string Task content/description. Plain text is automatically converted to rich text format.
completed boolean Whether the task is completed
due_date string Task due date (YYYY-MM-DD)

Example Request

PUT /api/v1/steps/123
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
Accept: application/json

{
  "title": "Design homepage wireframe (Updated)",
  "content": "Updated requirements based on client feedback.",
  "completed": true,
  "due_date": "2023-02-18"
}

Example Response

{
  "id": 123,
  "title": "Design homepage wireframe (Updated)",
  "phase_id": 456,
  "completed": true,
  "due_date": "2023-02-18",
  "order": 1,
  "created_at": "2023-01-01T12:00:00Z",
  "updated_at": "2023-01-15T14:30:00Z",
  "phase": {
    "id": 456,
    "title": "Design Phase",
    "project": {
      "id": 789,
      "title": "Website Redesign",
      "client": {
        "id": 101,
        "title": "Acme Corporation",
        "company_id": 202
      }
    }
  }
}

Delete a Task

Permanently deletes a task. Only company members can delete tasks.

DELETE /api/v1/steps/{id}

Warning: Deleting a task will permanently remove it and cannot be undone. Consider marking tasks as completed instead of deleting them to maintain project history.

Example Request

DELETE /api/v1/steps/123
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json

Example Response

204 No Content