Перейти к содержимому

API

PDF API за один цент

Сжимайте, объединяйте и конвертируйте из своего кода. $0.01 за документ, первые 100 в месяц бесплатно. Без подписки и минимального платежа.

API обрабатывает файлы на сервере

В отличие от браузерного редактора, API отправляет файл на наш сервер. Он обрабатывается в памяти, не записывается на диск и не хранится после ответа; имена файлов не сохраняются. Для документов, которые не должны покидать вашу сеть, используйте браузер или Enterprise.

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

Bearer-ключ в заголовке

Создайте ключ в панели управления. Он начинается с sd_live_и показывается один раз: мы храним только его хеш. Передавайте ключ в каждом запросе:

Authorization: Bearer sd_live_XXXXXXXXXXXXXXXXXXXXXXXX

Тело запроса — multipart/form-dataс полями fileили «сырой» файл с Content-Type: application/pdf | image/png | image/jpeg. Ответ — готовый PDF. Лимит — 100 МБ на файл и 50 файлов на запрос.

Эндпоинты

Три операции

POST/api/v1/compress

Сжатие

Сжатие без потерь: удаляет метаданные Info и XMP и неиспользуемые объекты, пересобирает документ с потоками объектов. Результат никогда не больше оригинала.

file
Один PDF. Можно отправить как «сырое» тело запроса с Content-Type: application/pdf.
curl
curl -X POST https://lockpage.tools/api/v1/compress \
  -H "Authorization: Bearer $LOCKPAGE_KEY" \
  -F file=@contract.pdf \
  -o contract.min.pdf
POST/api/v1/merge

Объединение

Объединяет PDF в порядке полей с файлами. От 2 до 50 файлов в запросе.

file
Повторяющееся поле, от 2 до 50 PDF. Порядок сохраняется.
curl
curl -X POST https://lockpage.tools/api/v1/merge \
  -H "Authorization: Bearer $LOCKPAGE_KEY" \
  -F file=@act.pdf \
  -F file=@invoice.pdf \
  -o merged.pdf
POST/api/v1/convert

Конвертация

Сервер поддерживает PNG и JPEG → PDF: каждое изображение становится страницей. Другие направления возвращают 501 not_implemented— пока они работают только в браузере.

file
Одно или несколько изображений PNG/JPEG.
to
Целевой формат: pdf. Для «сырого» тела используйте параметр запроса ?to=pdf.
curl
curl -X POST "https://lockpage.tools/api/v1/convert?to=pdf" \
  -H "Authorization: Bearer $LOCKPAGE_KEY" \
  -H "Content-Type: image/jpeg" \
  --data-binary @scan.jpg \
  -o scan.pdf

Ответы

Успех и ошибки

Успешный ответ — это PDF с заголовками об использовании. Ошибка — это JSON с машинным кодом и понятным сообщением, которое можно показать пользователям.

200 OK
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Disposition: attachment; filename="securadoc-merge.pdf"
Cache-Control: no-store
X-Lockpage-Documents: 2
X-Lockpage-Price-Usd-Per-Document: 0.01

%PDF-1.7 …
Ошибка
HTTP/1.1 400 Bad Request Content-Type: application/json { "error": { "code": "bad_request", "message": "merge needs at least two files" } }
HTTPкодКогда
400bad_requestНет файлов, неподходящий набор файлов для операции, повреждённый PDF
401unauthorizedНет заголовка Authorization, ключ недействителен или отозван
413too_largeФайл больше 100 МБ
415unsupported_media_typeФормат входного файла не поддерживается
501not_implementedЭто преобразование на сервере пока недоступно
500internalВнутренняя ошибка. Попробуйте позже.
Node.js 20+
const form = new FormData();
form.append("file", new Blob([await fs.readFile("a.pdf")]), "a.pdf");
form.append("file", new Blob([await fs.readFile("b.pdf")]), "b.pdf");

const res = await fetch("https://lockpage.tools/api/v1/merge", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.LOCKPAGE_KEY}` },
  body: form,
});
if (!res.ok) throw new Error((await res.json()).error.message);
await fs.writeFile("merged.pdf", Buffer.from(await res.arrayBuffer()));

Использование

Как устроены цены

Документ — это один входной файл в успешном запросе: объединение трёх PDF считается тремя документами. Неудачные запросы бесплатны. Первые 100 документов каждого календарного месяца бесплатны, дальше $0.01 за документ. Использование за текущий месяц показано в панели управления.

Документов в месяцСтоимость
до 100Бесплатно
1,000$9
10,000$99
100,000$999