{% note tip "" %}
If you are developing integrations for Bitrix24 using AI tools (Codex, Claude Code, Cursor), connect to the MCP server so that the assistant can utilize the official REST documentation.
{% endnote %}
Scope:
tasksWho can execute the method: any user
{% note info "" %}
This method belongs to REST 3.0. The call specifics and response format of the new API version are described in the REST 3.0 overview.
{% endnote %}
The method tasks.task.add adds a new task.
{% include Note on required parameters %}
#|
|| Name
type | Description ||
|| fields*
object | Task fields. To create a task, fill in the required fields; without them, the creation operation will not be executed.
||
|#
{% include Note on required parameters %}
#|
|| Name
type | Description ||
|| title*
string | Task title ||
|| creatorId*
integer | Creator's identifier.
You can obtain the employee identifier using the user.get method. ||
|| responsibleId*
integer | Executor's identifier.
You can obtain the employee identifier using the user.get method. ||
|#
{% note info "" %}
Description of all task fields
{% endnote %}
{% include Note on examples %}
{% note info "" %}
The new API call differs by adding the /api/ segment to the request URL:
https://{installation_address}/rest/api/{user_id}/{webhook_token}/tasks.task.add
{% endnote %}
{% list tabs %}
-
cURL (Webhook)
curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"fields":{"title":"Task Title","deadline":"2025-12-31T23:59:59+02:00","creatorId":29,"responsibleId":1,"crmItemIds":["L_1000959"]}}' \ https://**put_your_bitrix24_address**/rest/api/**put_your_user_id_here**/**put_your_webhook_here**/tasks.task.add
-
cURL (OAuth)
curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"fields":{"title":"Task Title","deadline":"2025-12-31T23:59:59+02:00","creatorId":29,"responsibleId":1,"crmItemIds":["L_1000959"]},"auth":"**put_access_token_here**"}' \ https://**put_your_bitrix24_address**/rest/api/tasks.task.add
-
JS (TS)
// This snippet is an ES module: top-level await requires type="module" or a bundler. // $b24 is an already-initialized SDK instance (see the SDK "Get started" guide). import { Text } from '@bitrix24/b24jssdk' import type { B24Frame, ISODate } from '@bitrix24/b24jssdk' declare const $b24: B24Frame // Shape of the payload returned in result (match the "response handling" section of the page) type TaskAddResult = { item: { id: number title: string description: string deadline: ISODate | null priority: string status: string parentId: number | null crmItemIds: string[] } } try { const response = await $b24.actions.v3.call.make<TaskAddResult>({ method: 'tasks.task.add', params: { fields: { title: 'Task title', deadline: '2025-12-31T23:59:59+02:00', creatorId: 29, responsibleId: 1, crmItemIds: ['L_1000959'], }, }, requestId: Text.getUuidRfc4122() }) // The payload is available only on a successful response if (!response.isSuccess) { console.error(response.getErrorMessages().join('; ')) } else { const result = response.getData()!.result console.info('Task created:', result.item.id, result.item.title, result.item.status) } } catch (error) { // Thrown on transport or SDK failures (AjaxError, SdkError, etc.) console.error(error) }
-
JS (UMD)
<!-- Load the SDK (UMD build); it is exposed as the global B24Js --> <script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script> <script> async function addTask() { try { // Initialize the SDK inside a Bitrix24 frame const $b24 = await B24Js.initializeB24Frame() const response = await $b24.actions.v3.call.make({ method: 'tasks.task.add', params: { fields: { title: 'Task title', deadline: '2025-12-31T23:59:59+02:00', creatorId: 29, responsibleId: 1, crmItemIds: ['L_1000959'], }, }, requestId: B24Js.Text.getUuidRfc4122() }) // The payload is available only on a successful response if (!response.isSuccess) { console.error(response.getErrorMessages().join('; ')) return } const result = response.getData().result console.info('Task created:', result.item.id, result.item.title, result.item.status) } catch (error) { // Thrown on transport or SDK failures (AjaxError, SdkError, etc.) console.error(error) } } document.addEventListener('DOMContentLoaded', addTask) </script>
-
PHP
SDKs do not yet support the
/rest/api/address in calls. Use direct HTTP requests, for example, viacurlorfetch.try { $response = $b24Service ->core ->call( 'tasks.task.add', [ 'fields' => [ 'title' => 'Task Title', 'deadline' => '2025-12-31T23:59:59+02:00', 'creatorId' => 29, 'responsibleId' => 1, 'crmItemIds' => ['L_1000959'], ], ] ); $result = $response ->getResponseData() ->getResult(); echo 'Success: ' . print_r($result, true); } catch (Throwable $e) { error_log($e->getMessage()); echo 'Error creating task: ' . $e->getMessage(); }
-
BX24.js
SDKs do not yet support the
/rest/api/address in calls. Use direct HTTP requests, for example, viacurlorfetch.BX24.callMethod( 'tasks.task.add', { fields: { title: 'Task Title', deadline: '2025-12-31T23:59:59+02:00', creatorId: 29, responsibleId: 1, crmItemIds: ['L_1000959'] } }, function(result){ console.info(result.data()); console.log(result); } );
-
PHP CRest
SDKs do not yet support the
/rest/api/address in calls. Use direct HTTP requests, for example, viacurlorfetch.require_once('crest.php'); $result = CRest::call( 'tasks.task.add', [ 'fields' => [ 'title' => 'Task Title', 'deadline' => '2025-12-31T23:59:59+02:00', 'creatorId' => 29, 'responsibleId' => 1, 'crmItemIds' => ['L_1000959'] ] ] ); echo '<PRE>'; print_r($result); echo '</PRE>';
-
Go
// client and ctx are already created — see the Go SDK section res, err := client.Core().Call(ctx, "tasks.task.add", b24.Params{ "fields": b24.Params{ "title": "Task Title", "deadline": "2025-12-31T23:59:59+02:00", "creatorId": 29, "responsibleId": 1, "crmItemIds": []string{"L_1000959"}, }, }) if err != nil { return fmt.Errorf("tasks.task.add: %w", err) } // The method wraps the response in an object with the "item" key. raw, ok := b24.Unwrap(res.Result, "item") if !ok { return fmt.Errorf("no item key in the response") } var item struct { ID b24.ID `json:"id"` Title string `json:"title"` Description string `json:"description"` Deadline string `json:"deadline"` NeedsControl bool `json:"needsControl"` Priority string `json:"priority"` } if err := json.Unmarshal(raw, &item); err != nil { return fmt.Errorf("parse response: %w", err) } fmt.Println(item.ID, item.Title)
{% endlist %}
HTTP Status: 200
{
"result": {
"item": {
"id": 3839,
"title": "Task Title",
"description": "",
"deadline": "2026-01-01T00:59:59+03:00",
"needsControl": false,
"startPlan": null,
"endPlan": null,
"fileIds": null,
"checklist": [],
"epicId": null,
"storyPoints": null,
"priority": "average",
"status": "pending",
"statusChanged": null,
"parentId": null,
"containsChecklist": false,
"containsSubTasks": false,
"containsRelatedTasks": false,
"containsGanttLinks": false,
"containsPlacements": true,
"containsResults": false,
"numberOfReminders": 0,
"chatId": 2603,
"plannedDuration": 0,
"actualDuration": 0,
"durationType": "days",
"started": null,
"estimatedTime": 0,
"replicate": false,
"changed": "2025-12-11T12:25:33+03:00",
"closed": null,
"activity": "2025-12-11T12:25:33+03:00",
"guid": "{13d2c44c-730e-45dd-b99c-fdaad4e3c1fa}",
"xmlId": null,
"exchangeId": null,
"exchangeModified": null,
"outlookVersion": 1,
"mark": "none",
"allowsChangeDeadline": false,
"allowsTimeTracking": false,
"matchesWorkTime": false,
"addInReport": null,
"isMultitask": false,
"siteId": "s1",
"deadlineCount": null,
"declineReason": null,
"forumTopicId": null,
"link": "\/company\/personal\/user\/1\/tasks\/task\/view\/3839\/",
"rights": {
"read": true,
"watch": true,
"mute": true,
"createResult": true,
"edit": true,
"remove": true,
"complete": true,
"approve": false,
"disapprove": false,
"start": true,
"take": false,
"delegate": true,
"defer": true,
"renew": false,
"deadline": true,
"datePlan": true,
"changeDirector": false,
"changeResponsible": true,
"changeAccomplices": true,
"pause": false,
"timeTracking": false,
"mark": true,
"changeStatus": true,
"reminder": true,
"addAuditors": true,
"elapsedTime": true,
"favorite": true,
"checklistAdd": true,
"checklistEdit": true,
"checklistSave": true,
"checklistToggle": true,
"automate": true,
"resultEdit": false,
"completeResult": true,
"removeResult": false,
"resultRead": false,
"admin": true,
"createSubtask": true,
"copy": true,
"saveAsTemplate": true,
"attachFile": true,
"detachFile": true,
"detachParent": true,
"createGanttDependence": true,
"sort": false
},
"archiveLink": "\/bitrix\/tools\/disk\/uf.php?entityId=3839\u0026entity=TASKS_TASK\u0026fieldName=UF_TASK_WEBDAV_FILES\u0026signature=89f4f46e33905bcb0899c8cb9613a62cf8e104b182824e799d2aeb9d1e5bf526\u0026action=downloadArchiveByEntity\u0026ncc=1",
"crmItemIds": [
"L_1000959"
],
"requireResult": false,
"matchesSubTasksTime": false,
"autocompleteSubTasks": false,
"allowsChangeDatePlan": false,
"maxDeadlineChangeDate": null,
"maxDeadlineChanges": null,
"requireDeadlineChangeReason": false,
"inFavorite": [],
"inPin": [],
"inGroupPin": [],
"inMute": [],
"dependsOn": [],
"scenarios": [
"default"
]
}
},
"time": {
"start": 1765445133,
"finish": 1765445134.139558,
"duration": 1.1395580768585205,
"processing": 1,
"date_start": "2025-12-11T12:25:33+03:00",
"date_finish": "2025-12-11T12:25:34+03:00",
"operating_reset_at": 1765445733,
"operating": 0
}
}#|
|| Name
type | Description ||
|| result
object | Object with response data ||
|| item
object | Object with task field values. Description of task fields with related objects ||
|| time
time | Information about the request execution time ||
|#
HTTP Status: 400
{
"error": {
"code": "BITRIX_REST_V3_EXCEPTION_VALIDATION_REQUESTVALIDATIONEXCEPTION",
"message": "Error during request object validation",
"validation": [
{
"message": "Field `deadline` requires data type `DateTime` for this request",
"field": "deadline"
}
]
}
}{% include notitle error handling %}
Error Code: BITRIX_REST_V3_EXCEPTION_VALIDATION_REQUESTVALIDATIONEXCEPTION
#|
|| Field | Error Description | How to Fix ||
|| title
responsibleId
creatorId
fields | Required field #FIELD# is missing | Add the specified field to the request body ||
|| #FIELD# | Field #FIELD# requires data type #TYPE# for this request | Ensure the provided value is of the correct type ||
|| responsibleId | User specified in the "Executor" field not found | Provide the identifier of an existing user in the responsibleId field ||
|| creatorId | "" | Provide the identifier of an existing user in the creatorId field ||
|| parentId | Task specified in the "Parent Task" field not found | Provide the identifier of an existing task in the parentId field ||
|| endPlan | The end date specified in the planning is earlier than the start date | Provide an endPlan date later than startPlan ||
|| endPlan | The planning duration specified is too long | Reduce the date in the endPlan field ||
|#
{% include system errors %}