Publish local files or public URLs through the API, MCP, the CLI, or the website.
Choose a method based on where the file is and its size. You can set sharing options now or change them later.
For a file under 4 MB, use POST /files/upload or beecargo_upload_file. Hosted MCP uses base64 because it cannot read local files.
Endpoint
https://api.beecargo.net/files/uploadAuthentication
With an API key: send Authorization: Bearer YOUR_API_KEY.
Without a key: 1 GB per file; expires after 3 days.
Request examples
# For files < 4MB - Use Bearer token format (OAuth 2.0 standard)
curl -L -X POST https://api.beecargo.net/files/upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@/path/to/document.pdf"
# For files >= 4MB, use the client library examples below
# (multipart upload requires multiple API calls)
Anonymous Upload (NOT saved to account):
# File will NOT appear in your dashboard and expires in 3 days
curl -L -X POST https://api.beecargo.net/files/upload \
-F "file=@/path/to/document.pdf"Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
file | File | Yes | The file to upload |
folderId | String | No | Optional folder id |
visibility | unlisted | public | No | Public requires a claimed username |
direct | Boolean | No | Premium: start download when the share opens |
retention | ttl | forever | No | Public Premium shares may use forever |
expiresAt | String (ISO) | No | Explicit expiration for TTL retention |
protect | Boolean | No | Create a one-time unlock code and private delivery link |
handoffMessage | String | No | Optional delivery-link note, maximum 480 characters |
Usage notes
https://beecargo.net/d/{shortId}.isAnonymous to true and expire after about 3 days.Tool
beecargo_upload_fileAuthentication
API key optional. Anonymous uploads use free limits and return claimToken and deletionToken.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
fileName | String | Yes | Original file name |
contentBase64 | String | Yes | File contents as base64 |
contentType | String | No | MIME type (default application/octet-stream) |
folderId | String | No | Optional folder UUID (signed-in users only) |
Usage notes
beecargo_remote_upload or API multipart upload.beecargo_upload_path (stdio, auto multipart + progress), beecargo_remote_upload, or API multipart.beecargo_upload_path, multipart, and asynchronous remote-import tools.fileId, claimToken, and deletionToken. Anonymous max file size is 1GB.Use multipart upload through the API for local files over 4MB. A stdio MCP client can use beecargo_upload_path, which chooses multipart automatically and reports progress.
Endpoint
/files/multipart/init → PUT parts → POST /files/multipart/completeUsage notes
ThreadPoolExecutor in Python, Promise.all in JavaScript).Tool
beecargo_upload_pathParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
path | String | Yes | Absolute or relative local filesystem path |
contentType | String | No | MIME type; defaults to application/octet-stream |
folderId | String | No | Destination folder for an authenticated identity |
Usage notes
Tool
beecargo_multipart_initParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
fileName | String | Yes | Original filename |
fileSize | Integer | Yes | Total bytes |
fileType | String | No | MIME type |
folderId | String | No | Destination folder |
Usage notes
key, uploadId, chunkSize, and totalParts.Tool
beecargo_multipart_batch_urlsParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
key | String | Yes | Object key from multipart init |
uploadId | String | Yes | Upload id from multipart init |
totalParts | Integer | Yes | Part count from multipart init |
uploadSessionToken | String | No | Session secret when returned by init |
Usage notes
Tool
beecargo_multipart_completeParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
key / uploadId | String | Yes | Multipart session identifiers |
parts | Array | Yes | [{ partNumber, etag }] for every uploaded part |
fileName / fileSize | String / Integer | Yes | Original file metadata |
contentType / folderId | String | No | MIME type and destination folder |
Usage notes
fileId, shortId, and share URL.Tool
beecargo_multipart_abortParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
key | String | Yes | Object key from multipart init |
uploadId | String | Yes | Upload id from multipart init |
Usage notes
If the file already has a public HTTPS URL, use remote upload. Start an asynchronous job when you need progress for a long import.
Endpoint
https://api.beecargo.net/files/remote-uploadAuthentication
With an API key: send Authorization: Bearer YOUR_API_KEY.
Without a key: 1 GB per file; expires after 3 days; about 10 requests per hour per IP.
Request examples
# Upload from remote URL
curl -X POST https://api.beecargo.net/files/remote-upload \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/video.mp4",
"folderId": null
}'
Anonymous Upload (NOT saved to account):
# File will NOT appear in your dashboard and expires in 7 days
curl -X POST https://api.beecargo.net/files/remote-upload \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/document.pdf"
}'Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
url | String | Yes | Public URL of the file to import |
folderId | String | No | Optional folder id (signed-in users only) |
visibility | unlisted | public | No | Public requires a claimed username |
direct | Boolean | No | Premium: start download when the share opens |
retention | ttl | forever | No | Public Premium shares may use forever |
expiresAt | String (ISO) | No | Explicit expiration for TTL retention |
protect | Boolean | No | Create a one-time unlock code and private delivery link |
handoffMessage | String | No | Optional delivery-link note, maximum 480 characters |
Usage notes
POST /files/remote-multipart/init, then poll GET /files/remote-multipart/{jobId} or stream GET /files/remote-multipart/{jobId}/events (SSE). Status includes bytesDone, bytesTotal, and percent while importing. When status is completed, the response includes sharePath.https://beecargo.net/d/{shortId}.isAnonymous to true, expire after about 3 days, and include a deletionToken.Tool
beecargo_remote_uploadAuthentication
API key optional. Best path for agent uploads with no human in the loop.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
url | String | Yes | Public HTTPS URL to fetch |
folderId | String | No | Optional folder UUID (signed-in users only) |
visibility | unlisted | public | No | Public needs a username; Free public TTL is 7 days |
direct | Boolean | No | Premium: auto-download on the /d link |
retention | ttl | forever | No | Public + Premium for forever |
expiresAt | String (ISO) | No | Expiry when retention is ttl |
Usage notes
deletionToken and claimToken from anonymous responses.https://beecargo.net/d/{shortId}.Tool
beecargo_remote_multipart_initParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
url | String (URL) | Yes | Public source URL |
folderId | String | No | Destination folder |
Usage notes
jobId and jobSecret from the response.Tool
beecargo_remote_multipart_statusParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
jobId | UUID | Yes | Job id from remote multipart init |
jobSecret | String | No | Secret returned for new jobs |
waitSeconds | Integer | No | Poll for up to 600 seconds |
Usage notes
fileId, shortId, and sharePath.Direct and remote API uploads accept visibility, direct, retention, expiresAt, protect, and handoffMessage. Authenticated owners can change the same settings after upload.