pdfapi

Справочник API

API работает по HTTPS и принимает данные в формате JSON. Документ приходит в бинарном виде (PDF), ошибки — в JSON с кодом.

Адрес#

text
https://pdfapi.ru/api

Адреса методов начинаются с номера версии: /v1/…. Внутри версии мы ничего не удаляем и не меняем, только добавляем новые функции, поля и коды ошибок. Код, написанный под /v1, продолжит работать бесперебойно.

Авторизация#

Ключ из кабинета указывается в заголовке Authorization: Bearer pdf_live_… или X-API-Key. Подробнее — в Ключах API.

Методы#

МетодЧто делает
POST /v1/convertHTML, URL, Markdown или документ Office в PDF
GET /v1/meтариф, остаток страниц и границы периода
GET /healthработает ли сервис

Ошибки#

Ответ с ошибкой можно увидеть в JSON с полем error, по которому стоит ориентироваться в коде. У большинства ошибок есть и message — текст на русском для журнала или аудита:

HTTPКодКогда
400invalid_requestнет source или содержимого, лишний или неверный параметр в options — имя поля в message
400url_not_allowedадрес без http(s) или ведёт во внутреннюю сеть
401missing_api_keyнет заголовка Authorization: Bearer … и X-API-Key
401invalid_api_keyключ неверный или отозван
402quota_exceededлимит исчерпан или документ больше остатка; страницы не списываются
403email_not_verifiedпочта аккаунта не подтверждена
403source_not_allowedисточник недоступен на тарифе: на Free — только HTML
409idempotency_in_progressещё выполняется, повторите через Retry-After с тем же ключом
409idempotency_conflictтело запроса отличается от исходного
410result_expiredновый рендер требует нового ключа
413payload_too_largeвынесите картинки по ссылкам или уменьшите файл
429rate_limit_exceededзапросы чаще лимита тарифа; повторите через Retry-After секунд
502render_failedобычно дело в разметке или недоступной странице
503unavailableочередь заполнена или рендер перезапускается; повторите позже
504render_timeoutдокумент слишком тяжёлый или страница грузится долго

Спецификация OpenAPI#

Полное описание API в формате OpenAPI 3.1 — /openapi.json. Его можно импортировать в Postman или Insomnia и сгенерировать по нему клиент для любого языка.