Claude Platform Docs

Upload File

files.upload(**kwargs) -> FileMetadata
POST/v1/files

Upload File

Parameters
file: String

The file to upload

formatbinary
expires_in_seconds: Integer

Seconds from upload until the file expires and its bytes become permanently unavailable. Must be between 3600 (one hour) and 7776000 (ninety days).

minimum3600
maximum7776000
Returns
class FileMetadata { id, created_at, filename, 5 more }
id: String

Unique object identifier.

The format and length of IDs may change over time.

created_at: Time

RFC 3339 datetime string representing when the file was created.

formatdate-time
filename: String

Original filename of the uploaded file.

maxLength500
minLength1
mime_type: String

MIME type of the file.

maxLength255
minLength1
size_bytes: Integer

Size of the file in bytes.

minimum0
type: :file

Object type.

For files, this is always "file".

downloadable: bool

Whether the file can be downloaded.

expires_at: Time

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.

formatdate-time

Upload File

require "anthropic"

anthropic = Anthropic::Client.new(api_key: "my-anthropic-api-key")

file_metadata = anthropic.files.upload(file: StringIO.new("Example data"))

puts(file_metadata)
{
  "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"
}
Returns Examples
{
  "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"
}