Создать PDF
https://pdfapi.ru/api/v1/convertПревращает HTML, страницу по адресу, Markdown или документ Office в PDF. Ответ — сам PDF, а расход страниц — в заголовках. Страницы списываются один раз при сохранении готового PDF. Тот же Idempotency-Key и запрос повторно выдают результат без списания 24 часа.
Авторизация
Ключ из кабинета в заголовке Authorization: Bearer pdf_live_… или X-API-Key: pdf_live_…. Лимит частоты считается на ключ.
Тело запроса
JSON до 5 МБ. Поле source выбирает вид источника и остальные поля.
Разметка HTML со стилями. Доступно на всех тарифах.
source"html"обязательноеТип источника.
htmlstringобязательноеHTML-документ или фрагмент. Не пустой.
- Пример:
"<h1>Счёт №42</h1>"
optionsobjectнеобязательноеПараметры страницы. Все необязательные; другие ключи — ошибка 400.
landscapebooleanАльбомная ориентация.
- По умолчанию:
false
paperWidthstringШирина листа. По умолчанию A4.
- Формат:
- число и единица pt, px, in, mm, cm или pc без пробела: «20mm», «1.5cm», «.5in»; без единицы — дюймы
- Пример:
"8.27in"
paperHeightstringВысота листа. По умолчанию A4.
- Формат:
- число и единица pt, px, in, mm, cm или pc без пробела: «20mm», «1.5cm», «.5in»; без единицы — дюймы
- Пример:
"11.7in"
marginTopstringВерхнее поле.
- Формат:
- число и единица pt, px, in, mm, cm или pc без пробела: «20mm», «1.5cm», «.5in»; без единицы — дюймы
- Пример:
"20mm"
marginBottomstringНижнее поле.
- Формат:
- число и единица pt, px, in, mm, cm или pc без пробела: «20mm», «1.5cm», «.5in»; без единицы — дюймы
- Пример:
"20mm"
marginLeftstringЛевое поле.
- Формат:
- число и единица pt, px, in, mm, cm или pc без пробела: «20mm», «1.5cm», «.5in»; без единицы — дюймы
- Пример:
"0.39in"
marginRightstringПравое поле.
- Формат:
- число и единица pt, px, in, mm, cm или pc без пробела: «20mm», «1.5cm», «.5in»; без единицы — дюймы
- Пример:
"0.39in"
waitDelaystringПодождать перед печатью, пока скрипт на странице дорисует содержимое: график, шрифт с CDN, данные по fetch.
- Формат:
- число и s или ms, не больше 10 секунд: «2s», «500ms»
- По умолчанию:
"0s"- Пример:
"1s"
Ответы
- Заголовки
Idempotency-KeystringКлюч одного документа. Сохраните до запроса для восстановления после таймаута.
Idempotency-Replayedstringtrue при повторной выдаче без списания.
X-Result-Expires-AtstringКонец 24-часового срока повторной выдачи (UTC).
X-Pages-RenderedintegerСколько страниц списано за этот документ.
- Пример:
2
X-Quota-LimitintegerЛимит страниц текущего периода.
- Пример:
10000
X-Quota-UsedintegerИспользовано в периоде, включая этот документ.
- Пример:
145
X-Quota-RemainingintegerОсталось в периоде.
- Пример:
9855
invalid_request- — нет source или содержимого, лишний или неверный параметр в options — имя поля в message
url_not_allowed- — адрес без http(s) или ведёт во внутреннюю сеть
ТелоerrorstringобязательноеКод ошибки — по нему стоит ветвиться в коде.
- Пример:
"quota_exceeded"
messagestringТекст по-русски — для журнала и человека.
- Пример:
"Лимит страниц исчерпан"
missing_api_key- — нет заголовка Authorization: Bearer … и X-API-Key
invalid_api_key- — ключ неверный или отозван
ТелоerrorstringобязательноеКод ошибки — по нему стоит ветвиться в коде.
- Пример:
"quota_exceeded"
messagestringТекст по-русски — для журнала и человека.
- Пример:
"Лимит страниц исчерпан"
quota_exceeded- — лимит исчерпан или документ больше остатка; страницы не списываются
ТелоerrorstringобязательноеКод ошибки — по нему стоит ветвиться в коде.
- Пример:
"quota_exceeded"
messagestringТекст по-русски — для журнала и человека.
- Пример:
"Лимит страниц исчерпан"
email_not_verified- — почта аккаунта не подтверждена
source_not_allowed- — источник недоступен на тарифе: на Free — только HTML
ТелоerrorstringобязательноеКод ошибки — по нему стоит ветвиться в коде.
- Пример:
"quota_exceeded"
messagestringТекст по-русски — для журнала и человека.
- Пример:
"Лимит страниц исчерпан"
idempotency_in_progress- — ещё выполняется, повторите через Retry-After с тем же ключом
idempotency_conflict- — тело запроса отличается от исходного
ТелоerrorstringобязательноеКод ошибки — по нему стоит ветвиться в коде.
- Пример:
"quota_exceeded"
messagestringТекст по-русски — для журнала и человека.
- Пример:
"Лимит страниц исчерпан"
result_expired- — новый рендер требует нового ключа
ТелоerrorstringобязательноеКод ошибки — по нему стоит ветвиться в коде.
- Пример:
"quota_exceeded"
messagestringТекст по-русски — для журнала и человека.
- Пример:
"Лимит страниц исчерпан"
payload_too_large- — вынесите картинки по ссылкам или уменьшите файл
ТелоerrorstringобязательноеКод ошибки — по нему стоит ветвиться в коде.
- Пример:
"quota_exceeded"
messagestringТекст по-русски — для журнала и человека.
- Пример:
"Лимит страниц исчерпан"
rate_limit_exceeded- — запросы чаще лимита тарифа; повторите через Retry-After секунд
ЗаголовкиRetry-AfterintegerЧерез сколько секунд можно повторить.
- Пример:
3
ТелоerrorstringобязательноеКод ошибки — по нему стоит ветвиться в коде.
- Пример:
"quota_exceeded"
messagestringТекст по-русски — для журнала и человека.
- Пример:
"Лимит страниц исчерпан"
render_failed- — обычно дело в разметке или недоступной странице
ТелоerrorstringобязательноеКод ошибки — по нему стоит ветвиться в коде.
- Пример:
"quota_exceeded"
messagestringТекст по-русски — для журнала и человека.
- Пример:
"Лимит страниц исчерпан"
unavailable- — очередь заполнена или рендер перезапускается; повторите позже
ТелоerrorstringобязательноеКод ошибки — по нему стоит ветвиться в коде.
- Пример:
"quota_exceeded"
messagestringТекст по-русски — для журнала и человека.
- Пример:
"Лимит страниц исчерпан"
render_timeout- — документ слишком тяжёлый или страница грузится долго
ТелоerrorstringобязательноеКод ошибки — по нему стоит ветвиться в коде.
- Пример:
"quota_exceeded"
messagestringТекст по-русски — для журнала и человека.
- Пример:
"Лимит страниц исчерпан"
curl -X POST https://pdfapi.ru/api/v1/convert \
-H "Authorization: Bearer $PDFAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"source":"html","html":"<h1>Счёт №42</h1><p>К оплате: 12 000 ₽</p>","options":{"marginTop":"20mm"}}' \
-o document.pdfHTTP/1.1 200 OK
Content-Type: application/pdf
X-Pages-Rendered: 1
X-Quota-Limit: 10000
X-Quota-Used: 144
X-Quota-Remaining: 9856
%PDF-1.4 … (сам документ)