Skip to content

Latest commit

 

History

History
503 lines (428 loc) · 15.3 KB

File metadata and controls

503 lines (428 loc) · 15.3 KB

Add Task v 3.0 tasks.task.add

{% 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: tasks

Who 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.

Method Parameters

{% 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. || |#

Parameter fields {#fields}

{% 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 %}

Code Examples

{% 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, via curl or fetch.

    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, via curl or fetch.

    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, via curl or fetch.

    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 %}

Response Handling

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
    }
}

Returned Data

#| || 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 || |#

Error Handling

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 %}

Possible Error Codes

Request Validation Errors

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 %}

Continue Learning