Skip to main content
Документ не обязан рождаться из шаблона Doodocs. Если внешняя система уже сформировала PDF — приказ из 1С, договор из CRM, скан, — загрузите его и пустите по маршруту как обычный документ. Загрузка идёт мимо API: сервер выдаёт presigned-форму, файл вы отправляете прямо в хранилище, затем подтверждаете загрузку и создаёте документ по file_id. Все три шага покрывает область documents:write.

От файла до отправленного документа

Шаг 1. Зарезервировать файл

POST /developer/v1/files создаёт запись и возвращает форму для загрузки.
size_bytes — точный размер байтов. Политика подписи не пропустит объект больше заявленного, а _confirm сверит размер в хранилище с тем, что вы объявили.

Шаг 2. Отправить байты в хранилище

Форма отправляется как multipart/form-data: сначала все поля из fields без изменений, файл — последним полем file.
Успешная загрузка — 204 без тела. Ключ X-API-Key сюда передавать не нужно: подпись в форме уже авторизует запрос. Форма живёт до expires_at; после этого резервируйте файл заново.

Шаг 3. Подтвердить загрузку

Пока загрузка не подтверждена, файл нельзя прикрепить к документу.
Повторный _confirm по уже подтверждённому файлу ничего не меняет и возвращает 200 — повторить запрос после таймаута безопасно.

Шаг 4. Создать документ из файла

В POST /documents вместо template_id передайте file_id. Файл становится PDF документа — именно его увидят согласующие и подпишут подписанты.
template_id и file_id взаимоисключающие: указать оба или ни одного — ошибка DEVELOPER.INVALID_ARGUMENT. Поле template_values без template_id тоже отклоняется, а не игнорируется молча.
Дальше — обычный путь: маршрут, отправка и подписание. Инициатором становится владелец ключа, как и при создании из шаблона.

Ограничения

Конвертации нет: DOCX или картинку API не примет — файл уходит на подписание ровно таким, каким вы его прислали. Приводите документ к PDF на своей стороне.
Лимит неподтверждённых загрузок считается по владельцу ключа и общий с веб-приложением: интеграция, которая резервирует файлы и не подтверждает их, займёт квоту этого сотрудника и в интерфейсе.

Ошибки

Документ из файла не получает номер автоматически: нумерация привязана к шаблонам. Передайте number в POST /documents, если он вам нужен.