REST API 1С ЭЦП
REST API для интеграции с 1С
Полная документация по API для загрузки документов, подписания, отправки клиентам и проверки подписей из 1С:Предприятие
list Оглавление
- vpn_key Аутентификация
- account_tree Типовой сценарий
- bolt Отправка одним запросом
- folder Список документов
- description Получить документ
- upload_file Загрузить документ
- draw Серверная подпись (отключена)
- send Отправить клиенту
- verified_user Проверить подписи
- people Клиенты: список и создание
- archive Скачать ZIP-архив
- block Отозвать документ
- key Загрузить контейнер
- delete Удалить контейнер
- verified Загрузить подписанный
- tune Настройки (формат подписи)
- sms ПЭП: отправить
- refresh ПЭП: переотправить код
- info ПЭП: статус
- group_add ПЭП: массовая отправка
- webhook Вебхуки
- science Песочница, идемпотентность, лимиты
- error Коды ошибок
- code Примеры для 1С
- download Скачать обработку
vpn_key Аутентификация
Все запросы к API аутентифицируются ключом. Рекомендуется заголовок X-Api-Key: КЛЮЧ; также поддерживается Authorization: Bearer КЛЮЧ. Для совместимости работает и GET-параметр api_key, но он попадает в логи и историю — в рабочей интеграции передавайте ключ заголовком. Ключ создаётся в личном кабинете: Настройки → API-ключи.
| Параметр | Значение |
|---|---|
| Базовый URL | https://cert4u.ru/api.php (метод задаётся параметром action) |
| Аутентификация | Заголовок X-Api-Key (рекомендуется) / Authorization: Bearer / GET-параметр api_key (legacy) |
| Тело POST | JSON (Content-Type: application/json), форма или multipart/form-data (для методов с файлами) |
| Формат ответа | JSON (UTF-8) |
| Лимит запросов | 60 запросов в минуту (с одного IP и на один ключ), плюс дневные лимиты тарифа — см. лимиты |
Изоляция аккаунтов. Каждый API-ключ принадлежит одному аккаунту Cert4U. Все методы видят и меняют только документы и клиентов этого аккаунта; чужой документ для API «не существует» (ответ 404).
Примечание: в примерах ниже ключ для краткости иногда показан в URL (&api_key=ВАШ_КЛЮЧ) — его всегда можно заменить заголовком X-Api-Key. Если API выключен на сервисе, все запросы вернут 403 «API для 1С отключен».
account_tree Типовой сценарий подписания
Полный (пошаговый) цикл работы с документом через API. Если нужно просто отправить документ контрагенту на подпись — есть отправка одним запросом (без создания клиента), см. ниже.
в 1С (
МенеджерКриптографии), КриптоАРМ или cryptcp — прикреплённая или открепленная, как выбратьapi_1c_upload_signed — документ + .sig, статус signed_adminapi_1c_send — отправить ссылку на подписание (SMS/email)УКЭП (КриптоПро в браузере) или ПЭП (код из SMS/email)
api_1c_verify + api_1c_download_zip — проверить подписи, получить архивСерверная подпись (api_1c_sign_admin) отключена — она не являлась УКЭП. Подпись вашей организации ставится только вашей УКЭП: подпишите файл в 1С/КриптоАРМ и загрузите вместе с .sig через api_1c_upload_signed, дальше api_1c_send. Если подпись вашей организации не нужна (подписывает только контрагент) — используйте api_1c_send_document (УКЭП или ПЭП контрагента) или api_1c_pep_send.
bolt Отправка одним запросом рекомендуется
Самый простой способ: один запрос загружает документ и сразу отправляет его на подписание указанному лицу. Клиента создавать не нужно — передайте ФИО и телефон и/или email получателя. В ответ сразу приходят document_id и sign_url.
Получатель ищется среди контактов вашего аккаунта по телефону или email (форматы 8 900…, +7 (900)… и 900… из 10 цифр считаются одним номером). Если не найден — создаётся скрытый контакт: в списке «Клиенты» и в api_1c_clients он не показывается, дубликаты не плодятся. Ваша 1С ведёт контрагентов у себя — хранить наши client_id не требуется.
Запрос — POST, тип multipart/form-data. Файл передаётся полем document (если в запросе ровно один файл, имя поля не важно). Документ создаётся сразу в статусе sent, без подписи отправителя — метод предназначен для подписи контрагентом.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
document | file | обяз. | Файл документа (pdf, doc, docx, txt, rtf, odt, xls, xlsx, png, jpg, jpeg) |
client_name | string | обяз. | ФИО / наименование получателя |
client_phone | string | тел. или email | Телефон получателя (на него уходит SMS со ссылкой) |
client_email | string | тел. или email | Email получателя (на него уходит письмо со ссылкой) |
sign_type | string | опц. | pep_only (ПЭП по коду), ukep_only (только УКЭП) или пусто — на выбор получателя |
doc_name | string | опц. | Название документа (по умолчанию — имя файла) |
description | string | опц. | Описание документа |
company, inn | string | опц. | Организация и ИНН получателя (сохраняются только при создании нового контакта) |
signer_inn | string | опц. | ИНН того, кто должен подписать (УКЭП): 12 цифр — личный ИНН физлица/ИП/руководителя, 10 цифр — ИНН организации в сертификате. См. проверку подписанта |
signer_snils | string | опц. | СНИЛС того, кто должен подписать (11 цифр, можно с дефисами/пробелами) |
Проверка подписанта по ИНН/СНИЛС (защита от однофамильцев). Если передать signer_inn и/или signer_snils, то при подписании документа контрагентом через УКЭП сервер сверит их с сертификатом из файла подписи:
• signer_inn из 12 цифр сравнивается с личным ИНН владельца сертификата (физлицо, ИП, руководитель/сотрудник организации); из 10 цифр — с ИНН организации в сертификате;
• signer_snils сравнивается со СНИЛС владельца сертификата.
При несовпадении подпись не принимается (независимо от режима проверки), клиенту показывается «Документ должен подписать другой человек», в журнал пишется signer_mismatch. Значения проверяются при вызове: ИНН/СНИЛС с неверной контрольной суммой → HTTP 400. Поля возвращаются в api_1c_document и api_1c_verify (signer_inn, signer_snils, signer_check = {"result":"ok"} после успешной сверки). Для ПЭП (код по SMS/email) поля не применяются — подписанта подтверждает телефон/почта. В api_1c_send поля можно передать или уточнить перед отправкой.
Поддерживает заголовок Idempotency-Key и песочницу. Списывает одну отправку по тарифу (кроме песочницы).
Пример запроса (cURL)
Пример ответа
Повторно получить ссылку на уже отправленный документ можно через api_1c_pep_status&doc_id=... — вернёт тот же sign_url без повторной отправки SMS/письма. Повтор запроса с тем же Idempotency-Key (в течение 24 ч) вернёт document_id, document и "idempotent": true без новой отправки.
Если с вашей стороны нужна УКЭП конкретного лица (например, директора), используйте раздельный путь: api_1c_upload_signed (документ вместе с вашей подписью) → затем api_1c_send.
folder Список документов
Возвращает документы вашего аккаунта (постранично).
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
limit | int | опц. | Размер страницы, по умолчанию 50, максимум 200 |
offset | int | опц. | Смещение, по умолчанию 0 |
Пример запроса
Пример ответа
legal_status (UKEP_OK | UKEP_SUSPECT | UNEP | null) и has_manual_review — краткий итог 63-ФЗ-валидации подписи клиента; полный cert_validation — в api_1c_document.
Статусы документа
| Статус | Описание |
|---|---|
new | Загружен, не подписан |
signed_admin | Подписан отправителем (загружена УКЭП через api_1c_upload_signed) |
sent | Отправлен клиенту на подписание |
completed | Подписан обеими сторонами |
rejected | Клиент отклонил подписание |
revoked | Отозван отправителем |
description Получить документ
Возвращает подробную информацию об одном документе.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
id | string | обяз. | ID документа |
Пример запроса
Пример ответа
cert_validation — полный результат 63-ФЗ-валидации подписи клиента (см. раздел проверки); null, пока клиент не подписал.
upload_file Загрузить документ
Загружает новый документ в систему (статус new). Используйте multipart/form-data. Поддерживает заголовок Idempotency-Key — повтор с тем же ключом вернёт уже созданный документ ("idempotent": true), а не создаст дубль.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
document | file | обяз. | Файл документа (pdf, doc, docx, txt, rtf, odt, xls, xlsx, png, jpg, jpeg) |
doc_name | string | опц. | Название документа (по умолчанию «Без названия») |
description | string | опц. | Описание документа |
client_id | string | опц. | ID клиента (привязка; можно указать позже в api_1c_send) |
signer_inn | string | опц. | ИНН того, кто должен подписать (УКЭП): 12 цифр — личный ИНН физлица/ИП/руководителя, 10 цифр — ИНН организации в сертификате. См. проверку подписанта |
signer_snils | string | опц. | СНИЛС того, кто должен подписать (11 цифр, можно с дефисами/пробелами) |
Пример запроса (cURL)
Пример ответа
Максимальный размер файла: определяется настройками PHP на сервере (обычно 20 МБ). Допустимые расширения: pdf, doc, docx, txt, rtf, odt, xls, xlsx, png, jpg, jpeg. Каждый файл проверяется антивирусом; заражённый файл отклоняется с ошибкой 400.
block Серверная подпись отключена
Метод отключён и всегда отвечает HTTP 410: серверная подпись (OpenSSL) не является УКЭП и не подтверждает, что документ подписала ваша организация.
Вместо него:
• нужна подпись вашей организации — подпишите документ УКЭП в 1С и загрузите через api_1c_upload_signed (формат: прикреплённая или открепленная), затем api_1c_send;
• подписывает только контрагент — api_1c_send_document или api_1c_pep_send.
Ответ
send Отправить клиенту
Отправляет клиенту ссылку для подписания по SMS и/или email для уже загруженного документа (например, после api_1c_upload_signed — повторно файл слать не нужно). Документ должен быть в статусе signed_admin. Получателя можно указать по client_id (клиент вашего аккаунта) или напрямую — ФИО + телефон/почта: тогда контакт ищется среди ваших клиентов по телефону/email, а если не найден, создаётся скрытый (как в api_1c_send_document).
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
doc_id | string | обяз. | ID документа |
client_id | string | client_id ИЛИ inline | ID клиента вашего аккаунта (назначает/переопределяет получателя). Можно не указывать, если клиент уже привязан к документу |
client_name | string | inline | ФИО получателя (используется, если нет client_id) |
client_phone / client_email | string | inline | Телефон и/или почта получателя (нужен хотя бы один вместе с client_name) |
sign_type | string | опц. | ukep_only, pep_only или пусто (оба варианта) |
signer_inn | string | опц. | ИНН того, кто должен подписать (УКЭП): 12 цифр — личный ИНН физлица/ИП/руководителя, 10 цифр — ИНН организации в сертификате. См. проверку подписанта |
signer_snils | string | опц. | СНИЛС того, кто должен подписать (11 цифр, можно с дефисами/пробелами) |
Поддерживает песочницу; вне песочницы списывает одну отправку по тарифу.
Пример запроса (клиент по ID)
Пример запроса (получатель inline, без создания клиента)
Пример ответа
Клиент сможет подписать только УКЭП (КриптоПро)
Только ПЭП (код из SMS/email)
verified_user Проверить подписи
Полная криптографическая проверка подписей документа. Для УКЭП используется КриптоПро CSP (ГОСТ Р 34.10-2012). Возвращает данные сертификата: ИНН, СНИЛС, ОГРН и другие реквизиты.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
id | string | обяз. | ID документа (синоним — doc_id) |
Пример запроса
Пример ответа (УКЭП)
sig_format — формат подписи: detached (открепленная, .sig без документа) или attached (прикреплённая, документ внутри .sig). Формат определяется по самой подписи. Для прикреплённой сервер дополнительно сверяет вложенный документ с документом в системе; при расхождении — crypto_verify=false и content_mismatch=true. Если подпись математически верна, но цепочку сертификатов проверить полностью не удалось, добавляется crypto_chain_warning.
cosigned_signature — есть, только если документ подписан совместной подписью: один файл, внутри документ и подписи всех сторон (отправитель + клиент). signers — сколько подписей в файле, crypto_verify — КриптоПро подтвердил все подписи, content_mismatch — документ внутри не совпадает с документом в системе. В ZIP-архиве этот файл отдаётся как Документ.pdf.sig (см. ZIP-архив).
download_zip_url содержит API-ключ в параметре api_key — не передавайте эту ссылку третьим лицам и не пишите её в общие логи.
Поля stored_cert_info
| Поле | Описание |
|---|---|
subject_cn | ФИО / наименование организации |
subject_inn | ИНН подписанта |
subject_snils | СНИЛС подписанта |
subject_ogrn | ОГРН организации |
subject_org | Организация |
subject_title | Должность |
subject_email | |
issuer_cn | Удостоверяющий центр |
serial | Серийный номер сертификата |
thumbprint | Отпечаток (SHA1) |
valid_from / valid_to | Срок действия сертификата |
Валидация подписи (63-ФЗ)
Для каждой УКЭП-подписи в ответе api_1c_verify и в поле cert_validation документа возвращается юридический статус:
| Поле | Описание |
|---|---|
legal_status | UKEP_OK — соответствует УКЭП по 63-ФЗUKEP_SUSPECT — УКЭП, но есть поведенческие маркерыUNEP — не соответствует УКЭП (УНЭП) |
problems[] | Критические проблемы (влияют на legal_status) |
warnings[] | Предупреждения (не влияют на статус) |
manual_review[] | Маркеры, требующие ручной проверки |
codes[] | Коды всех сработавших проверок |
auc | Информация об аккредитации УЦ (реестр Минцифры) |
revocation | Статус отзыва сертификата (CRL) |
Проверки при подписании (блокировка)
Настраиваются в кабинете оператора → Настройки → Валидация подписей. При включении — клиент получит отказ при попытке подписать:
| Параметр (validation_checks) | Описание |
|---|---|
REQUIRE_INN_MATCH | ЭЦП должна совпадать со стороной договора. Блокирует если ИНН в сертификате ≠ ИНН контрагента в системе |
REQUIRE_TRUSTED_CA | УКЭП только из доверенного УЦ. Блокирует если УЦ не в реестре аккредитованных УЦ Минцифры РФ |
KEY_USAGE_NON_REPUDIATION | Требовать атрибут nonRepudiation в сертификате |
REQUIRE_KC2_PLUS | Требовать аппаратное СКЗИ (класс KC2+) |
require_ukep_strict | Глобально блокировать все УНЭП-подписи |
people Клиенты: список и создание
Возвращает клиентов (контрагентов) вашего аккаунта. Скрытые контакты, созданные автоматически при отправке с получателем «inline» (api_1c_send_document, api_1c_send без client_id), в список не попадают.
Пример ответа
Создать клиента (контрагента)
Создаёт клиента в вашем аккаунте и возвращает его id для последующей отправки (api_1c_send, api_1c_pep_send, api_1c_pep_bulk). Тело — JSON или форма. Если у вашего аккаунта уже есть клиент с таким email или phone — возвращается существующий ("existed": true), дубль не создаётся. Телефоны сравниваются по цифрам: 8 900 123-45-67, +7 (900) 123-45-67 и 9001234567 — один и тот же номер. Клиенты других аккаунтов при поиске не учитываются.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
name | string | обяз. | ФИО или наименование контрагента |
email | string | email или phone | Email (на него уходит ссылка на подписание) |
phone | string | email или phone | Телефон (на него уходит SMS) |
company, inn | string | опц. | Организация, ИНН |
ogrn, kpp, address, contact_person, position | string | опц. | Доп. реквизиты |
Пример запроса (cURL)
Пример ответа
При "existed": true возвращается ранее сохранённая карточка без изменений (переданные реквизиты её не перезаписывают), message = «Клиент уже существует, возвращён существующий».
archive Скачать ZIP-архив
Скачивает комплект документов в ZIP-архиве (Content-Type: application/zip, имя файла — <имя документа>_signed.zip).
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
id | string | обяз. | ID документа |
Содержимое архива
Имена файлов строятся от исходного имени документа; ниже для примера — Документ.pdf.
| Файл | Когда есть | Описание |
|---|---|---|
Документ.pdf | всегда | Оригинал документа (как был загружен) |
protocol.pdf | всегда | PDF-протокол подписания со штампом «Подписано ЭП» (реквизиты сертификатов, результаты проверки, SHA-256 документа) |
Документ.pdf.sig | есть совместная подпись | Совместная подпись: один файл CAdES-BES (прикреплённая) — внутри документ и подписи всех сторон. В этом случае отдельных _server.sig и _client.sig в архиве нет |
Документ_server.sig | нет совместной подписи | Подпись отправителя: УКЭП CAdES-BES (открепленная или прикреплённая) либо техническая серверная подпись OpenSSL (api_1c_sign_admin) |
Документ_client.sig | клиент подписал УКЭП, нет совместной | Подпись клиента CAdES-BES |
Документ_client.pep.txt | клиент подписал ПЭП | Подтверждение ПЭП (клиент, документ, дата, код подтверждения) |
Сертификат сервера (server.crt) и текстовый протокол в архив не входят. Совместную подпись Документ.pdf.sig достаточно открыть в Контур.Крипто или КриптоПро — будут видны документ и все подписи. Подробнее — в разделе «Формат подписи».
Пример запроса
block Отозвать документ
Отзывает документ — ссылка для подписания деактивируется, клиент видит сообщение об отзыве с причиной. Нельзя отозвать уже подписанный (completed) документ.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
doc_id | string | обяз. | ID документа |
reason | string | опц. | Причина отзыва (видна клиенту) |
Пример запроса
Пример ответа
Статусы документа
| Статус | Можно отозвать? | Описание |
|---|---|---|
new | Да | Новый, не подписан сервером |
signed_admin | Да | Подписан отправителем (УКЭП), не отправлен |
sent | Да | Отправлен клиенту, ожидает подписи |
completed | Нет | Подписан обеими сторонами |
rejected | Да | Отклонён клиентом |
revoked | — | Уже отозван |
key УКЭП отправителя из 1С и контейнеры
Основной способ поставить УКЭП вашей организации из 1С — подписать файл на стороне 1С (штатный МенеджерКриптографии, КриптоАРМ) и загрузить документ вместе с подписью методом api_1c_upload_signed. Формат подписи (открепленная/прикреплённая) берите из api_1c_settings.
Методы api_1c_upload_container / api_1c_delete_container позволяют хранить на сервере зашифрованный вашим PIN-кодом контейнер закрытого ключа (AES-256-CBC, сервер PIN не хранит). Работают только с ключами, привязанными к аккаунту.
upload Загрузить контейнер УКЭП
Загружает контейнер закрытого ключа КриптоПро для серверной подписи. Контейнер шифруется вашим PIN и хранится в зашифрованном виде. Только для тенантных ключей (не admin).
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
pin | string | обяз. | PIN-код (мин. 4 символа) для шифрования контейнера |
container | file | опц.* | Файл контейнера (multipart upload) |
container_base64 | string | опц.* | Контейнер в base64 (JSON body) |
* Укажите container или container_base64
Пример запроса
Пример ответа
Безопасность: контейнер шифруется AES-256-CBC с ключом = SHA-256(PIN + user_id). Сервер не хранит PIN. Важно: метод api_1c_sign_admin отключён — для УКЭП организации используйте api_1c_upload_signed.
delete Удалить контейнер УКЭП
Удаляет загруженный контейнер закрытого ключа с сервера. Только для тенантных ключей.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
Пример запроса
Пример ответа
verified Загрузить подписанный документ
Загружает документ вместе с готовой подписью (.sig) отправителя — открепленной (detached) или прикреплённой (attached, документ внутри .sig), например УКЭП вашей организации (директора), сформированной в 1С штатным МенеджерКриптографии или в КриптоАРМ. Документ сохраняется со статусом signed_admin, дальше его можно отправить контрагенту через api_1c_send (повторно загружать файл не нужно).
Сервер проверяет подпись через КриптоПро CSP (ГОСТ Р 34.10-2012) и извлекает реквизиты подписанта (ФИО, ИНН, СНИЛС, ОГРН, УЦ, срок действия) из самой подписи. Файл signature принимается как сырой DER, так и как base64 (в том числе с переносами строк); формат (открепленная/прикреплённая) сервер определяет сам. Для прикреплённой подписи документ внутри .sig должен побайтно совпадать с document, иначе crypto_verify=false и content_mismatch=true. Поддерживает заголовок Idempotency-Key.
Как сделать прикреплённую или открепленную подпись
Формат задаётся в момент подписания на вашей стороне (в 1С, КриптоАРМ, cryptcp). Отдельного параметра в запросе нет: сервер сам определяет формат по файлу .sig и возвращает его в поле sig_format.
| Формат | Что внутри .sig | Что получит контрагент |
|---|---|---|
Прикреплённая (attached)sig_format: "attached" | Документ + подпись организации | Если контрагент подпишет УКЭП — один файл Документ.pdf.sig, в нём документ и подписи обеих сторон (совместная подпись) |
Открепленная (detached)sig_format: "detached" | Только подпись, документа внутри нет | Документ и подписи сторон отдельными файлами (_server.sig, _client.sig) |
Юридически оба формата равноценны (CAdES-BES, 63-ФЗ); сервер принимает оба независимо от настройки сервиса. Чтобы формат совпадал с настройкой администратора, перед подписанием вызовите GET api_1c_settings и возьмите sig_attached.
1С (МенеджерКриптографии, платформа 8.3.21+) — последний параметр НачатьПодписаниеДанныхCAdES («Отсоединенная»):
КриптоПро cryptcp (командная строка):
КриптоПро ЭЦП Browser plug-in (JavaScript): oSignedData.SignCades(oSigner, CADESCOM_CADES_BES, bDetached) — bDetached = false → прикреплённая, true → открепленная.
КриптоАРМ: в мастере подписи снимите флажок «Сохранить подпись в отдельном файле» (отделённая подпись) — получится прикреплённая; установленный флажок — открепленная.
Важно для прикреплённой: в document отправляйте ровно тот же файл, что подписывали (байт в байт). Если документ внутри .sig отличается, ответ будет crypto_verify=false, content_mismatch=true. Совместная подпись (один файл на обе стороны) собирается, только если подпись организации прикреплённая и контрагент подписывает УКЭП; при ПЭП контрагента подпись организации остаётся как есть.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
document | file | обяз. | Файл документа (pdf, doc, docx, txt, rtf, odt, xls, xlsx, png, jpg, jpeg) |
signature | file | обяз. | Файл подписи CAdES-BES (.sig): открепленная или прикреплённая, DER или base64 |
doc_name | string | обяз. | Название документа |
description | string | опц. | Описание |
client_id | string | опц. | ID клиента (можно указать позже в api_1c_send) |
cert_info | JSON string | опц. | Подсказка для полей, которых может не быть в сертификате: subject_title, subject_email. Идентифицирующие реквизиты (ФИО, ИНН, СНИЛС и т.д.) всегда берутся только из .sig |
signer_inn | string | опц. | ИНН того, кто должен подписать (УКЭП): 12 цифр — личный ИНН физлица/ИП/руководителя, 10 цифр — ИНН организации в сертификате. См. проверку подписанта |
signer_snils | string | опц. | СНИЛС того, кто должен подписать (11 цифр, можно с дефисами/пробелами) |
Пример запроса
Пример ответа
При неуспешной проверке добавляется crypto_error (текст ошибки КриптоПро), а для прикреплённой подписи с другим документом внутри — content_mismatch: true. Документ при этом всё равно сохраняется — проверяйте crypto_verify в ответе.
tune Настройки для 1С: формат подписи
Возвращает формат УКЭП, выбранный в вашем аккаунте: Настройки → «Формат подписи УКЭП». Если в аккаунте формат не выбран, действует общая настройка сервиса. Вызывайте метод перед формированием подписи в 1С: для НачатьПодписаниеДанныхCAdES параметр «Отсоединенная» = Не sig_attached.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
Пример ответа
Открепленная, прикреплённая и совместная подпись
| Формат | Что это |
|---|---|
detached — открепленная | Файл .sig содержит только подпись; документ лежит отдельно. Проверка требует оба файла. |
attached — прикреплённая | Документ находится внутри .sig. Один файл можно открыть и проверить в любом сервисе проверки ЭП. |
| Совместная (CoSign) | Один прикреплённый .sig, в котором документ и подписи всех сторон (отправитель + клиент). Проверяется целиком, например, в Контур.Крипто. Формируется, когда подпись отправителя прикреплённая и клиент подписывает УКЭП; в ZIP отдаётся как Документ.pdf.sig, в api_1c_verify — блок cosigned_signature. |
Проверка подписей (api_1c_verify, api_1c_upload_signed) принимает оба формата независимо от этой настройки — она определяет только, какую подпись формировать. Чтобы получать совместную подпись, выберите в аккаунте прикреплённый формат и подписывайте документы прикреплённой подписью.
sms API для ПЭП (простая электронная подпись)
Упрощённый набор методов для работы с простой электронной подписью. Позволяет отправить документ на подписание ПЭП в один запрос.
sms ПЭП: отправить документ
Комбинированный метод: загружает документ (или берёт существующий в статусе new) и сразу отправляет его клиенту на подписание ПЭП — SMS с кодом и уведомление со ссылкой. Подпись отправителя не ставится: документ переходит из new сразу в sent с sign_type = pep_only. Поддерживает Idempotency-Key (повтор не шлёт новую SMS) и песочницу.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
client_id | string | обяз. | ID клиента вашего аккаунта (создать — POST api_1c_clients). Получатель inline здесь не поддерживается — для этого есть api_1c_send_document с sign_type=pep_only |
doc_id | string | doc_id ИЛИ document | Существующий документ в статусе new |
document | file | doc_id ИЛИ document | Загрузить новый файл (multipart) |
doc_name | string | опц. | Название (при загрузке нового) |
description | string | опц. | Описание |
Пример запроса (новый документ)
Пример запроса (существующий документ)
Пример ответа
refresh ПЭП: переотправить код
Генерирует новый 6-значный код (прежний перестаёт действовать) и отправляет его клиенту. Документ должен быть в статусе sent. Песочница на этот метод не распространяется — код отправляется реально.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
doc_id | string | обяз. | ID документа |
method | string | опц. | sms, email или both (по умолч. sms) |
Пример ответа
info ПЭП: проверить статус
Возвращает текущий статус документа, данные клиента и — пока документ ожидает подписи (статус sent) — ссылку на подписание sign_url. Так можно повторно получить ссылку без повторной отправки SMS/письма. Работает для любого документа аккаунта, не только ПЭП.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
doc_id | string | обяз. | ID документа (синоним — id) |
Пример ответа
sign_url заполнен только в статусе sent (например, "https://cert4u.ru/client.html?token=..."); после подписания, отзыва или отклонения — null.
group_add ПЭП: массовая отправка
Отправляет один документ на ПЭП-подписание сразу нескольким клиентам. Для каждого клиента создаётся отдельная копия документа (свой doc_id, ссылка и код) в статусе sent. Каждая копия — одна отправка по тарифу. Поддерживает Idempotency-Key (повтор возвращает "results": [], "idempotent": true и ничего не рассылает) и песочницу.
Параметры
| Параметр | Тип | Описание | |
|---|---|---|---|
api_key | string | обяз. | API ключ (или заголовок X-Api-Key) |
doc_id | string | обяз. | ID исходного документа вашего аккаунта |
client_ids | array/string | обяз. | Массив ID клиентов или строка через запятую |
Пример запроса
Пример ответа
webhook Вебхуки
Вместо периодического опроса статусов настройте вебхук — Cert4U сам пришлёт POST на ваш URL при событиях с документами вашего аккаунта. Методы доступны только ключам, привязанным к аккаунту (иначе 403). Формат доставки и список событий подробно — на странице REST API → Вебхуки.
| action | HTTP | Параметры | Назначение |
|---|---|---|---|
api_1c_webhook_set | POST | url (только https, обяз.), events (массив или через запятую; по умолчанию — все события) | Установить/обновить вебхук. В ответе — secret для проверки подписи (генерируется при первой установке и сохраняется при обновлении; показывается полностью только здесь) |
api_1c_webhook_get | GET | — | Текущая настройка: configured, url, events, active, created_at, secret_last6 (маскированный секрет) |
api_1c_webhook_delete | POST | — | Удалить вебхук |
Проверка подлинности: каждая доставка содержит заголовок X-Cert4U-Signature: sha256=<hex> — HMAC-SHA256 от тела запроса с вашим secret. Сверяйте подпись перед обработкой. В режиме песочницы события отправки вебхуки не генерируют.
science Песочница, идемпотентность, лимиты
Песочница (sandbox)
Тестовый режим без реальной отправки SMS/email и без списания лимитов. Включается любым способом: флаг песочницы на API-ключе, заголовок X-Cert4U-Sandbox: 1 или параметр sandbox=1. Действует в методах api_1c_send, api_1c_send_document, api_1c_pep_send, api_1c_pep_bulk: код ПЭП всегда 000000, документ помечается "sandbox": true, в ответе — "sandbox": true, вебхуки не отправляются. На api_1c_pep_send_code песочница не распространяется. Подробнее — REST API → Песочница.
Идемпотентность
Методы api_1c_upload, api_1c_upload_signed, api_1c_send_document, api_1c_pep_send, api_1c_pep_bulk принимают заголовок Idempotency-Key: <уникальная строка> (или параметр idempotency_key). Повтор запроса с тем же ключом в течение 24 часов не создаёт дубль документа и не шлёт повторную SMS — возвращается ранее созданный документ и "idempotent": true. Ключи действуют в пределах вашего аккаунта. Используйте, например, GUID документа 1С — это защищает от дублей при обрыве связи.
Лимиты
- Частота запросов: 60 запросов в минуту с одного IP и 60 в минуту на один API-ключ. При превышении — HTTP
429. - Тариф: отправки (
api_1c_send,api_1c_send_document,api_1c_pep_send,api_1c_pep_bulk) списываются из лимита тарифа. Тариф без API, истёкший тестовый период или исчерпанный лимит отправок — HTTP402; исчерпанный дневной лимит API —429. Тарифы — на странице тарифов.
error Коды ошибок
| HTTP код | Сообщение | Причина |
|---|---|---|
400 | Не указан id документа / Не указан doc_id | Пропущен обязательный параметр или неверный формат |
400 | Документ уже подписан или имеет некорректный статус | Операция недопустима в текущем статусе документа |
400 | Файл заблокирован: обнаружена угроза безопасности | Загруженный файл не прошёл антивирусную проверку |
401 | Не указан API ключ / Неверный API ключ | Нет ключа в X-Api-Key / Authorization: Bearer / api_key, либо ключ неверный |
402 | API 1С доступен с тарифа Бизнес / Лимит отправок исчерпан / Тестовый период истёк | Тариф не включает API или закончились отправки |
403 | API для 1С отключен / API ключ деактивирован / API ключ истёк | API выключен на сервисе, ключ отключён или истёк; также — метод недоступен этому ключу (вебхуки/контейнеры без привязки к аккаунту), неподтверждённый email на тестовом тарифе |
404 | Документ не найден | Неправильный doc_id/id или документ принадлежит другому аккаунту |
429 | Превышен лимит запросов / Дневной лимит API исчерпан | Более 60 запросов в минуту (IP или ключ) либо исчерпан дневной лимит тарифа |
Формат ошибки
code Примеры кода для 1С:Предприятие
Функция HTTP-запроса (базовая)
Функция POST-запроса (JSON)
Загрузка файла (multipart/form-data)
Полный цикл: подпись УКЭП → загрузка → отправка
Проверка подписи и получение ИНН/СНИЛС
Скачать ZIP-архив
Быстрая ПЭП-отправка (один запрос)
Отправка одним запросом без создания клиента
Массовая отправка ПЭП
download Готовая обработка для 1С:Предприятие
Скачайте готовые файлы для сборки внешней обработки (.epf). Внутри — полный исходный код модулей и пошаговая инструкция по сборке в Конфигураторе 1С.
Регистрация обработки, сведения для справочника дополнительных обработок
download Module_ObjectModule.bslВся бизнес-логика: загрузка, подпись, отправка, проверка, скачивание ZIP
download Form_MainForm_Module.bslПошаговая сборка .epf в Конфигураторе: реквизиты, формы, команды
download Инструкция по сборкеТакже в комплекте: CAdES_signing_module.bsl (УКЭП-подписание в 1С, вставляется в модуль формы), FORM_SPEC.md (структура формы) и 1C_API_INSTRUCTION.md (краткая инструкция по API для 1С-разработчика). В настройках обработки укажите адрес cert4u.ru и путь к API /api.php.
checklist Что умеет обработка
Совместимость: 1С:Бухгалтерия, 1С:УНФ, 1С:Управление торговлей, 1С:ERP, 1С:ЗУП и любая конфигурация на управляемых формах (платформа 8.3.14+).