---
updatedAt: 2026-01-06T15:03:41.000Z
---

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

# Update Project Task

Update an existing project task. This endpoint will replace the record with the data in the request payload, so make sure to first read the whole record to avoid data loss.

<p><b>Note</b>: The `/projectTask/status` field cannot be updated via this endpoint. Use <a href="/reference/patch_attendance-project-tasks-taskid-archive" target="_blank">archive</a>/<a href="/reference/patch_attendance-project-tasks-taskid-restore" target="_blank">restore</a> endpoints instead.</p>

<p><b>Testing notes</b>:</p>
  <ul>
  <li>Use the testing widget's <b>Try It!</b> option to test this endpoint.</li>
  <li>Use the <b>Examples > Request Example</b> option to see how to initiate body parameters.</li>
  </ul>


# OpenAPI definition

```json
{
  "openapi": "3.1.1",
  "info": {
    "title": "Attendance API",
    "contact": {
      "name": "Hi Bob, Inc."
    },
    "description": "Public API for importing attendance entries and managing attendance projects, tasks, and clients. Supports detailed field metadata and flexible filtering.",
    "license": {
      "name": "Proprietary",
      "url": "https://apidocs.hibob.com/docs/api-terms-of-use"
    },
    "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": "Projects",
      "description": "Operations for managing attendance projects, tasks and clients"
    }
  ],
  "paths": {
    "/attendance/project-tasks/{taskId}": {
      "put": {
        "operationId": "put_attendance-project-tasks-taskid",
        "tags": [
          "Projects"
        ],
        "summary": "Update Project Task",
        "description": "Update an existing project task. This endpoint will replace the record with the data in the request payload, so make sure to first read the whole record to avoid data loss.\n\n<p><b>Note</b>: The `/projectTask/status` field cannot be updated via this endpoint. Use <a href=\"/reference/patch_attendance-project-tasks-taskid-archive\" target=\"_blank\">archive</a>/<a href=\"/reference/patch_attendance-project-tasks-taskid-restore\" target=\"_blank\">restore</a> endpoints instead.</p>\n\n<p><b>Testing notes</b>:</p>\n  <ul>\n  <li>Use the testing widget's <b>Try It!</b> option to test this endpoint.</li>\n  <li>Use the <b>Examples > Request Example</b> option to see how to initiate body parameters.</li>\n  </ul>\n",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the task to update",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 123
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaskUpdateRequest"
              },
              "examples": {
                "updateTaskFields": {
                  "summary": "Update project task fields",
                  "value": {
                    "items": [
                      {
                        "objectType": "projectTask",
                        "fields": {
                          "/projectTask/name": {
                            "value": "Updated Task Name"
                          },
                          "/projectTask/billable": {
                            "value": true
                          }
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Task updated successfully"
          },
          "304": {
            "description": "Not modified"
          },
          "400": {
            "description": "The request is malformed or includes invalid parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Check your service user credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The service user or token is missing the required permissions to access the requested data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Task not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded - see <a href=\"https://apidocs.hibob.com/reference/project-tasks#rate-limiting\">Rate limits</a>",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Try again or contact support if the issue persists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basic": []
          },
          {
            "Bearer": []
          }
        ]
      }
    }
  },
  "components": {
    "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."
      }
    },
    "schemas": {
      "ApiErrorResponse": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Error key identifier"
          },
          "error": {
            "type": "string",
            "description": "Human-readable error message"
          },
          "args": {
            "type": "array",
            "description": "Optional error arguments providing additional context",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "TaskUpdateRequestObject": {
        "type": "object",
        "description": "Request schema for updating project tasks",
        "properties": {
          "objectType": {
            "type": "string",
            "enum": [
              "projectTask"
            ],
            "description": "Type of the object"
          },
          "fields": {
            "type": "object",
            "properties": {
              "/projectTask/name": {
                "type": "object",
                "description": "The task name",
                "properties": {
                  "value": {
                    "type": "string"
                  }
                }
              },
              "/projectTask/billable": {
                "type": "object",
                "description": "Whether this task is billable",
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                }
              }
            },
            "description": "Task fields for update request (all optional)",
            "required": [
              "/projectTask/name",
              "/projectTask/billable"
            ]
          }
        },
        "required": [
          "objectType",
          "fields"
        ]
      },
      "TaskUpdateRequest": {
        "type": "object",
        "description": "Request schema for updating project tasks",
        "properties": {
          "items": {
            "type": "array",
            "description": "List of tasks to update (must contain exactly one item)",
            "minItems": 1,
            "maxItems": 1,
            "items": {
              "$ref": "#/components/schemas/TaskUpdateRequestObject"
            }
          }
        },
        "required": [
          "items"
        ]
      }
    }
  }
}
```