Thị trường xử lý tài liệu bằng AI đang tăng trưởng với tốc độ CAGR 33.68% mỗi năm, từ $3.22 tỷ năm 2025 lên dự kiến $43.92 tỷ vào 2034 (Precedence Research, 2025). Nhưng phần lớn developer tích hợp Claude API vẫn đang encode file thành base64, nhét thẳng vào mỗi request — upload đi upload lại, tốn token, chậm và đắt không cần thiết.
Claude Files API ra mắt từ tháng 5/2025 giải quyết đúng vấn đề đó. Upload một lần, nhận file_id, dùng lại trong hàng trăm conversation sau mà không cần gửi lại file. Bài này đi thẳng vào kỹ thuật: từ cách upload, xử lý các định dạng khác nhau, đến cách tối ưu chi phí thực tế.
Key Takeaways - Files API hỗ trợ tối đa 500MB/file và 500GB storage/workspace; upload, download, xóa file đều miễn phí — chỉ tính tiền token khi dùng content trong Messages (Anthropic Docs, 2025). - Upload một lần với
POST /v1/files→ nhậnfile_id→ tái sử dụng không giới hạn trong Messages API. - PDF và plain text là document block natively; ảnh (JPEG, PNG, GIF, WebP) dùng image block; CSV/DOCX cần convert trước. - Files API chỉ available trên Anthropic direct API — không có trên AWS Bedrock hay Google Vertex AI. - Kết hợp Files API với Prompt Caching giúp tiết kiệm đến 90% chi phí token trên cache hits.
Claude Files API Là Gì và Tại Sao Developer Nên Dùng?
Claude Files API cho phép lưu trữ file trên server Anthropic và tái sử dụng chúng qua file_id trong nhiều API request khác nhau, thay vì phải gửi toàn bộ nội dung file ở mỗi lần gọi. Theo tài liệu chính thức của Anthropic, API này ra mắt ngày 22/5/2025 và hiện đang ở trạng thái public beta với rate limit khoảng 100 requests/phút. File được lưu theo scope workspace — mọi API key trong cùng workspace đều có thể truy cập.
Điểm khác biệt quan trọng mà ít tài liệu nhắc đến: Files API không phải chỉ là "CDN cho file". Nó thay đổi kiến trúc ứng dụng AI theo hướng stateful document pipeline — thay vì gửi lại toàn bộ context mỗi conversation, bạn chỉ cần gửi file_id nhỏ gọn. Với những ứng dụng xử lý hàng nghìn document hàng ngày, đây là sự khác biệt đáng kể về cả chi phí lẫn latency.
Theo thống kê từ Anthropic Economic Index (tháng 9/2025), 44% traffic API Claude tập trung vào các tác vụ tính toán và phân tích — đây chính là nhóm use case Files API phục vụ tốt nhất. Hiện tại 70% Fortune 100 đang dùng Claude, và phần lớn trong số đó cần xử lý document ở quy mô lớn.
Khi nào Files API thực sự có giá trị? - Chatbot cần tham chiếu cùng một tài liệu hướng dẫn/policy qua nhiều cuộc trò chuyện - Pipeline phân tích hàng loạt document (invoice, contract, report) - RAG system kết hợp với vector search — upload chunk, dùng lại liên tục - Multi-turn conversation về cùng một file PDF lớn
[INTERNAL-LINK: Tìm hiểu thêm về cách xây dựng RAG với Claude → Bài hướng dẫn RAG với Claude API đầy đủ]
Files API Hỗ Trợ Định Dạng Nào và Giới Hạn Là Bao Nhiêu?
Anthropic hỗ trợ hai nhóm định dạng chính với cơ chế xử lý khác nhau (Anthropic Docs, 2025). Hiểu rõ điều này sẽ giúp bạn tránh lỗi 400 Bad Request khi build pipeline.

Document blocks (natively supported):
| Định dạng | MIME Type | Compatible Model |
|---|---|---|
application/pdf |
Claude 3.5+ | |
| Plain text | text/plain |
Claude 3.5+ |
Image blocks (natively supported):
| Định dạng | MIME Type |
|---|---|
| JPEG | image/jpeg |
| PNG | image/png |
| GIF | image/gif |
| WebP | image/webp |
Định dạng cần convert trước (không support natively):
- CSV, DOCX, XLSX, Markdown → convert sang plain text (text/plain)
- DOCX có hình ảnh → convert sang PDF trước khi upload
Giới hạn quan trọng cần nhớ:
Max file size: 500 MB / file
Total storage: 500 GB / workspace
Files API ops: MIỄN PHÍ (upload, download, list, delete, get metadata)
Token billing: Chỉ tính khi dùng file content trong Messages API
ZDR: Files API KHÔNG eligible cho Zero Data Retention
Platform: Chỉ Anthropic direct API (không có trên Bedrock, Vertex AI)
Một lưu ý từ thực tế: Files được scoped theo workspace, không phải theo API key. Nếu team có nhiều service dùng chung workspace, tất cả đều nhìn thấy toàn bộ file của nhau. Đây là điều cần tính đến khi thiết kế multi-tenant pipeline — bạn sẽ cần logic phân quyền ở tầng ứng dụng, không phải tầng API.
Theo Anthropic, file không có thời gian hết hạn — chúng tồn tại cho đến khi bạn xóa bằng DELETE /v1/files/{file_id}. Điều này vừa tiện (không lo file hết hạn đột ngột) vừa đòi hỏi có lifecycle management chủ động để không lãng phí storage.
Để hiểu cách tính chi phí khi kết hợp Files API với các chiến lược tiết kiệm khác, xem thêm về [INTERNAL-LINK: tối ưu chi phí Claude API → Hướng dẫn giảm chi phí với Prompt Caching và Batch API].
Cách Upload File Lên Claude Files API — Step-by-Step
Bước đầu tiên và quan trọng nhất: mọi request đến Files API đều cần beta header anthropic-beta: files-api-2025-04-14. Thiếu header này sẽ trả về lỗi 400 ngay lập tức.

Upload file cơ bản (Python)
import anthropic
client = anthropic.Anthropic(api_key="YOUR_API_KEY")
# Upload một PDF
with open("contract.pdf", "rb") as f:
response = client.beta.files.upload(
file=("contract.pdf", f, "application/pdf"),
)
file_id = response.id
print(f"Uploaded file ID: {file_id}")
# Output: file_id_abc123xyz
Theo tài liệu chính thức (Anthropic Files API Reference, 2025), file_id có dạng chuỗi unique bắt đầu bằng file_. Response object chứa các fields: id, type, filename, mime_type, size_bytes, created_at, downloadable.
Upload nhiều file song song (production pattern)
import anthropic
import asyncio
from pathlib import Path
client = anthropic.Anthropic()
def upload_file(filepath: str) -> tuple[str, str]:
path = Path(filepath)
mime = "application/pdf" if path.suffix == ".pdf" else "text/plain"
with open(filepath, "rb") as f:
response = client.beta.files.upload(
file=(path.name, f, mime),
)
return path.name, response.id
# Upload batch documents
documents = ["report-q1.pdf", "policy.txt", "invoice-march.pdf"]
file_ids = {}
for doc in documents:
name, fid = upload_file(doc)
file_ids[name] = fid
print(f"{name} -> {fid}")
List và quản lý file
# List tất cả files trong workspace
files = client.beta.files.list()
for f in files.data:
print(f"{f.id} | {f.filename} | {f.size_bytes} bytes | {f.created_at}")
# Lấy metadata của file cụ thể
meta = client.beta.files.retrieve_metadata(file_id)
print(meta)
# Xóa file khi không cần
client.beta.files.delete(file_id)
print("File deleted.")
Lưu ý quan trọng từ docs chính thức: file do user upload thì không download được (field downloadable: false). Chỉ file được tạo bởi code execution tool mới có thể download về. Đây là giới hạn bảo mật có chủ ý của Anthropic.
[INTERNAL-LINK: Xem thêm về Claude Tool Use để kết hợp code execution → Hướng dẫn Claude Tool Use và Function Calling nâng cao]
Làm Thế Nào Để Process Documents Với Files API?
Sau khi có file_id, bước tiếp theo là dùng nó trong Messages API. Cú pháp khác nhau tùy loại file — đây là điểm nhiều developer nhầm lẫn.

Process PDF document
response = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "file",
"file_id": file_id, # ID từ bước upload
},
},
{
"type": "text",
"text": "Tóm tắt các điểm quan trọng trong tài liệu này.",
}
],
}
],
betas=["files-api-2025-04-14"],
)
print(response.content[0].text)
Process image file
# Với ảnh, dùng type "image" thay vì "document"
response = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=512,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "file",
"file_id": image_file_id,
},
},
{
"type": "text",
"text": "Mô tả nội dung trong ảnh này.",
}
],
}
],
betas=["files-api-2025-04-14"],
)
Multi-document analysis pattern (production)
Pattern dưới đây tôi đã dùng thực tế khi build pipeline phân tích hợp đồng — upload 50 contract PDF một lần, sau đó query từng cái với nhiều prompt khác nhau mà không cần re-upload:
def analyze_document(file_id: str, prompt: str, model: str = "claude-haiku-4-5") -> str:
"""Phân tích document đã upload qua file_id."""
response = client.beta.messages.create(
model=model,
max_tokens=2048,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {"type": "file", "file_id": file_id},
},
{"type": "text", "text": prompt},
],
}
],
betas=["files-api-2025-04-14"],
)
return response.content[0].text
# Dùng lại cùng file_id với nhiều prompt khác nhau
summary = analyze_document(file_id, "Tóm tắt trong 3 điểm chính.")
risks = analyze_document(file_id, "Liệt kê các rủi ro pháp lý trong hợp đồng.")
dates = analyze_document(file_id, "Trích xuất tất cả ngày tháng quan trọng.")
Theo nghiên cứu thực tế, AI document processing đạt độ chính xác lên đến 99% với document có cấu trúc rõ ràng và giảm lỗi của con người xuống 90% (SenseTask, 2025).
Bài hướng dẫn xây dựng ứng dụng AI production-ready sẽ cung cấp thêm context về kiến trúc tổng thể: [INTERNAL-LINK: xây dựng AI app với Claude API → Build AI App với Claude API từ đầu đến production].
Files API Pricing và Cách Tối Ưu Chi Phí
Một trong những điểm mạnh nhất của Files API là file management operations hoàn toàn miễn phí — upload, download, list, xóa, lấy metadata đều không tính tiền (Anthropic Pricing Docs, 2025). Chỉ tính tiền khi content của file được xử lý trong Messages API như token thông thường.
So sánh chi phí thực tế (100 lần query cùng 1 file PDF 50 trang):
| Phương pháp | Số lần upload | Token overhead | Chi phí ước tính |
|---|---|---|---|
| Inline base64 (cũ) | 100 lần | ~150K tokens × 100 | Rất cao |
| Files API (không cache) | 1 lần | ~150K tokens × 100 | Tương đương |
| Files API + Prompt Cache | 1 lần | 150K tokens lần đầu + 10% × 99 lần | Giảm ~90% |
Chiến lược tối ưu chi phí tốt nhất: kết hợp Files API với Prompt Caching.
response = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {"type": "file", "file_id": file_id},
"cache_control": {"type": "ephemeral"}, # Enable caching
},
{"type": "text", "text": prompt},
],
}
],
betas=["files-api-2025-04-14"],
)
Theo Anthropic, prompt cache hits chỉ tốn 10% giá so với input token thông thường — tức là giảm 90% chi phí cho nội dung file sau lần đầu tiên. Với Claude Haiku 4.5 ở mức $1/MTok input, cache hit chỉ tốn $0.10/MTok.
Chọn model phù hợp với loại task: - Haiku 4.5 ($1/MTok): phù hợp extraction, classification, summarization đơn giản - Sonnet 4.6 ($3/MTok): phân tích phức tạp, legal review, so sánh nhiều document - Batch API: giảm thêm 50% trên mọi model cho pipeline xử lý không real-time
Xem chi tiết cách kết hợp các chiến lược tiết kiệm: [INTERNAL-LINK: Prompt Caching giảm chi phí API → Claude Prompt Caching hướng dẫn chi tiết].
Khi Nào Nên Dùng Files API và Khi Nào Không?
Nên dùng Files API khi: - File được tham chiếu từ 2 lần trở lên (break-even ngay từ lần thứ 2) - Document lớn hơn 10KB (overhead base64 encoding trở nên đáng kể) - Multi-turn conversation về cùng một tài liệu - Pipeline batch processing (upload một lần, query nhiều lần) - Chatbot doanh nghiệp cần tham chiếu knowledge base cố định
Không nên dùng Files API khi: - File chỉ dùng đúng 1 lần và nhỏ (< 5KB) — inline đơn giản hơn - Cần Zero Data Retention (ZDR) — Files API không eligible - Chạy trên AWS Bedrock hoặc Google Vertex AI — không có sẵn - File thay đổi liên tục (phải xóa và upload lại mỗi lần — không tiện)
Điều thường bị bỏ qua: Files API không phải giải pháp tối ưu cho real-time streaming document khi nội dung thay đổi liên tục (ví dụ: live log file). Trong trường hợp đó, inline content hoặc RAG với chunking và re-embedding theo schedule vẫn phù hợp hơn. Files API tỏa sáng với static hoặc semi-static documents — contract, report, policy, manual.
Để biết cách tích hợp Files API vào pipeline CI/CD và automation, xem thêm [INTERNAL-LINK: Claude trong CI/CD pipeline → Tích hợp Claude vào CI/CD pipeline tự động hóa].
FAQ — Câu Hỏi Thường Gặp
Files API có free không, hay tính tiền theo dung lượng file?
File management operations (upload, list, delete, get metadata) hoàn toàn miễn phí không có giới hạn. Bạn chỉ bị tính tiền khi content của file được xử lý trong Messages API — tính theo token input như thông thường (Anthropic Docs, 2025). Giới hạn 500MB/file và 500GB/workspace là hard limit hiện tại của beta.
File lưu trên Files API có hết hạn không?
Không có thời gian hết hạn tự động. File tồn tại vĩnh viễn cho đến khi bạn gọi DELETE /v1/files/{file_id} để xóa thủ công (Anthropic Docs, 2025). Đây vừa tiện lợi vừa đòi hỏi bạn cần có chiến lược lifecycle management rõ ràng để tránh tích lũy file không dùng.
Files API có available trên AWS Bedrock và Google Vertex AI không?
Không. Files API hiện chỉ có trên Anthropic direct API (platform.claude.com). Nếu bạn dùng Claude qua AWS Bedrock hoặc Google Vertex AI, bạn sẽ phải tiếp tục dùng inline content hoặc tự xây dựng file storage layer riêng (Anthropic Docs, 2025).
Tôi có thể download lại file đã upload không?
Chỉ với file do code execution tool tạo ra (field downloadable: true). File do bạn tự upload (downloadable: false) không download được — đây là giới hạn bảo mật có chủ ý. Bạn nên giữ bản gốc ở phía mình, không xem Files API như storage backup.
Làm thế nào để tích hợp Files API với Prompt Caching để tiết kiệm tối đa?
Thêm "cache_control": {"type": "ephemeral"} vào source block của document khi gọi Messages API. Từ lần thứ 2 trở đi, cache hit chỉ tốn 10% giá input token — tương đương giảm 90% chi phí xử lý file (Anthropic Pricing, 2025). Kết hợp với Batch API để giảm thêm 50% nữa cho các task không cần real-time.
Kết Luận
Claude Files API thay đổi cách tiếp cận document processing trên AI pipeline — từ "gửi lại mỗi lần" sang "upload một lần, dùng mãi mãi". Với giới hạn 500MB/file, miễn phí hoàn toàn cho file operations, và khả năng kết hợp với Prompt Caching để tiết kiệm 90% chi phí token, đây là feature bắt buộc phải nắm nếu bạn đang build ứng dụng AI xử lý tài liệu ở quy mô lớn.
Ba bước để bắt đầu ngay:
1. Thêm beta header anthropic-beta: files-api-2025-04-14 vào mọi request
2. Upload file một lần với POST /v1/files, lưu lại file_id
3. Kết hợp với cache_control: ephemeral để tối ưu chi phí
Bước tiếp theo: Khám phá cách so sánh các model Claude để chọn đúng model cho từng loại task document processing: [INTERNAL-LINK: so sánh Haiku Sonnet Opus → Claude Haiku vs Sonnet vs Opus — Model nào phù hợp với bạn?].
Nguồn tham khảo: Claude Files API Official Docs · Anthropic Pricing · Precedence Research IDP Market · SenseTask Document Processing Statistics 2025 · Anthropic Economic Index Sept 2025