# sign.b2e.document.send

URL: https://chugunov.pro/api-bitrix24/sign/sign-b2e-document-send/
Проверено на Битрикс24 REST API, обновлено 11.09.2026 (ревизия источника fb39d6c).
Источник: официальная документация Битрикс24 (bitrix-tools/b24-rest-docs, лицензия MIT, © Bitrix). Справочник независимый, официальной документацией не является.

Отправить документ на подписание
Scope: `sign.b2e, crm`
Кто может выполнять метод: пользователь с правом создавать документы КЭДО

## Описание

Метод `sign.b2e.document.send` отправляет документ на подписание со стороны компании.

Метод работает только в контексте авторизации [приложения](https://apidocs.bitrix24.ru/settings/app-installation/index.html).

## Параметры

- `fields` `object` — обязательный. Параметры отправки документа на подписание [(подробное описание)](#fields)
- `language` `string` — необязательный. Язык локализации статусов в ответе.
  По умолчанию `en`

### Параметр fields

- `company` `object` — обязательный. Компания, от имени которой отправляется документ [(подробное описание)](#company)
- `members` `array` — обязательный. Список участников подписания. Должен содержать минимум одного участника с ролью `signer` и одного с ролью `assignee` [(подробное описание)](#members)
- `responsible` `object` — обязательный. Ответственный за документ [(подробное описание)](#responsible)
- `companyProviderUid` `string` — обязательный. Идентификатор провайдера подписи. Получить список доступных провайдеров подписи можно методом [sign.b2e.company.provider.list](https://chugunov.pro/api-bitrix24/sign/sign-b2e-company-provider-list/)
- `files` `array` — обязательный. Файл подписываемого документа [(подробное описание)](#files)
- `regionDocumentType` `string` — обязательный. Тип документа для региона [(подробное описание)](#region-document-type)
- `externalSettings` `object` — обязательный. Внешние параметры документа [(подробное описание)](#external-settings)
- `language` `string` — необязательный. Язык документа

### Параметр company

- `uuid` `string` — обязательный. UUID компании в HCM Link.
  Требует дополнительный scope [`humanresources.hcmlink`](https://apidocs.bitrix24.ru/api-reference/scopes/permissions.html)
- `crmId` `integer` — обязательный. Идентификатор компании в CRM, подключенный в интеграции как «моя компания»

### Элемент массива members

- `employeeCode` `string` — обязательный. Код сотрудника в HCM Link.
  Требует дополнительный scope [`humanresources.hcmlink`](https://apidocs.bitrix24.ru/api-reference/scopes/permissions.html)
- `employeeId` `integer` — обязательный. Идентификатор сотрудника в HCM Link.
  Требует дополнительный scope [`humanresources.hcmlink`](https://apidocs.bitrix24.ru/api-reference/scopes/permissions.html)
- `userId` `integer` — обязательный. Идентификатор пользователя в Битрикс24
- `role` `string` — обязательный. Роль участника. Возможные значения: 
  - `signer` — подписант, 
  - `assignee` — представитель компании, 
  - `reviewer` — согласующий, 
  - `editor` — редактор

### Параметр responsible

- `employeeCode` `string` — обязательный. Код сотрудника в HCM Link.
  Требует дополнительный scope [`humanresources.hcmlink`](https://apidocs.bitrix24.ru/api-reference/scopes/permissions.html)
- `employeeId` `integer` — обязательный. Идентификатор сотрудника в HCM Link.
  Требует дополнительный scope [`humanresources.hcmlink`](https://apidocs.bitrix24.ru/api-reference/scopes/permissions.html)
- `userId` `integer` — обязательный. Идентификатор пользователя в Битрикс24
- `role` `string` — необязательный. Роль участника. Возможные значения:
  - `signer` — подписант, 
  - `assignee` — представитель компании, значение по умолчанию
  - `reviewer` — согласующий, 
  - `editor` — редактор

### Элемент массива files

- `fileName` `string` — обязательный. Имя файла. Обязательно с расширением `.pdf`
- `fileType` `string` — обязательный. MIME-тип файла. Поддерживается `application/pdf`
- `fileContent` `string` — обязательный. Содержимое файла, закодированное в Base64

### Параметр externalSettings

- `externalId` `string` — обязательный. Внешний идентификатор. Максимальная длина — 255 символов
- `externalDateCreate` `string` — обязательный. Дата создания внешнего документа в формате ISO 8601

## Ответ

HTTP-статус: 200

```json
{
    "result": {
        "uid": "b6f5f1f1-9d20-4b6b-ae0f-2f0a8a0c2b3c",
        "state": {
            "code": "sent",
            "name": "Отправлен"
        },
        "members": [
            {
                "uid": "f1c2d3e4",
                "role": "signer",
                "party": 0,
                "user": {
                    "employeeCode": "EMP-001",
                    "employeeId": 123,
                    "userId": 25
                },
                "state": {
                    "code": "waiting",
                    "name": "Ожидает"
                }
            }
        ]
    },
    "time": {
        "start": 1739860000.123,
        "finish": 1739860000.456,
        "duration": 0.333,
        "processing": 0.111,
        "date_start": "2025-02-18T09:19:34+03:00",
        "date_finish": "2025-02-18T09:19:34+03:00",
        "operating_reset_at": 1739860600,
        "operating": 0
    }
}
```

### Возвращаемые данные

- `result` `object`. Информация о документе и участниках подписания
- `time` `time`. Информация о времени выполнения запроса

## Ошибки

HTTP-статус: 200

```json
{
    "error": "BAD_REQUEST",
    "error_description": "[companyProviderUid] field is required"
}
```

- `ACCESS_DENIED` — Access denied!. Недостаточно прав
- `WRONG_AUTH_TYPE` — Current authorization type is denied for this method. Вызов не из контекста приложения
- `BAD_REQUEST` — Empty request fields. Не передан объект `fields`
- `BAD_REQUEST` — companyProviderUid field is required. Не передан `companyProviderUid`
- `BAD_REQUEST` — The responsible field is required. Не передан `responsible`
- `BAD_REQUEST` — At least one signing party with role signer is required. В `members` нет участника с ролью `signer`
- `BAD_REQUEST` — At least one signing party with role assignee is required. В `members` нет участника с ролью `assignee`
- `BAD_REQUEST` — Invalid role .... Передана роль вне допустимых значений
- `BAD_REQUEST` — Employee ID is required. Не передан `employeeId`/`employeeCode` и не передан `userId`
- `BAD_REQUEST` — Employee with code ... was not found. Сотрудник с указанным `employeeCode` не найден
- `BAD_REQUEST` — Employee with ID ... was not found. Сотрудник с указанным `employeeId` не найден
- `BAD_REQUEST` — Could not find employee for specified User ID. Пользователь по `userId` не найден
- `BAD_REQUEST` — Could not find user for specified employee. Для сотрудника не найден пользователь
- `BAD_REQUEST` — At least one file is required to sign the document. Не передан массив `files`
- `BAD_REQUEST` — Signing multiple files is currently not supported. В `files` передано более одного файла
- `BAD_REQUEST` — The specified file type is not supported. Указан `fileType`, отличный от `application/pdf`
- `BAD_REQUEST` — Invalid file name. Некорректное имя файла
- `BAD_REQUEST` — Invalid file name. File extension is not specified. Не указано расширение файла
- `BAD_REQUEST` — The specified file extension is not supported. Расширение файла не поддерживается
- `BAD_REQUEST` — Region document type is required. Use value '12.999' as a default value. Не передан `regionDocumentType` при наличии списка кодов
- `BAD_REQUEST` — Region document type is not valid. Use value '12.999' as a default value. Передан неподдерживаемый `regionDocumentType`
- `BAD_REQUEST` — Signing provider is not available. Провайдер недоступен для компании
- `BAD_REQUEST` — Signing provider has expired. Истек срок действия провайдера
- `BAD_REQUEST` — External date create field is required. Не передан `externalSettings.externalDateCreate`
- `BAD_REQUEST` — External ID field is required. Не передан `externalSettings.externalId`
- `BAD_REQUEST` — External date create invalid field value. Неверный формат даты в `externalSettings.externalDateCreate`
- `BAD_REQUEST` — External ID maximum length of 255 is exceeded. Превышена длина `externalSettings.externalId`
- `INTERNAL_ERROR` — Internal error. Ошибка при отправке документа или формировании ответа
- — — humanresources module is not installed. Модуль `humanresources` не установлен при использовании полей HCM Link

## Примеры запроса

### cURL (OAuth)

```bash
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"fields":{"company":{"crmId":12},"members":[{"userId":25,"role":"signer"},{"userId":42,"role":"assignee"}],"responsible":{"userId":7},"companyProviderUid":"d4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b","files":[{"fileName":"contract.pdf","fileType":"application/pdf","fileContent":"JVBERi0xLjQKJ..."}],"regionDocumentType":"12.999","externalSettings":{"externalId":"EXT-123","externalDateCreate":"2025-02-18T09:19:34+03:00"}},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/sign.b2e.document.send
```

### JS (TS)

```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 } from '@bitrix24/b24jssdk'

declare const $b24: B24Frame

// Shape of the payload returned in result (match the "response handling" section of the page)
type SendDocumentResult = {
  uid: string
  state: {
    code: string
    name: string
  }
  members: {
    uid: string
    role: string
    party: number
    user: {
      employeeCode: string
      employeeId: number
      userId: number
    }
    state: {
      code: string
      name: string
    }
  }[]
}

try {
  const response = await $b24.actions.v2.call.make<SendDocumentResult>({
    method: 'sign.b2e.document.send',
    params: {
      fields: {
        company: { crmId: 12 },
        members: [
          { userId: 25, role: 'signer' },
          { userId: 42, role: 'assignee' },
        ],
        responsible: { userId: 7 },
        companyProviderUid: 'd4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b',
        files: [
          {
            fileName: 'contract.pdf',
            fileType: 'application/pdf',
            fileContent: 'JVBERi0xLjQKJ...',
          },
        ],
        regionDocumentType: '12.999',
        externalSettings: {
          externalId: 'EXT-123',
          externalDateCreate: '2025-02-18T09:19:34+03:00',
        },
      },
    },
    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('Document uid:', result.uid, 'state:', result.state.code, 'members:', result.members.length)
  }
} catch (error) {
  // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
  console.error(error)
}
```

### JS (UMD)

```html
<!-- 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 sendDocument() {
    try {
      // Initialize the SDK inside a Bitrix24 frame
      const $b24 = await B24Js.initializeB24Frame()

      const response = await $b24.actions.v2.call.make({
        method: 'sign.b2e.document.send',
        params: {
          fields: {
            company: { crmId: 12 },
            members: [
              { userId: 25, role: 'signer' },
              { userId: 42, role: 'assignee' },
            ],
            responsible: { userId: 7 },
            companyProviderUid: 'd4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b',
            files: [
              {
                fileName: 'contract.pdf',
                fileType: 'application/pdf',
                fileContent: 'JVBERi0xLjQKJ...',
              },
            ],
            regionDocumentType: '12.999',
            externalSettings: {
              externalId: 'EXT-123',
              externalDateCreate: '2025-02-18T09:19:34+03:00',
            },
          },
        },
        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('Document uid:', result.uid, 'state:', result.state.code, 'members:', result.members.length)
    } catch (error) {
      // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
      console.error(error)
    }
  }

  document.addEventListener('DOMContentLoaded', sendDocument)
</script>
```

### Python

```python
from b24pysdk.errors import BitrixAPIError, BitrixSDKException

fields = {
    "company": {
        "crmId": 12,
    },
    "members": [
        {
            "userId": 25,
            "role": "signer",
        },
        {
            "userId": 42,
            "role": "assignee",
        },
    ],
    "responsible": {
        "userId": 7,
    },
    "companyProviderUid": "d4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b",
    "files": [
        {
            "fileName": "contract.pdf",
            "fileType": "application/pdf",
            "fileContent": "JVBERi0xLjQKJ...",
        },
    ],
    "regionDocumentType": "12.999",
    "externalSettings": {
        "externalId": "EXT-123",
        "externalDateCreate": "2025-02-18T09:19:34+03:00",
    },
}

try:
    bitrix_response = client.sign.b2e.document.send(
        fields=fields,
    ).response
    result = bitrix_response.result
    print(result)
except BitrixAPIError as error:
    print(
        "Ошибка Bitrix API",
        f"error: {error.error}",
        f"error_description: {error.error_description}",
        sep="\n",
    )
except BitrixSDKException as error:
    print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
    print(f"Непредвиденная ошибка: {error}")
```

### PHP

```php
try {
    $response = $b24Service
        ->core
        ->call(
            'sign.b2e.document.send',
            [
                'fields' => [
                    'company' => [
                        'crmId' => 12
                    ],
                    'members' => [
                        [ 'userId' => 25, 'role' => 'signer' ],
                        [ 'userId' => 42, 'role' => 'assignee' ]
                    ],
                    'responsible' => [ 'userId' => 7 ],
                    'companyProviderUid' => 'd4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b',
                    'files' => [
                        [
                            'fileName' => 'contract.pdf',
                            'fileType' => 'application/pdf',
                            'fileContent' => 'JVBERi0xLjQKJ...'
                        ]
                    ],
                    'regionDocumentType' => '12.999',
                    'externalSettings' => [
                        'externalId' => 'EXT-123',
                        'externalDateCreate' => '2025-02-18T09:19:34+03:00'
                    ]
                ]
            ]
        );

    $result = $response
        ->getResponseData()
        ->getResult();

    echo 'Success: ' . print_r($result, true);

} catch (Throwable $e) {
    error_log($e->getMessage());
    echo 'Error: ' . $e->getMessage();
}
```

### BX24.js

```javascript
BX24.callMethod(
    'sign.b2e.document.send',
    {
        fields: {
            company: { crmId: 12 },
            members: [
                { userId: 25, role: 'signer' },
                { userId: 42, role: 'assignee' }
            ],
            responsible: { userId: 7 },
            companyProviderUid: 'd4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b',
            files: [
                {
                    fileName: 'contract.pdf',
                    fileType: 'application/pdf',
                    fileContent: 'JVBERi0xLjQKJ...'
                }
            ],
            regionDocumentType: '12.999',
            externalSettings: {
                externalId: 'EXT-123',
                externalDateCreate: '2025-02-18T09:19:34+03:00'
            }
        }
    },
    result => {
        if (result.error()) {
            console.error(result.error());
        } else {
            console.dir(result.data());
        }
    }
);
```

### PHP CRest

```php
require_once('crest.php');

$result = CRest::call(
    'sign.b2e.document.send',
    [
        'fields' => [
            'company' => [ 'crmId' => 12 ],
            'members' => [
                [ 'userId' => 25, 'role' => 'signer' ],
                [ 'userId' => 42, 'role' => 'assignee' ]
            ],
            'responsible' => [ 'userId' => 7 ],
            'companyProviderUid' => 'd4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b',
            'files' => [
                [
                    'fileName' => 'contract.pdf',
                    'fileType' => 'application/pdf',
                    'fileContent' => 'JVBERi0xLjQKJ...'
                ]
            ],
            'regionDocumentType' => '12.999',
            'externalSettings' => [
                'externalId' => 'EXT-123',
                'externalDateCreate' => '2025-02-18T09:19:34+03:00'
            ]
        ]
    ]
);

if (isset($result['error'])) {
    echo 'Ошибка: ' . $result['error_description'];
} else {
    echo '<PRE>';
    print_r($result['result']);
    echo '</PRE>';
}
```

### Go

```go
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "sign.b2e.document.send", b24.Params{
	"fields": b24.Params{
		"company": b24.Params{
			"crmId": 12,
		},
		"members": []b24.Params{
			{
				"userId": 25,
				"role":   "signer",
			},
			{
				"userId": 42,
				"role":   "assignee",
			},
		},
		"responsible": b24.Params{
			"userId": 7,
		},
		"companyProviderUid": "d4f6b8a1-4c6d-4d8c-9c7c-2d1b1f6d0f2b",
		"files": []b24.Params{
			{
				"fileName":    "contract.pdf",
				"fileType":    "application/pdf",
				"fileContent": "JVBERi0xLjQKJ...",
			},
		},
		"regionDocumentType": "12.999",
		"externalSettings": b24.Params{
			"externalId":         "EXT-123",
			"externalDateCreate": "2025-02-18T09:19:34+03:00",
		},
	},
})
if err != nil {
	return fmt.Errorf("sign.b2e.document.send: %w", err)
}

var item struct {
	Uid string `json:"uid"`
}
if err := json.Unmarshal(res.Result, &item); err != nil {
	return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.Uid)
```

Оригинал в официальной документации: https://apidocs.bitrix24.ru/api-reference/sign/sign-b2e-document-send.html
