-
Notifications
You must be signed in to change notification settings - Fork 23
Description
Problem
After getting past the "Does not match" error when using a file in messages, there is another error when using a file in messages: "Unsupported document file format: application/octet-stream. Only PDF and plaintext documents are supported." That is caused by this gem defaulting to content-type application/octet-stream
when uploading files.
The workaround is to pass an Anthropic::FilePart
object with an accurate content_type
.
Additional details
The Anthropic API docs for uploading a file show a cURL example with no content-type, but that's because cURL automatically sets that header. The other examples (Python and TypeScript) show the content-type being set explicitly. In other words, an accurate content-type must be provided.
Proposal
Require that content_type
is always passed as an argument:
- The
Anthropic::FilePart
should require acontent_type
argument. - Either the
files.upload()
method should require acontent_type
argument as well, or it should only acceptAnthropic::FilePart
objects.
Example request
message = anthropic.messages.create(
max_tokens: 1024,
messages: [
{
role: "user",
content: [
{
type: "text",
text: "Hello Claude"
},
{
type: "document",
source: {
type: "file",
file_id: "file_011CSoYoHF8saWZ6CPh55555"
}
]
}
],
model: :"claude-sonnet-4-20250514"
)
Example response
{
"url": "https://api.anthropic.com/v1/messages",
"status": 400,
"body": {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "messages.0.content.1.source: Unsupported document file format: application/octet-stream. Only PDF and plaintext documents are supported."
}
}
}