Turn 100-page reports into concise summaries with a single API call. Here's how to integrate AI document summarization into your app.
Information overload is real. Professionals consume dozens of reports, whitepapers, contracts, and research papers every week. Reading each document in full isn't practical — but you still need to extract the key points.
This is where AI document summarization comes in. Instead of reading a 50-page PDF, you get a crisp, accurate summary that captures the essential information. And with the DocuMind Summarize API, you can add this capability to your own applications in minutes.
Traditional summarization relied on extractive methods — selecting the most important sentences from the original text. While functional, these approaches miss context, fail to synthesize information across sections, and produce summaries that feel disjointed.
Modern AI-powered summarization uses large language models to understand the full document, identify key themes, and generate coherent, abstractive summaries. The result reads like a human wrote it — because effectively, an AI did.
DocuMind API provides a dedicated summarization endpoint that combines PDF processing with AI summarization in a single request.
POST /api/v1/summarizehttps://api.tokenall.net.cn/documindfile — PDF document (required)summary_length — brief | moderate | detailed (optional, default: brief)language — Output language code (optional, default: same as document)focus — Specific topic to focus the summary on (optional)
Here's the simplest way to get a summary:
curl -X POST https://api.tokenall.net.cn/documind/api/v1/summarize \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@quarterly-report.pdf" \
-F "summary_length=brief"
Response:
{
"success": true,
"summary": "Q3 revenue increased 23% YoY to $4.2B, driven primarily by cloud services growth. Operating margin expanded to 18.5%. The company announced three strategic acquisitions in AI infrastructure and raised full-year guidance by $500M.",
"metadata": {
"page_count": 48,
"original_word_count": 12450,
"summary_word_count": 85,
"language": "en",
"processing_time_ms": 2100
}
}
Let's build a complete Python integration that handles summarization with error handling and retry logic:
import requests
import time
class DocuMindSummarizer:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://api.tokenall.net.cn/documind/api/v1"
def summarize(self, file_path, length="brief", language=None, focus=None):
"""Summarize a PDF document using DocuMind API."""
url = f"{self.base_url}/summarize"
headers = {"X-API-Key": self.api_key}
data = {"summary_length": length}
if language:
data["language"] = language
if focus:
data["focus"] = focus
with open(file_path, "rb") as f:
files = {"file": (file_path, f, "application/pdf")}
response = requests.post(url, headers=headers, files=files, data=data)
# Handle rate limiting
if response.status_code == 429:
retry_after = int(response.headers.get("Retry-After", 5))
print(f"Rate limited. Retrying in {retry_after}s...")
time.sleep(retry_after)
return self.summarize(file_path, length, language, focus)
response.raise_for_status()
result = response.json()
return {
"summary": result["summary"],
"pages": result["metadata"]["page_count"],
"original_words": result["metadata"]["original_word_count"],
"summary_words": result["metadata"]["summary_word_count"],
"compression_ratio": round(
result["metadata"]["original_word_count"] /
result["metadata"]["summary_word_count"], 1
)
}
# Usage examples
summarizer = DocuMindSummarizer("your_api_key")
# Brief summary
result = summarizer.summarize("annual-report.pdf", length="brief")
print(f"Brief summary ({result['summary_words']} words):")
print(result["summary"])
# Detailed summary focused on financials
result = summarizer.summarize(
"annual-report.pdf",
length="detailed",
focus="financial performance and revenue"
)
print(f"\nDetailed financial summary:")
print(result["summary"])
# Summary in a different language
result = summarizer.summarize("paper.pdf", language="zh")
print(f"\nChinese summary:")
print(result["summary"])
For processing multiple documents, here's a batch summarization script with progress tracking:
from pathlib import Path
import json
def batch_summarize(pdf_directory, api_key, output_file="summaries.json"):
"""Summarize all PDFs in a directory and save results."""
summarizer = DocuMindSummarizer(api_key)
results = []
pdf_files = list(Path(pdf_directory).glob("*.pdf"))
print(f"Found {len(pdf_files)} PDFs to summarize")
for i, pdf_path in enumerate(pdf_files, 1):
print(f"\n[{i}/{len(pdf_files)}] Processing {pdf_path.name}...")
try:
result = summarizer.summarize(str(pdf_path), length="brief")
result["filename"] = pdf_path.name
results.append(result)
print(f" ✓ {result['summary_words']} words (from {result['original_words']})")
except Exception as e:
print(f" ✗ Error: {e}")
results.append({"filename": pdf_path.name, "error": str(e)})
# Save results
with open(output_file, "w") as f:
json.dump(results, f, indent=2, ensure_ascii=False)
print(f"\nDone! Results saved to {output_file}")
return results
# Process all PDFs in a folder
batch_summarize("./research-papers/", "your_api_key")
| Length | Output | Best For |
|---|---|---|
brief | 2-4 sentences | Quick overview, document feeds, notification summaries |
moderate | 1-2 paragraphs | Executive summaries, report digests, email briefings |
detailed | 3-5 paragraphs | Research reviews, contract analysis, in-depth understanding |
For maximum flexibility, you can combine the extract and summarize endpoints. Extract text first, then pass it to your own summarization model or pipeline:
def extract_and_summarize(file_path, api_key):
"""Extract text and get AI summary in sequence."""
base_url = "https://api.tokenall.net.cn/documind/api/v1"
headers = {"X-API-Key": api_key}
with open(file_path, "rb") as f:
files = {"file": (file_path, f, "application/pdf")}
# Step 1: Extract raw text
extract_resp = requests.post(
f"{base_url}/extract", headers=headers, files=files
)
full_text = extract_resp.json()["text"]
# Step 2: Get AI summary
extract_resp2 = requests.post(
f"{base_url}/summarize", headers=headers,
files={"file": open(file_path, "rb")},
data={"summary_length": "moderate"}
)
summary = extract_resp2.json()["summary"]
return {"full_text": full_text, "summary": summary}
# Use both outputs
result = extract_and_summarize("report.pdf", "your_api_key")
print("Summary:", result["summary"])
print("Full text available:", len(result["full_text"]), "characters")
🚀 Add AI Summarization to Your App Today
Free plan includes 100 API calls per month. No credit card required.
Get Started with DocuMind API →Published August 2, 2026 · TokenAll Blog