Screenshots, PDFs, and Markdown conversion. One API for all your document generation needs.
Online v2.0 PNG / JPEG / PDF MarkdownCapture any webpage as PNG, JPEG, or PDF. Custom viewports, full-page support.
Convert Markdown to beautifully styled PDFs. Light and dark themes, custom margins.
Render Markdown as PNG or JPEG images. Perfect for social cards and previews.
Convert Markdown to styled HTML. Free endpoint, no auth required.
Contact us or use the demo key below for testing (100 captures/month).
curl "https://YOUR_HOST/screenshot-api/api/capture?url=https://example.com" \ -H "X-API-Key: YOUR_API_KEY" \ -o screenshot.png
curl -X POST "https://YOUR_HOST/screenshot-api/api/md2pdf" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"markdown": "# My Document\n\nHello **world**!"}' \
-o document.pdf
// Screenshot
const resp = await fetch(
'https://YOUR_HOST/screenshot-api/api/capture?url=https://example.com',
{ headers: { 'X-API-Key': 'YOUR_API_KEY' } }
);
fs.writeFileSync('screenshot.png', Buffer.from(await resp.arrayBuffer()));
// Markdown to PDF
const pdf = await fetch('https://YOUR_HOST/screenshot-api/api/md2pdf', {
method: 'POST',
headers: { 'X-API-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({ markdown: '# Hello\n\nWorld!', theme: 'light' })
});
fs.writeFileSync('doc.pdf', Buffer.from(await pdf.arrayBuffer()));
import requests
# Screenshot
resp = requests.get(
'https://YOUR_HOST/screenshot-api/api/capture',
params={'url': 'https://example.com'},
headers={'X-API-Key': 'YOUR_API_KEY'}
)
with open('screenshot.png', 'wb') as f:
f.write(resp.content)
# Markdown to PDF
resp = requests.post(
'https://YOUR_HOST/screenshot-api/api/md2pdf',
headers={'X-API-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json'},
json={'markdown': '# Hello\n\nWorld!', 'theme': 'light'}
)
with open('doc.pdf', 'wb') as f:
f.write(resp.content)
Capture a screenshot or PDF from a URL.
| Parameter | Type | Description |
|---|---|---|
url | string | Required. The URL to capture. |
format | string | png (default), jpeg, or pdf |
width | int | Viewport width, 320-3840. Default: 1280 |
height | int | Viewport height, 200-2160. Default: 800 |
fullPage | bool | Capture the full scrollable page |
delay | int | Wait ms after page load (max 10000) |
quality | int | JPEG quality, 1-100. Default: 80 |
paperSize | string | PDF paper size: A4, Letter, Legal, etc. |
landscape | bool | PDF landscape orientation |
userAgent | string | Custom User-Agent header |
timeout | int | Navigation timeout ms (5000-60000) |
Convert Markdown to a styled PDF document. Requires authentication.
| Body Field | Type | Description |
|---|---|---|
markdown | string | Required. Markdown content to convert. |
theme | string | light (default) or dark |
paperSize | string | A4 (default), Letter, Legal, Tabloid |
landscape | bool | Landscape orientation. Default: false |
fontSize | string | Base font size. Default: "16px" |
margins | object | { top, bottom, left, right } in CSS units |
Convert Markdown to a PNG or JPEG image. Requires authentication.
| Body Field | Type | Description |
|---|---|---|
markdown | string | Required. Markdown content to convert. |
theme | string | light (default) or dark |
format | string | png (default) or jpeg |
width | int | Image width, 320-3840. Default: 1280 |
fontSize | string | Base font size. Default: "16px" |
quality | int | JPEG quality, 1-100. Default: 85 |
Convert Markdown to styled HTML. No authentication required.
| Body Field | Type | Description |
|---|---|---|
markdown | string | Required. Markdown content to convert. |
theme | string | light (default) or dark |
fontSize | string | Base font size. Default: "16px" |
width | string | Max content width. Default: "800px" |
Pass your API key via the X-API-Key header or the api_key query parameter. The /api/md2html endpoint does not require authentication.
| Status | Meaning |
|---|---|
| 400 | Missing/invalid parameters, body too large (max 1MB) |
| 401 | Missing or invalid API key |
| 429 | Rate limit or monthly limit exceeded |
| 500 | Conversion failed |
| 503 | Server busy, max concurrent tasks reached |
Service health and statistics. No authentication required.
Contact us to get started with a Pro plan or discuss enterprise needs.