---
updatedAt: 2026-02-19T13:20:17.000Z
---

Fetch the complete documentation index at: https://apidocs.hibob.com/llms.txt. Use this file to discover all available pages before exploring further.

# Task status changed webhook

Sent when the status of a general task changes (e.g. completed or incomplete). The payload includes
`toDoIds`, `toDoRequestedForIds`, `toDoAssigneeIds`, and `newStatus`. Long fields (e.g. description or title)
may be truncated in the payload.

**Best practice:** Treat the event as a notification. Call the
<a href="https://apidocs.hibob.com/reference/get_tasks-people-id" target="_blank">Read tasks of a specific employee</a> endpoint
with `toDoAssigneeId` (or the relevant employee ID from the payload) to get full, untruncated task details. For
request and response examples, see <a href="https://apidocs.hibob.com/reference/api-calls-for-webhook-events#task-events" target="_blank">API call for Task events</a>.

In the right panel, open **Examples** and select **Payload Example** to see a real payload.


# OpenAPI definition

```json
{
  "openapi": "3.1.1",
  "info": {
    "title": "Tasks API",
    "description": "Use Public API to access Tasks in Bob",
    "license": {
      "name": "Proprietary",
      "url": "https://apidocs.hibob.com/docs/api-terms-of-use"
    },
    "contact": {
      "name": "Hi Bob, Inc."
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.hibob.com/v1",
      "description": "Production"
    },
    {
      "url": "https://api.sandbox.hibob.com/v1",
      "description": "Sandbox"
    }
  ],
  "x-readme": {
    "metrics-enabled": false
  },
  "tags": [
    {
      "name": "Tasks",
      "description": "Operations for managing tasks in Bob"
    },
    {
      "name": "Tasks Webhooks",
      "description": "Webhook events for task-related operations"
    }
  ],
  "webhooks": {
    "taskAssign": {
      "post": {
        "operationId": "post_webhook_todo-assign",
        "tags": [
          "Tasks Webhooks"
        ],
        "summary": "Task triggered webhook",
        "description": "Sent when a task list is triggered and one or more general tasks are created. The payload includes\n`requestedForEmployeeId` (the employee the tasks are for), `workflowId`, `pivotDate`, and `toDoIds` (task IDs).\n\n**Best practice:** Treat the event as a notification. Call the\n<a href=\"https://apidocs.hibob.com/reference/get_tasks-people-id\" target=\"_blank\">Read tasks of a specific employee</a> endpoint\nwith `requestedForEmployeeId` to retrieve full task details. For request and response examples, see\n<a href=\"https://apidocs.hibob.com/reference/api-calls-for-webhook-events#task-events\" target=\"_blank\">API call for Task events</a>.\n\nIn the right panel, open **Examples** and select **Payload Example** to see a real payload.\n",
        "parameters": [
          {
            "name": "bob-signature",
            "in": "header",
            "required": true,
            "description": "Base64-encoded signature sent with each webhook request. Use it to verify that the request came from Bob. To verify webhook authenticity, see <a href=\"https://apidocs.hibob.com/reference/getting-started-webhooks#how-does-bob-calculate-the-signature\" target=\"_blank\">How does Bob calculate the signature</a>.",
            "schema": {
              "type": "string",
              "example": "EQScIBkAtTKFW0ictgt5zzOsqIc2+xGEsM88jOdLuW4CM/a3gLEfrKV+IC5IHx0xbirzLKPIfaZjCGwzuiyI8w=="
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaskAssignEvent"
              },
              "example": {
                "companyId": 636192,
                "type": "todo.assign",
                "triggeredBy": "3332883804594373380",
                "triggeredAt": "2025-01-08T12:12:31.199878Z",
                "version": "v2",
                "data": {
                  "requestedForEmployeeId": "3332883884017713938",
                  "workflowId": 2302289,
                  "pivotDate": "2025-01-08",
                  "toDoIds": [
                    {
                      "id": 32261122
                    }
                  ]
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook received successfully"
          },
          "400": {
            "description": "Invalid webhook payload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "taskChangedStatus": {
      "post": {
        "operationId": "post_webhook_todo-changed-status",
        "tags": [
          "Tasks Webhooks"
        ],
        "summary": "Task status changed webhook",
        "description": "Sent when the status of a general task changes (e.g. completed or incomplete). The payload includes\n`toDoIds`, `toDoRequestedForIds`, `toDoAssigneeIds`, and `newStatus`. Long fields (e.g. description or title)\nmay be truncated in the payload.\n\n**Best practice:** Treat the event as a notification. Call the\n<a href=\"https://apidocs.hibob.com/reference/get_tasks-people-id\" target=\"_blank\">Read tasks of a specific employee</a> endpoint\nwith `toDoAssigneeId` (or the relevant employee ID from the payload) to get full, untruncated task details. For\nrequest and response examples, see <a href=\"https://apidocs.hibob.com/reference/api-calls-for-webhook-events#task-events\" target=\"_blank\">API call for Task events</a>.\n\nIn the right panel, open **Examples** and select **Payload Example** to see a real payload.\n",
        "parameters": [
          {
            "name": "bob-signature",
            "in": "header",
            "required": true,
            "description": "Base64-encoded signature sent with each webhook request. Use it to verify that the request came from Bob. To verify webhook authenticity, see <a href=\"https://apidocs.hibob.com/reference/getting-started-webhooks#how-does-bob-calculate-the-signature\" target=\"_blank\">How does Bob calculate the signature</a>.",
            "schema": {
              "type": "string",
              "example": "EQScIBkAtTKFW0ictgt5zzOsqIc2+xGEsM88jOdLuW4CM/a3gLEfrKV+IC5IHx0xbirzLKPIfaZjCGwzuiyI8w=="
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaskChangedStatusEvent"
              },
              "example": {
                "companyId": 636192,
                "type": "todo.changedStatus",
                "triggeredBy": "3332883804594373380",
                "triggeredAt": "2025-01-08T12:10:22.297354Z",
                "version": "v2",
                "data": {
                  "toDoIds": [
                    {
                      "id": 32008655
                    }
                  ],
                  "toDoRequestedForIds": [
                    "3332883881626960657"
                  ],
                  "toDoAssigneeIds": [
                    "3332883804594373380"
                  ],
                  "newStatus": "Closed"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook received successfully"
          },
          "400": {
            "description": "Invalid webhook payload",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": []
      }
    }
  },
  "paths": {
    "/tasks": {
      "get": {
        "operationId": "get_tasks",
        "tags": [
          "Tasks"
        ],
        "summary": "Read all open tasks.",
        "description": "Returns all open tasks for the company.\n\n**Record limit:** This endpoint returns a maximum of 5,000 tasks per request. This is a hard limit and cannot be increased.\n\n**No pagination:** This endpoint does not support pagination or cursors. If the company has more than 5,000 open tasks, only the first 5,000 (ordered by task ID) are returned in the response &mdash; the remaining tasks are not returned, and there is no way to retrieve them through this endpoint.",
        "responses": {
          "200": {
            "description": "All open tasks for this company.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tasks"
                }
              }
            }
          }
        },
        "security": [
          {
            "basic": []
          },
          {
            "Bearer": []
          }
        ]
      }
    },
    "/tasks/people/{id}": {
      "get": {
        "operationId": "get_tasks-people-id",
        "tags": [
          "Tasks"
        ],
        "summary": "Read tasks of a specific employee ",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The Employee ID as pulled from the database, or from the URL In Bob when viewing the employee. For example, if the URL in Bob is \"https://app.hibob.com/employee-profile/3332883884017713238\" you should copy the \"3332883884017713238\".",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "task_status",
            "in": "query",
            "description": "filter tasks by open / closed status. Not sending task_status will return all tasks.",
            "schema": {
              "type": "string",
              "enum": [
                "open",
                "closed"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "All of a specific employee's open tasks.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Tasks"
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basic": []
          },
          {
            "Bearer": []
          }
        ]
      }
    },
    "/tasks/{taskId}/complete": {
      "post": {
        "operationId": "post_tasks-taskid-complete",
        "tags": [
          "Tasks"
        ],
        "summary": "Mark a task as complete",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "description": "task id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Marks a task as complete.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "toDosUpdated": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basic": []
          },
          {
            "Bearer": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "TaskEmployee": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "surname": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          }
        }
      },
      "Task": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "format": "long"
          },
          "owner": {
            "$ref": "#/components/schemas/TaskEmployee"
          },
          "title": {
            "type": "string"
          },
          "requestedFor": {
            "$ref": "#/components/schemas/TaskEmployee"
          },
          "due": {
            "type": "string",
            "format": "date"
          },
          "linkInBob": {
            "type": "string"
          },
          "set": {
            "type": "string"
          },
          "workflow": {
            "type": "string"
          },
          "ordinalInWorkflow": {
            "type": "number"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "completionDate": {
            "type": "string",
            "format": "date"
          },
          "employeeGroupId": {
            "type": "number"
          },
          "companyId": {
            "type": "number",
            "description": "The ID of the employee's company."
          }
        }
      },
      "Tasks": {
        "type": "object",
        "properties": {
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Task"
            }
          }
        }
      },
      "ApiErrorResponse": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The unique identifier of the error."
          },
          "error": {
            "type": "string",
            "description": "A human readable error message."
          },
          "args": {
            "type": "string",
            "description": "Additional properties of the error."
          }
        }
      },
      "WebhookEvent": {
        "type": "object",
        "description": "Base webhook event structure containing common webhook properties",
        "properties": {
          "companyId": {
            "type": "number",
            "description": "The company ID"
          },
          "type": {
            "type": "string",
            "description": "The event type (e.g., todo.assign, todo.changedStatus)"
          },
          "triggeredBy": {
            "type": "string",
            "description": "The backend-id of the employee that triggered the event or 'system' for events triggered automatically by the system"
          },
          "triggeredAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp when the event occurred"
          },
          "version": {
            "type": "string",
            "description": "The webhook version"
          },
          "data": {
            "type": "object",
            "description": "Contains the actual data and differs for each event type"
          }
        },
        "required": [
          "companyId",
          "type",
          "triggeredBy",
          "triggeredAt",
          "version",
          "data"
        ]
      },
      "TaskAssignEvent": {
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEvent"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "todo.assign"
                ],
                "description": "The event type for task assignment"
              },
              "data": {
                "type": "object",
                "properties": {
                  "requestedForEmployeeId": {
                    "type": "string",
                    "description": "The employee ID for whom the task was requested"
                  },
                  "workflowId": {
                    "type": "number",
                    "description": "The workflow ID that triggered the task list"
                  },
                  "pivotDate": {
                    "type": "string",
                    "format": "date",
                    "description": "The anchor date that determines when workflow tasks are scheduled and when they are due."
                  },
                  "toDoIds": {
                    "type": "array",
                    "description": "Array of task IDs that were created",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "The task ID"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  }
                },
                "required": [
                  "requestedForEmployeeId",
                  "workflowId",
                  "pivotDate",
                  "toDoIds"
                ]
              }
            },
            "description": "Event sent when a task list is triggered. Each general task that is created will trigger this event."
          }
        ]
      },
      "TaskChangedStatusEvent": {
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEvent"
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "todo.changedStatus"
                ],
                "description": "The event type for task status change"
              },
              "data": {
                "type": "object",
                "properties": {
                  "toDoIds": {
                    "type": "array",
                    "description": "Array of task IDs that changed status",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "number",
                          "description": "The task ID"
                        }
                      },
                      "required": [
                        "id"
                      ]
                    }
                  },
                  "toDoRequestedForIds": {
                    "type": "array",
                    "description": "Array of employee IDs for whom the tasks were requested",
                    "items": {
                      "type": "string"
                    }
                  },
                  "toDoAssigneeIds": {
                    "type": "array",
                    "description": "Array of employee IDs assigned to the tasks",
                    "items": {
                      "type": "string"
                    }
                  },
                  "newStatus": {
                    "type": "string",
                    "description": "The new status of the task (e.g., Closed, Open)"
                  }
                },
                "required": [
                  "toDoIds",
                  "toDoRequestedForIds",
                  "toDoAssigneeIds",
                  "newStatus"
                ]
              }
            },
            "description": "Event sent when any change occurs in the status of a general task (completed/incomplete). The webhook event payload may contain truncated values (such as the task description or title) in case they are long."
          }
        ]
      }
    },
    "securitySchemes": {
      "basic": {
        "type": "http",
        "scheme": "basic",
        "description": "Basic HTTP authentication using service user credentials"
      },
      "Bearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "OAuth 2.0",
        "description": "OAuth 2.0 authentication using an Access Token is available for registered partners only.  Try It! does not support the full HiBob OAuth flow. You can follow <a href=\"https://apidocs.hibob.com/reference/oauth-20#testing-from-the-public-api-reference\" target=\"_blank\">these steps</a> to complete the OAuth 2.0 flow in Postman and then paste the token here."
      }
    }
  }
}
```