<!-- BusyBot node reference — https://busybot.net/tools/claude-file-upload/ -->

> Node: Claude File Upload (`claude_file_upload`) · Action (binary) · v1
> Category: AI · Credentials: Anthropic (`anthropic`)
> Updated: 2026-08-16

# Claude File Upload

> Upload files to Anthropic for use with Claude.

## Overview

Claude File Upload uses the Anthropic Files API (POST /v1/files) to upload files for use with Claude models. It takes a file from binary data on the incoming item and uploads it as multipart/form-data. The upload response is returned with the file's id, filename, mime type, size and creation time. That file ID can then be used by the other Claude nodes — Chat, Thinking, Structured Output, Vision and Citations all accept an Anthropic file ID — so a file is uploaded once and referenced many times.

**Category:** AI  
**Tool Name:** `claude_file_upload`  
**Version:** 1

**Appearance:** Icon: `anthropic` | Color: `#d4a574`

## Node Type

**Action (Binary)** — handles file/binary data operations

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Anthropic** credentials.
See the [Credentials Guide](https://busybot.net/credentials/anthropic/) for setup instructions.

### Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Binary Property Name | `string` | No | `data` | The name of the binary property containing the file to upload. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. Supports expressions. |
| Purpose | `options` | No | `assistants` | Legacy label for the uploaded file. NOT sent to Anthropic — their Files API takes no purpose field; a file's role is set at use time by the content block that references it. Kept for backward compatibility only. |
| | | | | Options: `assistants` (a file for use with Claude assistants and conversations), `vision` (an image file for Claude vision analysis) |
| Options | `collection` | No | `{}` | Output settings. |
| — Response Field Name | `string` | No | `file` | The output field name where the file upload response will be stored. |
| Include Input | `boolean` | No | `false` | Whether to include the original input item fields in the output alongside the upload response. |
| Max Concurrency | `number` | No | `5` | Maximum number of items to process concurrently. |

## Output Data

One upload per input item, and one output item per input item. The full upload response lands on the field named by Response Field Name (`file` by default), and the file ID is also lifted onto `fileId` for convenience. Binary data on the input item is forwarded unchanged, so the original bytes stay available downstream. With Include Input on, the original item fields are merged in alongside the result.

```json
{
  "file": {
    "id": "file_011...",
    "filename": "contract.pdf",
    "mime_type": "application/pdf",
    "size_bytes": 184320,
    "created_at": "2026-01-01T00:00:00Z"
  },
  "fileId": "file_011..."
}
```

- `file` is the upload response exactly as Anthropic returned it.
- `fileId` is the same value as `file.id`, promoted to the top level because that is what the downstream Claude nodes ask for. Every node that accepts an Anthropic file ID also falls back to reading `fileId` from the item, so a File Upload node wired straight into a Claude Chat, Thinking, Structured Output, Vision or Citations node needs no expression at all.
- How Claude treats the file is decided where it is used, not here: set Attachment Type on the consuming node (or pick the matching Image Source / Document Source mode) to say whether it should be read as a document or as an image.

Reference the result downstream by expression, e.g. `{{ $json.fileId }}`.

## Usage Examples

- Upload an image for Claude vision analysis
- Upload a document for use with Claude assistants
- Upload a PDF for Claude to analyze
- Upload a code file for Claude to review
- Upload files in bulk for batch conversation processing

## Example Configuration

Minimal — upload the file on the standard `data` property:

```json
{
  "type": "claude_file_upload",
  "parameters": {
    "binaryPropertyName": "data",
    "purpose": "assistants"
  }
}
```

Upload an image from a custom binary property:

```json
{
  "type": "claude_file_upload",
  "parameters": {
    "binaryPropertyName": "screenshot",
    "purpose": "vision"
  }
}
```

Keep the original item fields and name the output field:

```json
{
  "type": "claude_file_upload",
  "parameters": {
    "binaryPropertyName": "contractPdf",
    "purpose": "assistants",
    "includeInput": true,
    "maxConcurrency": 3,
    "options": {
      "responseFieldName": "uploadedContract"
    }
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Claude File Upload sends binary files to the Anthropic Files API via multipart/form-data, registering them for use with Claude models. The node's Purpose parameter is a backward-compatibility relic and is not transmitted — Anthropic infers a file's role from the content block that references it later. Use this tool when a workflow requires attaching images, documents, or other files to Claude API calls before initiating a file-based conversation. It outputs the Anthropic file object (id, filename, mime_type, size_bytes, created_at) plus a top-level fileId, which downstream Claude nodes consume via {{ $json.fileId }}.