API Cert4U встраивает юридически значимое подписание документов прямо в вашу CRM, ERP, бухгалтерию или 1С. Все вызовы идут на один эндпоинт https://cert4u.ru/api.php?action=<ACTION> с авторизацией по ключу из личного кабинета. 16 методов покрывают полный цикл: загрузка документа, серверная подпись, отправка клиенту на УКЭП или ПЭП, проверка подписей и скачивание ZIP-архива с протоколом.
Cert4U — это не REST с путями вида /api/v1/.... Все запросы идут на единый файл, а нужный метод задаётся параметром action:
https://cert4u.ru/api.php?action=<ACTION>
Ключ выдаётся самостоятельно в личном кабинете: раздел Настройки → API-ключи → создать ключ. API доступен на тарифах Бизнес и Корпорат. На тарифе Старт API нет; на Тестовом — до 10 операций в день для ознакомления. Подробнее о применении для компаний — на странице электронная подпись для бизнеса.
Заголовок предпочтителен. Поддерживаются три варианта (любой):
# 1) Заголовок X-Api-Key (рекомендуется) X-Api-Key: ВАШ_КЛЮЧ # 2) Authorization: Bearer Authorization: Bearer ВАШ_КЛЮЧ # 3) Параметр запроса (legacy) https://cert4u.ru/api.php?action=api_1c_documents&api_key=ВАШ_КЛЮЧ
Каждый ключ видит только данные своего аккаунта — фильтр по владельцу применяется ко всем спискам документов, клиентов, вебхуков. Чужие документы по API недоступны.
429.Кодировка — UTF-8, ответ — JSON:
# Успех { "success": true, ... } # Ошибка { "success": false, "message": "Описание ошибки" }
Три рабочих примера. Полные параметры каждого метода — в справочнике API (api-docs.html).
curl "https://cert4u.ru/api.php?action=api_1c_documents&limit=20" \ -H "X-Api-Key: ВАШ_КЛЮЧ" # Ответ: { "success": true, "documents": [ { "id": "d_001", "name": "Договор №14.pdf", "status": "new" } ] }
curl -X POST "https://cert4u.ru/api.php?action=api_1c_upload" \ -H "X-Api-Key: ВАШ_КЛЮЧ" \ -F "document=@dogovor.pdf" \ -F "doc_name=Договор №14" \ -F "description=Поставка" # Ответ: { "success": true, "doc_id": "d_042", "status": "new" }
Сначала серверная подпись (статус становится signed_admin), затем отправка клиенту — он получает ссылку и код ПЭП:
# 3a. Серверная подпись (OpenSSL) curl -X POST "https://cert4u.ru/api.php?action=api_1c_sign_admin" \ -H "X-Api-Key: ВАШ_КЛЮЧ" \ -d "doc_id=d_042" # 3b. Отправка клиенту (ПЭП по SMS) curl -X POST "https://cert4u.ru/api.php?action=api_1c_send" \ -H "X-Api-Key: ВАШ_КЛЮЧ" \ -d "doc_id=d_042" \ -d "client_id=c_007" \ -d "sign_type=pep_only" # Ответ: { "success": true, "status": "sent", "sign_url": "https://cert4u.ru/client.html?d=d_042&t=...", "pep_code": "483920" }
Совет: чтобы протестировать шаги без реальной SMS и расхода лимитов, включите песочницу — код ПЭП тогда всегда 000000.
Базовый вызов для любого метода: https://cert4u.ru/api.php?action=<action>. Полные параметры, форматы ответов и примеры — в справочнике api-docs.html. Для готовой интеграции с учётной системой смотрите страницу интеграция 1С и подписание.
| action | HTTP | Параметры | Назначение |
|---|---|---|---|
api_1c_documents | GET | limit?, offset? | Список документов аккаунта |
api_1c_document | GET | id | Один документ |
api_1c_upload | POST | document, doc_name, description?, client_id? | Загрузить документ (status new), multipart |
api_1c_sign_admin | POST | doc_id | Серверная подпись (OpenSSL) → signed_admin |
api_1c_send | POST | doc_id, client_id, sign_type? (ukep_only|pep_only) | Отправить клиенту (нужен signed_admin). Ответ: sign_url, pep_code |
api_1c_verify | GET | id | doc_id | Проверка подписей + download_zip_url |
api_1c_clients | GET | — | Список клиентов аккаунта |
api_1c_download_zip | GET | id | Скачать ZIP (документ + подписи + protocol.pdf) |
api_1c_pep_send | POST | client_id, и (doc_id ИЛИ document+doc_name) | Загрузить+отправить ПЭП одним вызовом (SMS-код), multipart |
api_1c_pep_send_code | POST | doc_id, method? (sms|email|both) | Переотправить ПЭП-код |
api_1c_pep_status | GET | doc_id | id | Статус ПЭП-документа |
api_1c_pep_bulk | POST | doc_id, client_ids (массив или через запятую) | Массовая ПЭП-рассылка одного документа многим |
api_1c_revoke | POST | doc_id, reason? | Отозвать документ → revoked |
api_1c_upload_container | POST | pin, container | container_base64 | Загрузить зашифрованный контейнер УКЭП (AES-256, PIN не хранится) |
api_1c_delete_container | POST | — | Удалить контейнер |
api_1c_upload_signed | POST | document, signature, doc_name, client_id?, cert_info? | Загрузить уже подписанный УКЭП документ (.sig, CAdES), multipart |
Виды подписи: УКЭП (CAdES, КриптоПро) и ПЭП (одноразовый код по SMS/email). Подробности валидации и юридической значимости — в справочнике.
new → signed_admin → sent → completed (обе стороны подписали)
↘ rejected (клиент отклонил)
↘ revoked (отозван через api_1c_revoke)| Статус | Что значит |
|---|---|
new | Документ загружен, ещё не подписан сервером |
signed_admin | Поставлена серверная подпись (api_1c_sign_admin), можно отправлять клиенту |
sent | Отправлен клиенту, ожидает его подписи |
completed | Подписали обе стороны — комплект готов |
rejected | Клиент отклонил подписание |
revoked | Документ отозван отправителем |
При ошибке возвращается {"success":false,"message":"..."} с соответствующим HTTP-кодом.
| HTTP | Когда |
|---|---|
200 | Успешно |
400 | Ошибка валидации: не хватает обязательного параметра или неверный формат |
401 | Ключ отсутствует или неверный (проверьте X-Api-Key / Bearer / api_key) |
402 | Тариф или лимит операций исчерпан (тариф без API или дневной лимит превышен) |
403 | Метод недоступен этому ключу |
404 | Документ/клиент/ресурс не найден (или принадлежит другому аккаунту) |
429 | Превышен rate limit (60/мин) или дневной лимит операций |
Тарифы и лимиты — на странице тарифов. Если получаете 402/403 — проверьте, что тариф включает API (Бизнес/Корпорат).
Вместо опроса статусов настройте вебхук — Cert4U сам отправит POST на ваш URL при изменении документа. Управление вебхуками — те же методы api.php?action=…, авторизация как у остальных методов, доступ только владельцу ключа.
| action | HTTP | Параметры | Назначение |
|---|---|---|---|
api_1c_webhook_set | POST | url (https), events (массив или csv) | Установить/обновить. Возвращает secret (генерится при первой установке) |
api_1c_webhook_get | GET | — | Текущая конфигурация (secret маскируется до last6) |
api_1c_webhook_delete | POST | — | Удалить вебхук |
| event | Когда | Источник |
|---|---|---|
document.sent | Документ отправлен клиенту | Встроенно в api_1c_send / api_1c_pep_send / api_1c_pep_bulk |
document.signed | Клиент подписал | Крон-вотчер |
document.completed | Подписали обе стороны | Крон-вотчер |
document.rejected | Клиент отклонил | Крон-вотчер |
document.revoked | Документ отозван | Встроенно в api_1c_revoke |
Серверные события (sent, revoked) отправляются сразу в момент вызова метода. События клиентского подписания (signed, completed, rejected) ловит крон-вотчер, сравнивающий статусы со снимком состояния и шлющий вебхуки на изменения.
POST на ваш url, тело JSON. Таймаут 10 секунд, доставка best-effort.
POST https://ваш-сервер/webhook Content-Type: application/json X-Cert4U-Event: document.signed X-Cert4U-Signature: sha256=<hex hmac_sha256(тело, secret)> { "event": "document.signed", "doc_id": "d_042", "status": "signed", "client_id": "c_007", "occurred_at": "2026-06-17T10:15:00Z", "document": { "id": "d_042", "name": "Договор №14", "status": "signed", "client_name": "Иванов И.И." } }
Проверка подлинности: заголовок X-Cert4U-Signature содержит sha256=<hex>, где hex — это HMAC-SHA256 от тела запроса с вашим secret. Всегда сверяйте подпись перед обработкой.
Песочница позволяет интегратору тестировать сценарии без реальной отправки SMS/email и без расхода денег и тарифных лимитов.
Любым из трёх способов:
sandbox=true на API-ключе;X-Cert4U-Sandbox: 1;sandbox=1.В методах api_1c_send, api_1c_pep_send, api_1c_pep_bulk:
000000;sandbox:true, и в ответе возвращается "sandbox":true;curl -X POST "https://cert4u.ru/api.php?action=api_1c_pep_send" \ -H "X-Api-Key: ВАШ_КЛЮЧ" \ -H "X-Cert4U-Sandbox: 1" \ -F "client_id=c_007" \ -F "document=@dogovor.pdf" \ -F "doc_name=Тест" # Ответ: { "success": true, "sandbox": true, "pep_code": "000000" }
Кодировка API — UTF-8. Кириллицу в query-параметрах необходимо URL-кодировать (urlencode). В 1С:Предприятие используйте встроенную функцию:
КодироватьСтроку(Значение, КодировкаURL.КодировкаURL)
Готовая обработка и пошаговая инструкция по подключению — на странице интеграция 1С и подписание. Параметры всех методов — в справочнике api-docs.html.
В личном кабинете: Настройки → API-ключи → создать ключ (self-serve). API доступен на тарифах Бизнес и Корпорат. На Старте API нет, на Тестовом — 10 операций в день.
Один эндпоинт: https://cert4u.ru/api.php?action=<ACTION>. Это не пути /api/v1/... — метод задаётся параметром action. Авторизация — X-Api-Key, либо Authorization: Bearer, либо api_key в query.
Кодировка UTF-8, query-параметры с кириллицей нужно урл-кодировать. В 1С — КодироватьСтроку(Значение, КодировкаURL.КодировкаURL).
Да — включите песочницу (sandbox=true на ключе, X-Cert4U-Sandbox: 1 или sandbox=1). SMS/email не уходят, код ПЭП всегда 000000, лимиты не списываются.
Нет. API мультиарендный: ключ видит только данные своего аккаунта — фильтр по владельцу применяется ко всем методам. Подробнее об использовании в компании — электронная подпись для бизнеса.