# request_file_upload_url

Request a signed URL to upload a file directly to storage.

Returns a signed upload URL and file\_id. After receiving the URL, perform  
the upload using this two-step resumable upload flow:

Step 1 — Initiate the resumable upload:  
 POST {upload\_url}  
 Headers:  
 Content-Type: {content\_type}  
 x-goog-resumable: start  
 Body: (empty)  
 Response: 201 with Location header containing the session URI.

Step 2 — Upload file content:  
 PUT {session\_uri\_from\_Location\_header}  
 Headers:  
 Content-Type: {content\_type}  
 Body: raw file bytes  
 Response: 200 on success.

After upload completes, use the returned file\_id as input to generation tools.  
The upload URL expires in 15 minutes. Maximum file size: 64 MB.

IMPORTANT: Call tool \`get\_instructions\` first for general platform guidance.

Note

Available in Claude Code CLI and similar clients. It does not work in Claude.ai or Claude Desktop due to URL allowlisting restrictions.

## Parameters

| Parameter                 | Type          | Default | Description                                                                                          |
| ------------------------- | ------------- | ------- | ---------------------------------------------------------------------------------------------------- |
| workspace\_idrequired     | string (uuid) | —       | The user's workspace id.                                                                             |
| content\_typerequired     | string        | —       | MIME type of the file. Allowed: image/png, image/jpeg, image/webp, video/mp4, audio/wav, audio/mpeg. |
| file\_size\_bytesrequired | integer\>0    | —       | Expected file size in bytes. Maximum 64 MB.                                                          |
| file\_name                | string        | —       | Optional file name. Auto-generated from content\_type if omitted.                                    |
