REST API Cert4U: электронное подписание через код

Интегрируйте подписание документов УКЭП и ПЭП прямо в вашу систему. REST API Cert4U позволяет разработчикам автоматизировать полный цикл работы с электронными подписями: от загрузки документа до скачивания подписанного архива с протоколом. Идеально подходит для CRM, ERP, бухгалтерских систем, маркетплейсов и любых сервисов, где нужна юридически значимая подпись без личного присутствия.

api 14 методов bolt Ответ < 300ms lock HTTPS + API Key notifications_active Webhook-уведомления

Содержание

widgets Возможности API

REST API Cert4U охватывает весь жизненный цикл электронного документа. Вы можете встроить любой этап в свой бизнес-процесс или использовать API для полной автоматизации.

upload_file Загрузка документов

Загружайте PDF, DOCX и XLSX через API. Поддерживается base64 и multipart/form-data. Максимальный размер файла 50 МБ. Подходит для автоматической загрузки из CRM или бухгалтерской системы.

draw Подписание УКЭП

Усиленная квалифицированная электронная подпись через КриптоПро. Клиент получает ссылку, подписывает в браузере. Результат — открепленная подпись .sig, проверяемая на Госуслугах и в судах.

sms Подписание ПЭП

Простая электронная подпись по SMS-коду. Клиент подтверждает по номеру телефона. Формируется протокол подписания с IP-адресом, временем и хэшем документа — юридически значимо по 63-ФЗ.

send Массовая рассылка

Отправляйте документы на подпись сотням клиентов за один API-вызов. Каждый получает индивидуальную ссылку по email или SMS. Идеально для рассылки договоров, согласий, актов.

verified Проверка подписей

Валидация УКЭП и ПЭП через API: проверка сертификата, срока действия, цепочки УЦ. Возвращает ФИО, ИНН, СНИЛС, ОГРН из сертификата. Подробнее в разделе валидации.

folder_zip Скачивание архива

Получите готовый ZIP-архив с документом, подписью и протоколом подписания. Архив можно скачать по API или по прямой ссылке. Подробнее о формате архива.

vpn_key Аутентификация

Все запросы к API Cert4U требуют аутентификации через API-ключ. Ключ передается в заголовке каждого HTTP-запроса.

Получение API-ключа

Войдите в личный кабинет, откройте раздел "Настройки" → "API" и нажмите "Сгенерировать ключ". Ключ отображается один раз — сохраните его в безопасном месте. При утере сгенерируйте новый.

Передача ключа в запросе

# Заголовок авторизации
GET /api/v1/documents
Authorization: Bearer your_api_key_here
Content-Type: application/json

Лимиты запросов (Rate Limiting)

ТарифЛимитОкноЗаголовок
Старт60 запросов1 минутаX-RateLimit-Limit: 60
Бизнес300 запросов1 минутаX-RateLimit-Limit: 300
Корпоративный1000 запросов1 минутаX-RateLimit-Limit: 1000

При превышении лимита API вернет 429 Too Many Requests. Заголовок X-RateLimit-Reset содержит время в секундах до сброса счетчика.

rocket_launch Быстрый старт

Четыре примера, покрывающих основные сценарии работы с API. Полная документация всех методов — на странице API Docs.

1. Загрузка документа на подпись (УКЭП)

POST /api/v1/documents/upload

curl -X POST https://cert4u.ru/api/v1/documents/upload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@contract.pdf" \
  -F "signer_name=Иванов Иван Иванович" \
  -F "signer_email=ivanov@example.com" \
  -F "sign_type=ukep"

# Ответ:
{
  "success": true,
  "document_id": "doc_a1b2c3d4",
  "sign_url": "https://cert4u.ru/sign/abc123",
  "expires_at": "2026-04-28T23:59:59Z"
}

2. Подписание ПЭП (простая подпись по SMS)

POST /api/v1/documents/sign-pep

curl -X POST https://cert4u.ru/api/v1/documents/sign-pep \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "document_id": "doc_a1b2c3d4",
    "signer_phone": "+79261234567",
    "signer_name": "Петров Петр Сергеевич",
    "notify_sms": true
  }'

# Ответ:
{
  "success": true,
  "sign_request_id": "sr_x7y8z9",
  "sms_sent": true,
  "sign_url": "https://cert4u.ru/pep/xyz789"
}

3. Массовая рассылка документов

POST /api/v1/documents/bulk-send

curl -X POST https://cert4u.ru/api/v1/documents/bulk-send \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "document_id": "doc_a1b2c3d4",
    "signers": [
      {"name": "Иванов И.И.", "email": "ivanov@mail.ru"},
      {"name": "Петрова А.С.", "phone": "+79031234567"},
      {"name": "Сидоров К.В.", "email": "sidorov@corp.ru"}
    ],
    "sign_type": "pep",
    "deadline_days": 7
  }'

# Ответ:
{
  "success": true,
  "batch_id": "batch_m3n4o5",
  "total": 3,
  "sent": 3
}

4. Проверка статуса документа

GET /api/v1/documents/doc_a1b2c3d4/status

curl https://cert4u.ru/api/v1/documents/doc_a1b2c3d4/status \
  -H "Authorization: Bearer YOUR_API_KEY"

# Ответ:
{
  "document_id": "doc_a1b2c3d4",
  "status": "signed",
  "sign_type": "ukep",
  "signed_at": "2026-04-21T14:32:00Z",
  "signer": {
    "name": "Иванов Иван Иванович",
    "inn": "772401234567"
  },
  "download_url": "https://cert4u.ru/api/v1/documents/doc_a1b2c3d4/zip"
}

list_alt Методы API

Полный перечень из 14 методов REST API. Базовый URL: https://cert4u.ru/api/v1. Детальные параметры каждого метода описаны в API Docs.

МетодEndpointОписание
POST/documents/uploadЗагрузка документа (PDF, DOCX, XLSX)
GET/documentsСписок всех документов с фильтрацией
GET/documents/{id}Детальная информация о документе
GET/documents/{id}/statusТекущий статус подписания
POST/documents/sign-ukepИнициировать подписание УКЭП
POST/documents/sign-pepИнициировать подписание ПЭП (SMS)
POST/documents/bulk-sendМассовая рассылка на подпись
GET/documents/{id}/zipСкачать ZIP-архив с подписью и протоколом
POST/documents/{id}/verifyПроверка подписи документа
DELETE/documents/{id}Удаление документа (до подписания)
POST/webhooksРегистрация webhook-эндпоинта
GET/webhooksСписок зарегистрированных вебхуков
DELETE/webhooks/{id}Удаление вебхука
GET/account/usageСтатистика использования и лимиты

error_outline Обработка ошибок

API возвращает ошибки в едином JSON-формате. Поле error_code позволяет программно обрабатывать конкретные ситуации, а message содержит человекочитаемое описание на русском языке.

# Формат ответа при ошибке:
{
  "success": false,
  "error_code": "INVALID_FILE_FORMAT",
  "message": "Формат файла не поддерживается. Допустимые: PDF, DOCX, XLSX",
  "request_id": "req_abc123"
}
HTTP-кодerror_codeОписание и решение
400INVALID_PARAMSНеверные параметры запроса. Проверьте обязательные поля.
400INVALID_FILE_FORMATНеподдерживаемый формат файла. Используйте PDF, DOCX или XLSX.
401UNAUTHORIZEDОтсутствует или невалидный API-ключ. Проверьте заголовок Authorization.
403FORBIDDENНет прав на данную операцию. Проверьте тариф.
404NOT_FOUNDДокумент или ресурс не найден. Проверьте document_id.
409ALREADY_SIGNEDДокумент уже подписан. Повторное подписание невозможно.
429RATE_LIMITEDПревышен лимит запросов. Подождите X-RateLimit-Reset секунд.
500INTERNAL_ERRORВнутренняя ошибка сервера. Повторите запрос через 5 секунд.

Совет: всегда сохраняйте request_id из ответа. При обращении в поддержку он поможет быстро найти причину ошибки.

webhook Webhook-уведомления

Вместо периодического опроса статуса настройте webhook — Cert4U отправит POST-запрос на ваш URL при каждом изменении статуса документа. Это экономит ресурсы и ускоряет реакцию вашей системы.

Поддерживаемые события

СобытиеКогда срабатывает
document.signedКлиент подписал документ (УКЭП или ПЭП)
document.rejectedКлиент отклонил подписание
document.expiredИстек срок ссылки на подписание
document.viewedКлиент открыл ссылку и просмотрел документ

Формат webhook-запроса

POST https://your-server.com/webhook

{
  "event": "document.signed",
  "document_id": "doc_a1b2c3d4",
  "signed_at": "2026-04-21T14:32:00Z",
  "signer": {
    "name": "Иванов И.И.",
    "sign_type": "ukep"
  },
  "signature": "hmac_sha256_подпись_запроса"
}

Заголовок X-Cert4U-Signature содержит HMAC-SHA256 подпись тела запроса, вычисленную с вашим секретным ключом. Всегда проверяйте подпись перед обработкой webhook.

code SDK и библиотеки

Для ускорения интеграции мы предоставляем готовые библиотеки и обработки на популярных языках и платформах.

php PHP SDK

Библиотека для PHP 7.4+. Установка через Composer: composer require cert4u/sdk. Обертки для всех 14 методов API, автоматическая обработка ошибок и retry-логика.

terminal Python SDK

Пакет для Python 3.8+. Установка: pip install cert4u. Поддерживает синхронные и асинхронные (asyncio) запросы. Типизация через dataclasses.

inventory_2 1С:Предприятие

Готовая обработка .epf для платформы 8.3.14+. Загрузка, подписание, проверка статусов и скачивание архивов прямо из 1С. Подробная инструкция по интеграции.

help_outline FAQ для разработчиков

Какой формат данных использует API?

API принимает и возвращает JSON (Content-Type: application/json). Файлы загружаются через multipart/form-data или в виде base64-строки в JSON. Кодировка — UTF-8.

Как тестировать API без реальной отправки SMS?

Используйте тестовый режим: добавьте заголовок X-Cert4U-Sandbox: true. В sandbox-режиме SMS не отправляются, код подтверждения всегда 000000, а документы автоматически удаляются через 1 час.

Можно ли подписать один документ несколькими подписантами?

Да, используйте массовую рассылку (/documents/bulk-send) или последовательные вызовы /documents/sign-ukep с разными signer_email. Каждый подписант получает индивидуальную ссылку.

Какой срок действия ссылки на подписание?

По умолчанию — 7 дней. Можно указать от 1 до 30 дней через параметр deadline_days. После истечения срока ссылка становится недействительной, и API отправляет webhook-событие document.expired.

Как получить ZIP-архив с протоколом подписания?

После подписания вызовите GET /documents/{id}/zip. Архив содержит оригинал документа, файл подписи (.sig для УКЭП) и PDF-протокол с данными подписанта, временем и хэшем. Подробнее — формат ZIP-архива.