Интегрируйте подписание документов УКЭП и ПЭП прямо в вашу систему. REST API Cert4U позволяет разработчикам автоматизировать полный цикл работы с электронными подписями: от загрузки документа до скачивания подписанного архива с протоколом. Идеально подходит для CRM, ERP, бухгалтерских систем, маркетплейсов и любых сервисов, где нужна юридически значимая подпись без личного присутствия.
REST API Cert4U охватывает весь жизненный цикл электронного документа. Вы можете встроить любой этап в свой бизнес-процесс или использовать API для полной автоматизации.
Загружайте PDF, DOCX и XLSX через API. Поддерживается base64 и multipart/form-data. Максимальный размер файла 50 МБ. Подходит для автоматической загрузки из CRM или бухгалтерской системы.
Усиленная квалифицированная электронная подпись через КриптоПро. Клиент получает ссылку, подписывает в браузере. Результат — открепленная подпись .sig, проверяемая на Госуслугах и в судах.
Простая электронная подпись по SMS-коду. Клиент подтверждает по номеру телефона. Формируется протокол подписания с IP-адресом, временем и хэшем документа — юридически значимо по 63-ФЗ.
Отправляйте документы на подпись сотням клиентов за один API-вызов. Каждый получает индивидуальную ссылку по email или SMS. Идеально для рассылки договоров, согласий, актов.
Валидация УКЭП и ПЭП через API: проверка сертификата, срока действия, цепочки УЦ. Возвращает ФИО, ИНН, СНИЛС, ОГРН из сертификата. Подробнее в разделе валидации.
Получите готовый ZIP-архив с документом, подписью и протоколом подписания. Архив можно скачать по API или по прямой ссылке. Подробнее о формате архива.
Все запросы к API Cert4U требуют аутентификации через API-ключ. Ключ передается в заголовке каждого HTTP-запроса.
Войдите в личный кабинет, откройте раздел "Настройки" → "API" и нажмите "Сгенерировать ключ". Ключ отображается один раз — сохраните его в безопасном месте. При утере сгенерируйте новый.
# Заголовок авторизации GET /api/v1/documents Authorization: Bearer your_api_key_here Content-Type: application/json
| Тариф | Лимит | Окно | Заголовок |
|---|---|---|---|
| Старт | 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 содержит время в секундах до сброса счетчика.
Четыре примера, покрывающих основные сценарии работы с API. Полная документация всех методов — на странице API Docs.
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" }
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" }
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 }
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" }
Полный перечень из 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 | Статистика использования и лимиты |
API возвращает ошибки в едином JSON-формате. Поле error_code позволяет программно обрабатывать конкретные ситуации, а message содержит человекочитаемое описание на русском языке.
# Формат ответа при ошибке: { "success": false, "error_code": "INVALID_FILE_FORMAT", "message": "Формат файла не поддерживается. Допустимые: PDF, DOCX, XLSX", "request_id": "req_abc123" }
| HTTP-код | error_code | Описание и решение |
|---|---|---|
| 400 | INVALID_PARAMS | Неверные параметры запроса. Проверьте обязательные поля. |
| 400 | INVALID_FILE_FORMAT | Неподдерживаемый формат файла. Используйте PDF, DOCX или XLSX. |
| 401 | UNAUTHORIZED | Отсутствует или невалидный API-ключ. Проверьте заголовок Authorization. |
| 403 | FORBIDDEN | Нет прав на данную операцию. Проверьте тариф. |
| 404 | NOT_FOUND | Документ или ресурс не найден. Проверьте document_id. |
| 409 | ALREADY_SIGNED | Документ уже подписан. Повторное подписание невозможно. |
| 429 | RATE_LIMITED | Превышен лимит запросов. Подождите X-RateLimit-Reset секунд. |
| 500 | INTERNAL_ERROR | Внутренняя ошибка сервера. Повторите запрос через 5 секунд. |
Совет: всегда сохраняйте request_id из ответа. При обращении в поддержку он поможет быстро найти причину ошибки.
Вместо периодического опроса статуса настройте webhook — Cert4U отправит POST-запрос на ваш URL при каждом изменении статуса документа. Это экономит ресурсы и ускоряет реакцию вашей системы.
| Событие | Когда срабатывает |
|---|---|
document.signed | Клиент подписал документ (УКЭП или ПЭП) |
document.rejected | Клиент отклонил подписание |
document.expired | Истек срок ссылки на подписание |
document.viewed | Клиент открыл ссылку и просмотрел документ |
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.
Для ускорения интеграции мы предоставляем готовые библиотеки и обработки на популярных языках и платформах.
Библиотека для PHP 7.4+. Установка через Composer: composer require cert4u/sdk. Обертки для всех 14 методов API, автоматическая обработка ошибок и retry-логика.
Пакет для Python 3.8+. Установка: pip install cert4u. Поддерживает синхронные и асинхронные (asyncio) запросы. Типизация через dataclasses.
Готовая обработка .epf для платформы 8.3.14+. Загрузка, подписание, проверка статусов и скачивание архивов прямо из 1С. Подробная инструкция по интеграции.
API принимает и возвращает JSON (Content-Type: application/json). Файлы загружаются через multipart/form-data или в виде base64-строки в JSON. Кодировка — UTF-8.
Используйте тестовый режим: добавьте заголовок 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.
После подписания вызовите GET /documents/{id}/zip. Архив содержит оригинал документа, файл подписи (.sig для УКЭП) и PDF-протокол с данными подписанта, временем и хэшем. Подробнее — формат ZIP-архива.