Генерация PDF-документов из веб-страниц через headless Chromium. Запросы выполняются с российских серверов — сайты отдают локализованный контент, корректные цены в рублях и российскую выдачу. 100% совместимость с Browserless.io — drop-in замена для существующих интеграций.
Эндпоинт
Заголовок раздела «Эндпоинт»| Метод | Эндпоинт | Описание |
|---|---|---|
POST | /v1/browser/pdf | Browserless-совместимый API |
Базовое использование
Заголовок раздела «Базовое использование»API возвращает бинарный PDF напрямую (не JSON с URL).
# Базовый PDFcurl -X POST "https://proxy.unoapi.ru/v1/browser/pdf" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com"}' \ --output page.pdf
# С параметрамиcurl -X POST "https://proxy.unoapi.ru/v1/browser/pdf" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com", "options": { "format": "A4", "landscape": false, "printBackground": true, "margin": {"top": "1cm", "right": "1cm", "bottom": "1cm", "left": "1cm"} } }' \ --output page.pdfconst response = await fetch('https://proxy.unoapi.ru/v1/browser/pdf', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ url: 'https://example.com', options: { format: 'A4', printBackground: true, margin: { top: '1cm', right: '1cm', bottom: '1cm', left: '1cm' } } })});
// Ответ — бинарный PDFconst pdfBuffer = await response.arrayBuffer();await Bun.write('page.pdf', pdfBuffer);
// Заголовки ответаconsole.log(response.headers.get('X-Response-Code')); // HTTP код целевого сайтаconsole.log(response.headers.get('X-Response-URL')); // Финальный URL после редиректовimport requests
response = requests.post( 'https://proxy.unoapi.ru/v1/browser/pdf', headers={ 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, json={ 'url': 'https://example.com', 'options': { 'format': 'A4', 'printBackground': True, 'margin': {'top': '1cm', 'right': '1cm', 'bottom': '1cm', 'left': '1cm'} } })
# Ответ — бинарный PDFwith open('page.pdf', 'wb') as f: f.write(response.content)body, _ := json.Marshal(map[string]interface{}{ "url": "https://example.com", "options": map[string]interface{}{ "format": "A4", "printBackground": true, "margin": map[string]string{ "top": "1cm", "right": "1cm", "bottom": "1cm", "left": "1cm", }, },})
req, _ := http.NewRequest("POST", "https://proxy.unoapi.ru/v1/browser/pdf", bytes.NewBuffer(body))req.Header.Set("Authorization", "Bearer YOUR_API_KEY")req.Header.Set("Content-Type", "application/json")
// Ответ — бинарный PDFresp, _ := client.Do(req)io.Copy(file, resp.Body)Параметры PDF
Заголовок раздела «Параметры PDF»Основные параметры в объекте options:
format— размер страницы:A0–A6,Letter,Legal,Tabloid,Ledger(по умолчаниюLetter)landscape— альбомная ориентация (по умолчаниюfalse)scale— масштаб от 0.1 до 2 (по умолчанию 1)printBackground— печатать фоновые стили (по умолчаниюfalse)displayHeaderFooter— отображать колонтитулы (по умолчаниюfalse)headerTemplate/footerTemplate— HTML-шаблоны колонтитуловmargin— отступы:{ top, right, bottom, left }(например"1cm","10px")pageRanges— диапазон страниц (например"1-3","1,3,5")width/height— переопределение размера страницы (например"8.5in")preferCSSPageSize— использовать CSS@pageразмерomitBackground— прозрачный фон
Шаблоны колонтитулов
Заголовок раздела «Шаблоны колонтитулов»Шаблоны поддерживают специальные CSS-классы:
.date— текущая дата.title— заголовок документа.url— URL документа.pageNumber— номер текущей страницы.totalPages— общее количество страниц
{ "url": "https://example.com", "options": { "displayHeaderFooter": true, "headerTemplate": "<div style='font-size:10px; text-align:center; width:100%;'>Отчёт</div>", "footerTemplate": "<div style='font-size:10px; text-align:center; width:100%;'>Стр. <span class='pageNumber'></span> из <span class='totalPages'></span></div>", "margin": {"top": "2cm", "bottom": "2cm"} }}Заголовки ответа
Заголовок раздела «Заголовки ответа»X-Response-Code— HTTP-код ответа целевой страницыX-Response-Status— текстовый статус ответаX-Response-URL— финальный URL после редиректов
Рендеринг HTML
Заголовок раздела «Рендеринг HTML»Вместо URL можно передать HTML-контент напрямую:
curl -X POST "https://proxy.unoapi.ru/v1/browser/pdf" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "html": "<html><body><h1>Отчёт</h1><p>Содержимое отчёта</p></body></html>", "options": {"format": "A4", "printBackground": true} }' \ --output report.pdfSSRF-защита
Заголовок раздела «SSRF-защита»API блокирует небезопасные URL: localhost, приватные IP, .local домены.
Миграция с Browserless
Заголовок раздела «Миграция с Browserless»https://chrome.browserless.io/pdfhttps://proxy.unoapi.ru/v1/browser/pdfФормат запроса и ответа полностью совместим.