REST APIs for developers.
180+ tools. One key.
QR codes, PDF manipulation, hash generation, UUID, IP geolocation, DNS lookup, SSL checker and more — all as simple HTTP endpoints. Free tier: 1,500 calls/month. No credit card.
Available Endpoints
PDF Manipulation
/api/v1/pdf/compressPDF Compressor
Reduce PDF file size with Ghostscript compression. Choose quality level: screen, ebook, printer, or prepress. Max 4 MB per file.
/api/v1/pdf/mergePDF Merger
Combine 2–20 PDF files into a single document. Returns merged file as base64.
/api/v1/pdf/splitPDF Splitter
Split a PDF by page range, every N pages, or extract specific pages. Returns array of split PDFs.
/api/v1/pdf/to-wordPDF to Word
Convert PDF to DOCX (Word) format with text preservation. Returns base64-encoded DOCX.
/api/v1/pdf/to-imagePDF to Image
Convert PDF pages to PNG, JPEG, or WebP images. Configurable DPI (72, 150, 300) and page range.
/api/v1/pdf/unlockPDF Unlocker
Remove permission restrictions (owner passwords) from PDFs. Returns unlocked PDF as base64.
/api/v1/pdf/protectPDF Locker
Add password protection to PDFs. Set user password (to open) and/or owner password (to edit). Coming soon.
Developer Utilities
/api/v1/util/qrQR Code Generator
Generate QR codes as PNG or SVG with custom colors and sizes.
/api/v1/util/hashHash Generator
MD5, SHA-1, SHA-256, SHA-384, SHA-512 — one call returns all.
/api/v1/util/uuidUUID Generator
Generate up to 100 UUID v4 values per request.
/api/v1/util/base64Base64 Encode/Decode
Encode or decode strings, with URL-safe variant.
/api/v1/util/passwordPassword Generator
Cryptographically secure passwords with configurable rules.
IP & Network Intelligence
/api/v1/ip/lookupIP Lookup
Country, city, ISP, ASN, proxy detection for any IPv4/IPv6.
/api/v1/domain/dnsDNS Records
Query A, AAAA, MX, TXT, CNAME, NS, SOA records.
/api/v1/domain/sslSSL Certificate
Issuer, expiry, SAN list and days-remaining for any domain.
/api/v1/domain/whoisWHOIS Lookup
Registrar, registrant, dates and nameservers via RDAP.
Quick Start
Use the demo key below to make your first call right now.
curl -X POST https://www.publicsofttools.com/api/v1/util/qr \
-H "X-Api-Key: pst_free_demo_key_001" \
-H "Content-Type: application/json" \
-d '{"text":"https://publicsofttools.com","size":256,"format":"png"}'const res = await fetch('https://www.publicsofttools.com/api/v1/util/qr', {
method: 'POST',
headers: {
'X-Api-Key': 'pst_free_demo_key_001',
'Content-Type': 'application/json',
},
body: JSON.stringify({ text: 'https://publicsofttools.com', size: 256 }),
})
const { data } = await res.json()
// data.image is a base64 PNG data URL — use directly in <img src>import httpx
r = httpx.post(
"https://www.publicsofttools.com/api/v1/util/qr",
headers={"X-Api-Key": "pst_free_demo_key_001"},
json={"text": "https://publicsofttools.com", "size": 256},
)
print(r.json()["data"]["image"]) # base64 PNG data URL{
"success": true,
"data": {
"image": "data:image/png;base64,iVBOR...",
"format": "png",
"size": 256
},
"meta": { "plan": "free", "calls_limit": 1500 }
}