For AI agents: markdown of this page — /docs-content-en/entities/tasks/disapprove.md documentation index — /llms.txt

Disapprove task

POST /v1/tasks/:taskId/disapprove

Rejects the result of a task awaiting the creator's review and returns it to the assignee in the Pending status.

Parameters

Parameter Type Required Description
ParametertaskId (path) Typenumber Requiredyes DescriptionTask ID. List: GET /v1/tasks

Request fields (body)

Field Type Required Description
Fieldparams Typeobject Requiredno DescriptionAdditional action parameters. Passed to Bitrix24 unchanged

The request body can be empty or {}. Any field other than params is rejected with 400 INVALID_PARAMS.

Examples

curl — personal key

Terminal
curl -X POST 'https://vibecode.bitrix24.com/v1/tasks/289/disapprove' \
  -H 'X-Api-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{}'

curl — OAuth application

Terminal
curl -X POST 'https://vibecode.bitrix24.com/v1/tasks/289/disapprove' \
  -H 'X-Api-Key: YOUR_APP_KEY' \
  -H 'Authorization: Bearer USER_SESSION_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{}'

JavaScript — personal key

javascript
const response = await fetch('https://vibecode.bitrix24.com/v1/tasks/289/disapprove', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
})
const result = await response.json()
console.log(result.data.task.status)

JavaScript — OAuth application

javascript
const response = await fetch('https://vibecode.bitrix24.com/v1/tasks/289/disapprove', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
})
const result = await response.json()
console.log(result.data.task.status)

Response fields

Field Type Description
Fieldsuccess Typeboolean Descriptiontrue on success
Fielddata.task Typeobject DescriptionThe full task object after the action. Values arrive in raw form: numbers as strings ("id": "289"), flags as Y or N ("taskControl": "Y"). GET /v1/tasks/:id returns the same fields as numbers and true/false
Fielddata.task.id Typestring DescriptionTask ID
Fielddata.task.status Typestring DescriptionStatus after the action, here 2 — Pending. Value meanings: GET /v1/tasks/fields → fields.status.enum
Fielddata.task.responsibleId Typestring DescriptionID of the assignee the task returned to. List: GET /v1/users
Fielddata.task.action Typeobject DescriptionWhich actions the key's user can take after the call: the key is the action name (start, pause, complete, approve, disapprove, defer, renew and others), the value is true or false

Response example

Only the main fields of the task object are shown.

JSON
{
  "success": true,
  "data": {
    "task": {
      "id": "289",
      "title": "Prepare the quarterly report",
      "status": "2",
      "statusChangedDate": "2026-10-13T13:46:47+02:00",
      "createdBy": "27",
      "responsibleId": "1",
      "closedDate": null,
      "taskControl": "Y",
      "action": {
        "start": true,
        "pause": false,
        "complete": true,
        "approve": false,
        "disapprove": false,
        "defer": true,
        "renew": false
      }
    }
  }
}

Error response example

422 — the task is not awaiting review, for example because it is already completed:

JSON
{
  "success": false,
  "error": {
    "code": "BITRIX_ERROR",
    "message": "Action unavailable",
    "b24Code": "1048582"
  }
}

The error.message text comes from Bitrix24, so its wording and language depend on the Bitrix24 account language. Branch on error.code, not on the message text.

Errors

HTTP Code Description
HTTP400 CodeINVALID_PARAMS DescriptiontaskId is not a positive integer: taskId must be a positive integer
HTTP400 CodeINVALID_PARAMS DescriptionThe request body is not a JSON object: body must be an object
HTTP400 CodeINVALID_PARAMS DescriptionThe body contains fields other than params: body contains unsupported fields
HTTP400 CodeINVALID_PARAMS Descriptionparams is not an object: params must be an object
HTTP401 CodeMISSING_API_KEY DescriptionX-Api-Key is missing
HTTP401 CodeINVALID_API_KEY DescriptionThe key is not found
HTTP401 CodeTOKEN_MISSING DescriptionThe key has no valid Bitrix24 token
HTTP403 CodeSCOPE_DENIED DescriptionThe key lacks the task or tasks scope
HTTP403 CodeWRITE_BLOCKED_READONLY_KEY DescriptionThe key is read-only
HTTP403 CodeBITRIX_ACCESS_DENIED DescriptionThe key's user has no rights to the task
HTTP422 CodeBITRIX_ERROR DescriptionThe task is not in the Awaiting Control status: Action unavailable
HTTP422 CodeBITRIX_ERROR DescriptionNo task exists with this taskId. The message is the same: Action unavailable

The full list of common API errors — Errors.

Known specifics

  • The action works only on a task in the Awaiting Control status. A task reaches this status when its taskControl review is enabled and someone other than the creator completes it. After a rejection the assignee can complete the task again, and it goes back to review.
  • Availability is visible in advance. The action map in the GET /v1/tasks/:id response shows disapprove: true when the key's user can reject the result right now. Checking it before the call avoids a 422 response.
  • A missing task does not return 404. An unknown taskId gets the same 422 BITRIX_ERROR with the message Action unavailable as a task in the wrong status. To tell the two apart, request the task with GET /v1/tasks/:id: for a missing task it returns 404.

See also