The Files API lets you upload a file to Anthropic once and then reference it by its file ID in any number of subsequent requests, instead of re-transmitting the raw bytes each time. For workloads that repeatedly consult the same large inputs — a contract under review, a technical manual, a dataset a team queries all week — this cuts request payloads dramatically and keeps your application code simpler: it passes an ID, not a blob. On Claude Platform on AWS, the Anthropic-operated deployment behind AWS authentication, the Files API is available (in beta, matching its first-party status). That is a genuine differentiator among the AWS routes: the Files API is not available on Amazon Bedrock or Google Vertex AI at all, and is beta on Microsoft Foundry.
The lifecycle: upload, reference, delete
The workflow has three phases. You upload a file and receive a file ID. You reference that ID in message requests — Claude reads the file content server-side as part of the request context, with nothing re-uploaded. Finally you delete the file when it is no longer needed. That last step is not optional housekeeping: files are retained until explicitly deleted. There is no automatic expiry, so a team that uploads freely and never deletes accumulates stored data indefinitely. Build deletion into the same process that decides a document's lifecycle everywhere else in your organization.
Files are scoped to the workspace they were uploaded in — they roll up per workspace alongside usage, quotas, cost, and batches. A file uploaded in your production workspace is not visible from staging, which is exactly the isolation you want between environments and teams. Files uploaded through the platform are also visible on the Claude Console's Files page, which is governed by the same AWS IAM actions as the API.
IAM: four actions, one sharp edge
Files map to four actions in the aws-external-anthropic namespace: CreateFile, GetFile, ListFiles, and DeleteFile. As with batches, GetFile covers both metadata and content download — granting a principal "see what files exist in detail" also grants "read their bytes."
*File matches CreateFile, GetFile, and DeleteFile — but not ListFiles — and it also matches CreateUserProfile, GetUserProfile, and UpdateUserProfile, because "Profile" ends in "file". Enumerate the Files actions explicitly rather than using a wildcard.Also be aware of what the managed policies imply: AnthropicInferenceAccess, the narrowest managed policy that permits inference, includes Get* and List* wildcards that grant read access to all workspace content, file bytes included. If some principals should run inference but never read stored files, write a custom policy.
Data-handling posture
The Files API is one of the features Anthropic classifies as fundamentally stateful: storing a file is retention, so it is not eligible under a zero-data-retention (ZDR) arrangement — using it is a choice to step outside ZDR for that specific data. Claude Platform on AWS follows the same data retention policy as the first-party Claude API, and on this platform Anthropic (not AWS) is the data processor for inference inputs and outputs; uploaded files may not reside in AWS. Organizations that need AWS as sole data processor are directed to Amazon Bedrock instead. Security-sensitive teams sometimes attach a deny on CreateFile (alongside CreateBatchInference) to workspaces handling their most sensitive data — a documented lockdown pattern.
When it pays off
The Files API earns its keep when the ratio of reads to uploads is high: many requests against one document, multi-day analysis sessions, evaluation suites that reuse fixtures. Combine it with prompt caching — available on Claude Platform on AWS with 5-minute, 1-hour, and automatic variants — and repeated large-context work gets cheaper on the token side too. For one-shot documents that will never be referenced again, inline content remains simpler.
Where to go next
See the Files API in depth for request formats, and the Batch API on Claude Platform on AWS for the companion asynchronous workflow. Bedrock users should read Files API workarounds on Bedrock.