Files
api/files
Nearest release: v2.1.238, published under an hour after this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
api/files New page · 380 lines, new page
# Files ## Upload File ### Returns ### Example #### Response ## List Files ### Query Parameters ### Returns ### Example #### Response ## Download File ### Path Parameters ### Example ## Get File Metadata ### Path Parameters ### Returns ### Example #### Response ## Delete File ### Path Parameters ### Returns ### Example #### Response ## Domain Types ### Deleted File ### File Metadata
A whole new page. There's nothing to diff it against, so here is what it says.
---
title: Files
url: https://platform.claude.com/docs/en/api/files
---
# Files
## Upload File
**post** `/v1/files`
Upload File
### Returns
- `FileMetadata object { id, created_at, filename, 5 more }`
- `id: string`
Unique object identifier.
The format and length of IDs may change over time.
- `created_at: string`
RFC 3339 datetime string representing when the file was created.
- `filename: string`
Original filename of the uploaded file.
- `mime_type: string`
MIME type of the file.
- `size_bytes: number`
Size of the file in bytes.
- `type: "file"`
Object type.
For files, this is always `"file"`.
- `"file"`
- `downloadable: optional boolean`
Whether the file can be downloaded.
- `expires_at: optional string or null`
RFC 3339 datetime string representing when the file will expire and become unavailable for download. Null if the file does not expire. For files uploaded with `expires_in_seconds`, this is the upload time plus that value.
### Example
```http
curl https://api.anthropic.com/v1/files \
-H 'Content-Type: multipart/form-data' \
-H 'anthropic-version: 2023-06-01' \
-H "X-Api-Key: $ANTHROPIC_API_KEY" \
-F 'file=@/path/to/file'
```
#### Response
```json
{
"id": "file_011CNha8iCJcU1wXNR6q4V8w",
"created_at": "2025-04-15T18:37:24.100435Z",
"filename": "document.pdf",
"mime_type": "application/pdf",
"size_bytes": 102400,
"type": "file",
"downloadable": false,
"expires_at": "2025-05-15T18:37:24.100435Z"
}
```
## List Files
**get** `/v1/files`
List Files
### Query Parameters
- `ids: optional array of string`
Restrict the result set to Files whose `id` is in this list. At most 100 entries (after de-duplication). Mutually exclusive with `page` and `limit`. When supplied, the response is always a single page (`next_page` is null). IDs that do not resolve to a visible File — including deleted Files — are silently omitted.
- `limit: optional number`
Number of items to return per page.
Defaults to `20`. Ranges from `1` to `1000`.
- `page: optional string`
Opaque page cursor returned in a prior list response's `next_page`. Prefixed `page_`.
### Returns
- `data: array of FileMetadata`
List of file metadata objects.
- `id: string`
Unique object identifier.
The format and length of IDs may change over time.
- `created_at: string`
RFC 3339 datetime string representing when the file was created.
- `filename: string`
Original filename of the uploaded file.
- `mime_type: string`
MIME type of the file.
- `size_bytes: number`
Size of the file in bytes.
- `type: "file"`
Object type.
For files, this is always `"file"`.
- `"file"`
- `downloadable: optional boolean`
Whether the file can be downloaded.
- `expires_at: optional string or null`
RFC 3339 datetime string representing when the file will expire and become unavailable for download. Null if the file does not expire. For files uploaded with `expires_in_seconds`, this is the upload time plus that value.
- `next_page: optional string or null`
Opaque cursor for the next page. Supply as `?page=` to fetch the next page; null when there are no more results.
### Example
```http
curl https://api.anthropic.com/v1/files \
-H 'anthropic-version: 2023-06-01' \
-H "X-Api-Key: $ANTHROPIC_API_KEY"
```
#### Response
```json
{
"data": [
{
"id": "file_011CNha8iCJcU1wXNR6q4V8w",
"created_at": "2025-04-15T18:37:24.100435Z",
"filename": "document.pdf",
"mime_type": "application/pdf",
"size_bytes": 102400,
"type": "file",
"downloadable": false,
"expires_at": "2025-05-15T18:37:24.100435Z"
}
],
"next_page": "next_page"
}
```
## Download File
**get** `/v1/files/{file_id}/content`
Download File
### Path Parameters
- `file_id: string`
ID of the File.
### Example
```http
curl https://api.anthropic.com/v1/files/$FILE_ID/content \
-H 'anthropic-version: 2023-06-01' \
-H "X-Api-Key: $ANTHROPIC_API_KEY"
```
## Get File Metadata
**get** `/v1/files/{file_id}`
Get File Metadata
### Path Parameters
- `file_id: string`
ID of the File.
### Returns
- `FileMetadata object { id, created_at, filename, 5 more }`
- `id: string`
Unique object identifier.
The format and length of IDs may change over time.
- `created_at: string`
RFC 3339 datetime string representing when the file was created.
- `filename: string`
Original filename of the uploaded file.
- `mime_type: string`
MIME type of the file.
- `size_bytes: number`
Size of the file in bytes.
- `type: "file"`
Object type.
For files, this is always `"file"`.
- `"file"`
- `downloadable: optional boolean`
Whether the file can be downloaded.
- `expires_at: optional string or null`
RFC 3339 datetime string representing when the file will expire and become unavailable for download. Null if the file does not expire. For files uploaded with `expires_in_seconds`, this is the upload time plus that value.
### Example
```http
curl https://api.anthropic.com/v1/files/$FILE_ID \
-H 'anthropic-version: 2023-06-01' \
-H "X-Api-Key: $ANTHROPIC_API_KEY"
```
#### Response
```json
{
"id": "file_011CNha8iCJcU1wXNR6q4V8w",
"created_at": "2025-04-15T18:37:24.100435Z",
"filename": "document.pdf",
"mime_type": "application/pdf",
"size_bytes": 102400,
"type": "file",
"downloadable": false,
"expires_at": "2025-05-15T18:37:24.100435Z"
}
```
## Delete File
**delete** `/v1/files/{file_id}`
Delete File
### Path Parameters
- `file_id: string`
ID of the File.
### Returns
- `DeletedFile object { id, type }`
- `id: string`
ID of the deleted file.
- `type: optional "file_deleted"`
Deleted object type.
For file deletion, this is always `"file_deleted"`.
Cut at 300 lines. The page has the rest.