PDF support is one of the few advanced capabilities with genuinely broad 3P coverage: it works on the Claude API, Claude Platform on AWS, Amazon Bedrock, Google Vertex AI, and Microsoft Foundry, across all active models. You attach a PDF as a document content block in an ordinary Messages request and ask questions about it like any other input.
Three ways to attach a PDF
A document block's source can be a URL reference, inline base64 data, or a Files API file_id. Platform support differs: Bedrock and Google Cloud currently accept base64 only, while URL and file references work on the Claude API and Claude Platform on AWS (the Files API itself is not available on Bedrock or Vertex AI). If portability across clouds matters, base64 is the lowest common denominator.
import base64
from anthropic import AnthropicBedrockMantle
client = AnthropicBedrockMantle(aws_region="us-east-1")
pdf = base64.standard_b64encode(open("contract.pdf", "rb").read()).decode()
msg = client.messages.create(
model="anthropic.claude-sonnet-5", max_tokens=2048,
messages=[{"role": "user", "content": [
{"type": "document", "source": {"type": "base64",
"media_type": "application/pdf", "data": pdf}},
{"type": "text", "text": "List the renewal and termination terms."}]}],
)
Placement matters: Claude performs best when documents come before the text of your question in the message content.
How Claude actually reads a page
Each PDF page is processed two ways at once: the page is converted to an image (so Claude sees layout, tables, charts, and embedded figures) and its text is extracted and provided alongside. That dual view is why Claude can answer questions about a diagram on page 12 as well as quote clause 4.3 verbatim. It also drives the cost model: a page incurs text tokens — typically 1,500–3,000 depending on density — plus image tokens under the standard vision formula. There are no additional PDF fees beyond those tokens, and PDF processing is documented as eligible for Zero Data Retention.
Size limits
| Limit | Value |
|---|---|
| Request size | 32 MB whole payload (varies by platform) |
| Pages per request | 600 (100 when the request's context window is under 1M tokens) |
| PDF type | Standard PDFs only — no passwords or encryption |
Dense documents can fill the context window well before the page limit: at a few thousand tokens per page, a few hundred dense pages approaches a million tokens. Split large documents, downsample embedded images, or summarize in stages. And because per-document costs are hard to guess, run the token counting endpoint on a representative file before committing to a volume workload.
Patterns that keep PDF workloads affordable
The official best practices are all cost levers. Use prompt caching when the same document is analyzed repeatedly — the PDF becomes a cached prefix and later questions re-read it at a fraction of the price. Use batch processing for high-volume document pipelines where the Message Batches API is available (first-party API and Claude Platform on AWS), or the cloud-native batch offerings on Bedrock and Vertex AI. And if you need verifiable quotes, enable citations on the document block: PDF citations come back as page locations, though scanned PDFs without extractable text cannot be cited.
Where to go next
See the Files API for upload-once document reuse, citations for grounded quoting, and image inputs for the vision mechanics that PDF pages share. The feature matrix tracks platform status.