Complete Task
POST /v1/nexttask/tasks/{id}/complete
Complete or reopen a task
completed true completes the task, and a repeating task gets its next occurrence.
False reopens it. Needs Tasks > Complete.
Request
POST https://your-site.example/api/index.php/v1/nexttask/tasks/{id}/complete
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id |
integer |
path |
Yes | The record the call is about. An id or ids in the body is ignored. |
Request body
Content type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
completed |
boolean |
Yes |
{
"completed": true
}
Responses
200 — The task, and the next occurrence if one was created.
{
"success": true,
"message": "string",
"messages": "string",
"data": {
"task": {
"id": 12,
"list_id": 5,
"parent_id": 0,
"title": "Ship it",
"notes": "string",
"status": "needsAction",
"starred": 1,
"due": "2026-10-02 09:00:00",
"has_time": 1,
"recurrence": "string",
"recurrence_next_id": 1,
"completed_time": "string",
"position": "string",
"links": [
{}
],
"assigned_to": 1,
"assignee_name": "string",
"subtask_count": 1,
"completed_subtask_count": 1,
"access": "owner",
"can_complete": true,
"deleted_time": "string",
"created": "string",
"created_by": 1,
"modified": "string",
"modified_by": 1
},
"item": {
"id": 12,
"list_id": 5,
"parent_id": 0,
"title": "Ship it",
"notes": "string",
"status": "needsAction",
"starred": 1,
"due": "2026-10-02 09:00:00",
"has_time": 1,
"recurrence": "string",
"recurrence_next_id": 1,
"completed_time": "string",
"position": "string",
"links": [
{}
],
"assigned_to": 1,
"assignee_name": "string",
"subtask_count": 1,
"completed_subtask_count": 1,
"access": "owner",
"can_complete": true,
"deleted_time": "string",
"created": "string",
"created_by": 1,
"modified": "string",
"modified_by": 1
},
"clone": {
"id": 12,
"list_id": 5,
"parent_id": 0,
"title": "Ship it",
"notes": "string",
"status": "needsAction",
"starred": 1,
"due": "2026-10-02 09:00:00",
"has_time": 1,
"recurrence": "string",
"recurrence_next_id": 1,
"completed_time": "string",
"position": "string",
"links": [
{}
],
"assigned_to": 1,
"assignee_name": "string",
"subtask_count": 1,
"completed_subtask_count": 1,
"access": "owner",
"can_complete": true,
"deleted_time": "string",
"created": "string",
"created_by": 1,
"modified": "string",
"modified_by": 1
},
"removed_clone_id": 1
}
}
Errors
| Status | Code | When |
|---|---|---|
401 |
No valid API token. | |
403 |
FORBIDDEN when the role or the list does not allow it, APP_DISABLED when the feature's app is off. |
|
404 |
NOT_FOUND: no such record, or not one you can reach. |
Examples
curl
curl -s -X POST "https://your-site.example/api/index.php/v1/nexttask/tasks/1/complete" \
-H "X-Joomla-Token: $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"completed":true}'
PHP
<?php
$ch = curl_init('https://your-site.example/api/index.php/v1/nexttask/tasks/1/complete');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Joomla-Token: ' . getenv('API_TOKEN'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => '{"completed":true}',
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
JavaScript
const API_TOKEN = process.env.API_TOKEN;
const response = await fetch("https://your-site.example/api/index.php/v1/nexttask/tasks/1/complete", {
method: 'POST',
headers: {
"X-Joomla-Token": `${API_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"completed": true
}),
});
const data = await response.json();