API Reference

PDF Brightouts
REST API

All tools are available as REST endpoints. Send a multipart/form-data POST request — no authentication required. Files are processed in-memory and never stored.

6 endpoints
JSON responses
No auth required

Quick Start

All endpoints accept multipart/form-data and return JSON (except /api/convert, which returns a binary PDF). Here is a minimal example using cURL:

curl -X POST https://pdfbrightouts.com/api/analyze \
  -F "file=@my-document.pdf" | jq .

Replace my-document.pdf with your file path. All responses are UTF-8 encoded JSON unless noted otherwise.

Endpoints

POST/api/analyze

Full PDF forensic analysis. Inspects metadata, fonts, hidden content, document structure, embedded files, and integrity.

Request — multipart/form-data

FieldType
fileFile (PDF)

Response

{
  "metadata": {
    "title": "Q4 Report",
    "author": "Jane Smith",
    "creator": "Adobe Acrobat",
    "createdAt": "2024-01-15T10:30:00Z",
    "modifiedAt": "2024-03-22T14:00:00Z",
    "pdfVersion": "1.7",
    "pageCount": 12,
    "encrypted": false
  },
  "fonts": [
    { "name": "Helvetica", "type": "Type1", "embedded": true, "pages": [1, 2, 3] }
  ],
  "hiddenContent": {
    "hasInvisibleText": false,
    "hasJavaScript": false,
    "hiddenLayers": []
  },
  "structure": {
    "bookmarks": [],
    "formFields": [],
    "hyperlinks": ["https://example.com"]
  },
  "embeddedFiles": [],
  "integrity": {
    "hasDigitalSignature": false,
    "revisionCount": 1,
    "producerChain": ["Adobe Acrobat Pro DC"],
    "suspiciousIndicators": []
  },
  "healthScore": 92,
  "fileSize": 204800,
  "analyzedAt": "2025-06-01T09:00:00Z"
}

cURL Example

curl -X POST https://pdfbrightouts.com/api/analyze \
  -F "file=@document.pdf"
POST/api/compare

Compare two PDFs side by side and surface every difference — metadata changes, font swaps, structural edits, and text modifications.

Request — multipart/form-data

FieldType
fileAFile (PDF)
fileBFile (PDF)

Response

{
  "metadataDiffs": [
    {
      "field": "modifiedAt",
      "valueA": "2024-01-01T00:00:00Z",
      "valueB": "2024-06-15T09:30:00Z"
    }
  ],
  "fontDiffs": [],
  "structureDiffs": [
    { "type": "hyperlink_added", "value": "https://new-link.com" }
  ],
  "contentDiffs": [
    { "page": 3, "summary": "Text block changed on page 3" }
  ],
  "healthScoreA": 88,
  "healthScoreB": 74,
  "analyzedAt": "2025-06-01T09:05:00Z"
}

cURL Example

curl -X POST https://pdfbrightouts.com/api/compare \
  -F "fileA=@original.pdf" \
  -F "fileB=@modified.pdf"
POST/api/batch

Analyze multiple PDFs in a single request. Returns an array of full analysis results in the same order as the uploaded files.

Request — multipart/form-data

FieldType
file0, file1, file2, …File (PDF)

Response

[
  {
    "fileName": "report-q1.pdf",
    "healthScore": 91,
    "metadata": { "pageCount": 8, "author": "Alice" },
    "analyzedAt": "2025-06-01T09:10:00Z"
  },
  {
    "fileName": "report-q2.pdf",
    "healthScore": 65,
    "metadata": { "pageCount": 14, "author": "Bob" },
    "analyzedAt": "2025-06-01T09:10:01Z"
  }
]

cURL Example

curl -X POST https://pdfbrightouts.com/api/batch \
  -F "file0=@report-q1.pdf" \
  -F "file1=@report-q2.pdf" \
  -F "file2=@report-q3.pdf"
POST/api/convert

Convert a plain-text file to a clean, well-formatted PDF. Supports .txt, .md, .html, and .csv. Returns binary PDF data.

Request — multipart/form-data

FieldType
fileFile (.txt / .md / .html / .csv)

Response

# Response: binary PDF stream
Content-Type: application/pdf
Content-Disposition: attachment; filename="converted.pdf"

<binary PDF data>

cURL Example

curl -X POST https://pdfbrightouts.com/api/convert \
  -F "file=@notes.md" \
  --output converted.pdf
POST/api/extract

Extract all text content from a PDF, page by page. Useful for full-text search indexing, RAG pipelines, and content analysis.

Request — multipart/form-data

FieldType
fileFile (PDF)

Response

{
  "pages": [
    { "page": 1, "text": "Executive Summary\nThis report covers..." },
    { "page": 2, "text": "Table of Contents\n1. Introduction..." }
  ],
  "totalPages": 12,
  "totalCharacters": 18342,
  "extractedAt": "2025-06-01T09:15:00Z"
}

cURL Example

curl -X POST https://pdfbrightouts.com/api/extract \
  -F "file=@document.pdf"
POST/api/detect

AI-assisted tamper and anomaly detection. Returns a risk verdict, confidence score, and a list of signals that contributed to the assessment.

Request — multipart/form-data

FieldType
fileFile (PDF)

Response

{
  "verdict": "suspicious",
  "confidence": 0.83,
  "riskScore": 67,
  "signals": [
    "Creation date predates PDF version 1.6 spec",
    "Producer field overwritten after signing",
    "Hidden JavaScript block detected"
  ],
  "summary": "This document shows 3 indicators of post-signature modification.",
  "analyzedAt": "2025-06-01T09:20:00Z"
}

cURL Example

curl -X POST https://pdfbrightouts.com/api/detect \
  -F "file=@suspicious.pdf"

Questions or feedback?

All endpoints are free to use. Files are never stored — analysis happens in-memory on Vercel serverless functions and results are returned immediately.