Overview
Update an existing task by its ID. All fields are optional - only include the fields you want to update. The task can be updated to change its title, description, status, assignees, due date, priority, or associated entities. Use this endpoint to modify task details, reassign tasks, update completion status, or adjust deadlines.Use Cases
- Task Status Updates: Mark tasks as complete or change their workflow status
- Reassignment: Transfer tasks between team members
- Deadline Management: Adjust due dates and times as priorities shift
- Priority Changes: Update task priority based on changing business needs
- Content Updates: Modify task title or description
- Association Updates: Link or unlink tasks from contacts/customers
Authentication
This endpoint requires authentication using an API key. Include your API key in the request header:Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string (UUID) | Yes | The UUID of the task to update |
Request Body
All fields are optional. Only include the fields you want to update:| Field | Type | Required | Description |
|---|---|---|---|
title | string | No | Task title (minimum 1 character) |
description | string | null | No | Detailed description of the task |
newStatusPosition | number | No | Update status by position in the status configuration (alternative to newStatusName) |
newStatusName | string | No | Update status by name (e.g., โPendienteโ, โEn Progresoโ) (alternative to newStatusPosition) |
dueDate | string | null | No | Due date (ISO 8601 format: YYYY-MM-DD or full datetime). Set to null to remove due date |
dueTime | string | null | No | Due time (HH:MM format, e.g., โ14:30โ) |
timezone | string | null | No | Timezone for due date (e.g., โAmerica/Santiagoโ) |
responsibleIds | string[] | No | Array of user IDs to assign as responsible (replaces all existing assignees) |
aiContactId | string | null | No | Associated contact ID |
aiCustomerId | string | null | No | Associated customer ID |
priority | string | No | Task priority: โ0โ (low), โ1โ (medium), or โ2โ (high) |
newStatusPosition or newStatusName. You cannot use both at the same time.
Response Structure
Returns the updated task object:Task Object
| Field | Type | Description |
|---|---|---|
id | string (UUID) | Unique identifier for the task |
title | string | Task title |
description | string | Detailed description of the task |
due_timezone | string | null | Timezone for the due date (e.g., โAmerica/Santiagoโ) |
due_at | string | null | Due date and time (ISO 8601 format) |
is_all_day | boolean | Whether the task is an all-day task |
created_at | string | Task creation date (ISO 8601 format) |
ai_contact_id | string | null | Associated contact ID if applicable |
ai_customer_id | string | null | Associated customer ID if applicable |
task_status_config_id | string (UUID) | ID of the status configuration |
priority | number | Task priority: 0 (low), 1 (medium), or 2 (high) |
creator_id | string (UUID) | ID of the user who created the task |
task_responsibles | array | Array of responsible user objects |
status_config | object | null | Custom status configuration object |
Example Request - Mark Task as Complete
Example Request - Update Multiple Fields
Example Response
Common Use Cases
1. Mark Task as Complete
2. Reassign Task to Different User
3. Update Task Priority
4. Extend Task Deadline
5. Add Additional Team Members
6. Update Task Description
7. Link Task to Contact
8. Bulk Update Task Status
Validation Rules
Task ID
- Required: Yes (in URL path)
- Format: Valid UUID
- Note: Task must exist and belong to your organization
Title
- Required: No (only if updating)
- Minimum length: 1 character (if provided)
- Type: String
Status Updates
You can update the task status using one of two methods: Option 1: By Status Name- Field:
newStatusName - Type: String
- Example: โPendienteโ, โEn Progresoโ, โCompletadoโ
- Note: Must match an existing status name in your organization
- Field:
newStatusPosition - Type: Number
- Example: 0, 1, 2, 3
- Note: Represents the position/order of the status in your status configuration
newStatusName OR newStatusPosition, not both.
Responsible IDs
- Required: No (only if updating)
- Type: Array of strings (UUIDs)
- Note: Must be valid user IDs from your organization
- Note: Replaces all existing assignees (not additive)
Priority
- Required: No (only if updating)
- Type: String
- Allowed values: โ0โ (low), โ1โ (medium), โ2โ (high)
- Note: The value is sent as a string but stored as an integer (0, 1, or 2)
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad Request - Invalid task ID or request body |
| 401 | Unauthorized - Invalid or missing API key |
| 404 | Not Found - Task not found or invalid references |
| 500 | Internal Server Error - Something went wrong |
Common Error Examples
Best Practices
- Partial Updates: Only send the fields you want to update - no need to send the entire object
- Responsible IDs: When updating responsibleIds, include ALL users who should be assigned (it replaces, not appends)
- Status Updates: Use
newStatusNameornewStatusPositionto update status - donโt use both at the same time - Status Validation: Verify the status name/position exists in your organization before updating
- Optimistic UI: Update UI optimistically and rollback on error for better user experience
- Timezone Consistency: When updating due dates, always include timezone for accuracy
- Remove Due Date: Set
dueDatetonullto remove the due date from a task - Priority Format: Use โ0โ, โ1โ, or โ2โ for priority (not โlowโ, โmediumโ, โhighโ)
- Audit Trail: Consider logging updates for compliance and debugging
- Concurrent Updates: Be aware of potential race conditions when multiple users update the same task
Performance Tips
- Batch Updates: Group related updates into a single request when possible
- Conditional Updates: Check if the value actually changed before making an API call
- Error Handling: Implement retry logic with exponential backoff for transient failures
- Validation: Validate data on the client side before making API calls
Important Notes
- Immutable Fields: Some fields like
id,created_at, andcreator_idcannot be updated - Organization Scoped: You can only update tasks that belong to your organization
- Permission Based: Users may need appropriate permissions to update certain tasks
- Status Update Methods: Use either
newStatusNameORnewStatusPosition, not both - Cascading Effects: Changing status may trigger automated actions or notifications
- Responsible IDs Replacement: The responsibleIds array replaces all existing assignees - it does not add to them
- Remove Due Date: Set
dueDatetonullto remove the due date from a task - Priority Format: Priority is sent as a string (โ0โ, โ1โ, โ2โ) but returned as an integer (0, 1, 2) in the response
Related Endpoints
- GET /api/public/tasks - Get tasks by filters
- POST /api/public/tasks - Create a new task
- DELETE /api/public/tasks/ - Delete a task
- GET /api/public/team-members/all - Get team members for assignment
Webhook Events
Updating a task may trigger webhook events such as:task.updated- When any task field is updatedtask.completed- When task status changes to completedtask.reassigned- When responsible users change
Path Parameters
The UUID of the task to update
Body
application/json
Minimum length:
1Available options:
0, 1, 2 Response
Task updated successfully
The response is of type object.
