Beecargo

Get set up

  • ○Sign in
  • ○Connect your agent
  • ○Share a file

INTRODUCTION

WelcomeSecurity

Guides

Overview
Upload & import
Own & organize
Share & protect
Download & unlock
Agents

SUPPORT

Contact

LEGAL

PrivacyTermsAcceptable useCookiesRefundsDMCA

PreviousOverviewNextOwn & organize
BlogPricingDashboardPrivacyTerms

Upload and import

Publish local files or public URLs through the API, MCP, the CLI, or the website.


On the website, the upload session auto-publishes one share link when the first file passes the safety check (one or more files, up to your tier's maximum). REST, MCP, and CLI upload calls each create a one-file share link. You can change sharing options after the link exists.

Website upload sessions

Add one or more files up to your tier's limit. When the first file passes the safety check, the session auto-publishes one canonical share link on the upload screen — you can keep editing settings or adding files afterward. Recipients can download files individually or together as a ZIP.

Small local files

For a file under 4 MB, use POST /files/upload, beecargo_upload with contentBase64, or npx --yes github:Beecargo/cli upload ./file --json. Hosted MCP uses base64 because it cannot read local files.

APIUpload a fileSend a file to Beecargo with the HTTP API.+

Endpoint

POSThttps://api.beecargo.net/files/upload

Authentication

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

ParameterTypeRequiredDescription
fileFileYesThe file to upload
folderIdStringNoOptional folder id
visibilityunlisted | publicNoPublic requires a claimed username
directBooleanNoPro: start download when the share opens
retentionttl | foreverNoPublic Pro shares may use forever
expiresAtString (ISO)NoExplicit expiration for TTL retention
ttlStringNoKeep-time preset from now, such as 1h, 24h, or 7d
onceBooleanNoWhen true, the share can be downloaded only once
maxDownloadsNumberNoMax downloads allowed (ignored when once is true)
protectBooleanNoCreate a one-time unlock code and private delivery link
handoffMessageStringNoOptional delivery-link note, maximum 480 characters
runIdStringNoOptional pipeline id to group files; list them later with GET /files/list?runId=
openShareBooleanNoAuthenticated: open a growable multi-file Shipment (response shortId is the share). Later uploads pass shareShortId.
shareShortIdStringNoAuthenticated: attach this file to an existing growable Shipment from a prior openShare upload

Usage notes

  • Use this for files under 4MB. The samples below also show how larger files use multipart upload.
  • The response includes a temporary signed URL (about 24 hours). For a lasting share link, use https://beecargo.net/d/{shortId}. Machine downloads still wait for the safety check.
  • Anonymous uploads set isAnonymous to true and expire after about 3 days. For safe retries on write requests, send an Idempotency-Key header.
Open: Upload a file
MCPUpload a fileUpload via public URL, small base64 payload, or local path (stdio MCP). Same tier limits as the web app and REST API.+

Tool

beecargo_upload

Authentication

API key optional. Anonymous uploads use anonymous limits and return claimToken and deletionToken.

Parameters

ParameterTypeRequiredDescription
urlStringOne of url | contentBase64 | pathPublic HTTPS URL Beecargo fetches server-side
contentBase64StringOne of url | contentBase64 | pathSmall file as base64 (hosted MCP body limit applies)
pathStringstdio onlyLocal file path (stdio MCP; not available on hosted HTTP)
fileNameStringWith contentBase64Original file name
backgroundBooleanNoAsync remote job; poll with beecargo_upload_status
waitSecondsNumberNoWhen background is true, wait up to N seconds for completion
folderIdStringNoOptional folder UUID (signed-in users only)
visibilityunlisted | publicNoPublic needs a claimed username on the account
directBooleanNoPro: start download when the /d share opens
retentionttl | foreverNoPublic Pro shares may use forever
expiresAtString (ISO)NoExact expiry when retention is ttl
ttlStringNoKeep-time preset from now, such as 1h, 24h, or 7d
onceBooleanNoWhen true, the share can be downloaded only once
maxDownloadsNumberNoMax downloads allowed (ignored when once is true)
protectBooleanNoCreate an unlock code and private delivery link (returned once)
handoffMessageStringNoOptional note on the delivery link, max 480 characters
runIdStringNoOptional pipeline id so you can list related files later with beecargo_list_files (runId)
openShareBooleanNoOpen a growable multi-file Shipment for this upload (returns shareShortId). Use shareShortId on later uploads to add files to the same link.
shareShortIdStringNoAttach this upload to an existing growable Shipment from a prior openShare upload (same /d/{shortId})
idempotencyKeyStringNoSafe retries: same key + same body returns the first result

Usage notes

  • Provide exactly one source: url (public HTTPS), contentBase64 (under 4MB on hosted MCP), or path (stdio only; auto multipart up to your tier max). Use background: true for large/slow URLs, then beecargo_upload_status.
  • Anonymous: 1GB/file. Free signed-in: 5GB/file, 10GB concurrent storage. Pro: 35GB/file, 100GB included concurrent storage.
  • Hosted HTTP cannot read your disk; use url or small contentBase64, or stdio/CLI for local files.
  • Publish options (ttl, once, protect, runId, openShare, …) can be set on upload; you can also change many of them later with share settings.
  • For several outputs from one agent run, reuse the same runId, then list them at /docs/mcp/run-artifacts. For one human share link with many files, use openShare then shareShortId.
  • For safe retries on write tools, pass optional idempotencyKey (same as the HTTP Idempotency-Key header).
  • REST API still exposes /files/multipart/* and /files/remote-upload for advanced integrators.
Open: Upload a file
CLICLI uploadPublish a local file and get a share link.+

Command

npx --yes github:Beecargo/cli upload ./artifact.zip --json

Authentication

Optional --key or BEECARGO_API_KEY. Anonymous uploads work without a key; save deletionToken and claimToken.

Usage notes

  • Files over 4 MB use multipart automatically.
  • Pass --json for a machine-readable share receipt.

Large local files

Use multipart upload through the API for local files over 4MB. A stdio MCP client can call beecargo_upload with path, which chooses multipart automatically and reports progress. The CLI upload command chooses multipart the same way.

API3–6× faster uploadsFiles under 4MB use `POST /files/upload`. Files 4MB and larger use multipart (`init` → `batch-urls` with per-part SHA-256 digests → part PUTs → `complete`). The parallel sample below calls `uploadFile()` and picks the path for you.+

Endpoint

POST/files/multipart/init → PUT parts → POST /files/multipart/complete

Usage notes

  • You can upload parts one after another for reliability on proxies, VPNs, and flaky networks. For speed, upload several parts at once (about 3–6), as the Beecargo website, CLI, and stdio MCP local path do.
  • Sequential part PUTs finish one chunk at a time. Parallel clients (website, CLI, stdio MCP, and the sample below) upload several chunks at once for large files.
  • Several chunks upload at the same time (ThreadPoolExecutor in Python).
  • Worker count scales with file size (about 3–6).
  • Each part’s SHA-256 digest is sent in batch-urls before PUTs.
  • Presigned URLs are fetched up front so chunks do not wait on each other.
  • Each chunk can retry on its own.
  • Progress counts finished chunks across all workers.
Open: 3–6× faster uploads
MCPbeecargo_uploadStdio: local `path` with auto multipart. Any transport: public `url` (sync or `background: true`).+

Tool

beecargo_upload

Parameters

ParameterTypeRequiredDescription
pathStringstdio onlyLocal filesystem path (not on hosted HTTP)
urlString (URL)hosted / remotePublic HTTPS source URL
backgroundBooleanNoStart async remote job for large/slow URLs
waitSecondsNumberNoWhen background is true, wait up to N seconds

Usage notes

  • Tier limits match the web app and REST API (anonymous / free / Pro).
  • Hosted HTTP cannot use path; use url or small contentBase64 on the main upload page.
Open: beecargo_upload
MCPbeecargo_upload_statusPoll or wait for a background URL upload started with `background: true`.+

Tool

beecargo_upload_status

Parameters

ParameterTypeRequiredDescription
jobIdUUIDYesJob id from beecargo_upload
jobSecretStringYes for new jobsSecret returned with the job
waitSecondsNumberNoPoll up to N seconds (max 600)

Usage notes

  • Completed jobs include fileId, shortId, and sharePath.
Open: beecargo_upload_status
CLICLI uploadPublish a local file and get a share link.+

Command

npx --yes github:Beecargo/cli upload ./artifact.zip --json

Authentication

Optional --key or BEECARGO_API_KEY. Anonymous uploads work without a key; save deletionToken and claimToken.

Usage notes

  • Files over 4 MB use multipart automatically.
  • Pass --json for a machine-readable share receipt.

Files already on the web

If the file already has a public HTTPS URL, use remote upload or npx --yes github:Beecargo/cli remote <url> --json. Start an asynchronous job when you need progress for a long import.

APIRemote uploadPull a file into Beecargo from a public URL.+

Endpoint

POSThttps://api.beecargo.net/files/remote-upload

Authentication

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

ParameterTypeRequiredDescription
urlStringYesPublic URL of the file to import
folderIdStringNoOptional folder id (signed-in users only)
visibilityunlisted | publicNoPublic requires a claimed username
directBooleanNoPro: start download when the share opens
retentionttl | foreverNoPublic Pro shares may use forever
expiresAtString (ISO)NoExplicit expiration for TTL retention
ttlStringNoKeep-time preset from now, such as 1h, 24h, or 7d
onceBooleanNoWhen true, the share can be downloaded only once
maxDownloadsNumberNoMax downloads allowed (ignored when once is true)
protectBooleanNoCreate a one-time unlock code and private delivery link
handoffMessageStringNoOptional delivery-link note, maximum 480 characters
runIdStringNoOptional pipeline id to group files; list them later with GET /files/list?runId=
openShareBooleanNoAuthenticated: open a growable multi-file Shipment (response shortId is the share). Later uploads pass shareShortId.
shareShortIdStringNoAuthenticated: attach this file to an existing growable Shipment from a prior openShare upload

Usage notes

  • Beecargo fetches the URL and stores the file. For very large imports you can start an async job and poll until it finishes.
  • For long-running imports, use 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.
  • You get a temporary signed URL (about 24 hours). Share the lasting link: https://beecargo.net/d/{shortId}. Machine downloads still wait for the safety check.
  • Anonymous imports set isAnonymous to true, expire after about 3 days, and include a deletionToken. For safe retries, send an Idempotency-Key header.
Open: Remote upload
MCPRemote uploadImport a file from a public HTTPS URL via MCP.+

Tool

beecargo_upload

Authentication

API key optional. Best path for agent uploads with no human in the loop.

Parameters

ParameterTypeRequiredDescription
urlStringYesPublic HTTPS URL to fetch
backgroundBooleanNoAsync job with progress; use beecargo_upload_status
folderIdStringNoOptional folder UUID (signed-in users only)
visibilityunlisted | publicNoPublic needs a username; Free public TTL is 7 days
directBooleanNoPro: auto-download on the /d link
retentionttl | foreverNoPublic + Pro for forever
expiresAtString (ISO)NoExpiry when retention is ttl
ttlStringNoKeep-time preset from now, such as 1h, 24h, or 7d
onceBooleanNoWhen true, the share can be downloaded only once
maxDownloadsNumberNoMax downloads allowed (ignored when once is true)
protectBooleanNoCreate an unlock code and private delivery link (returned once)
handoffMessageStringNoOptional note on the delivery link
runIdStringNoOptional pipeline id; list related files later with beecargo_list_files

Usage notes

  • Pass url to beecargo_upload. Beecargo fetches the URL and stores the file. For large or slow sources, set background: true and poll with beecargo_upload_status.
  • Save deletionToken and claimToken from anonymous responses.
  • Share links look like https://beecargo.net/d/{shortId}.
  • Publish options match [Upload a file](/docs/mcp/upload), including protect, ttl, once, and runId.
  • See also [Upload a file](/docs/mcp/upload) for contentBase64 and stdio path.
Open: Remote upload
CLICLI remote importImport a public HTTPS URL from your terminal.+

Command

npx --yes github:Beecargo/cli remote https://example.com/file.bin --json

Authentication

Optional --key or BEECARGO_API_KEY.

Usage notes

  • Add --async for a background job with progress on long imports.
  • Pass --json for a machine-readable share receipt.

Share options during upload

Direct and remote API uploads accept visibility, direct, retention, expiresAt, protect, and handoffMessage. Authenticated owners can change the same settings after upload.

APIShare settingsMake a file public, change retention, enable direct download, or require an unlock secret.+

Endpoint

PATCHhttps://api.beecargo.net/files/share-settings

Authentication

API key required for PATCH /files/share-settings. The key must own the claimed file.

Request examples

curl -X PATCH https://api.beecargo.net/files/share-settings \
  -H "Authorization: Bearer YOUR_BC_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fileId":"abc12xyz","visibility":"public","retention":"ttl","protect":true,"handoffMessage":"Private files for review"}'

Parameters

ParameterTypeRequiredDescription
fileIdStringYesFile id from the upload response
visibilityunlisted | publicNoPublic visibility requires a claimed username
priceCentsInteger | nullNoOne-time USD price in cents (minimum 100). Pass 0 or null to clear. Positive prices require seller Connect ready to sell.
directBooleanNoPro: start download when the /d share opens
retentionttl | foreverNoPublic Pro shares may use forever
expiresAtString (ISO)NoFuture expiration when retention is ttl; maximum 90 days from now
extendTtlStringNoAdd more keep time from now (for example 7d). Useful after an upgrade when you want a longer Free or Pro TTL without picking an exact date.
protectBooleanNoTrue creates new unlock credentials; false clears existing protection
handoffMessageString | nullNoOptional delivery-link note, maximum 480 characters
immutableBooleanNoWhen true, the file cannot be casually changed or deleted. Use for outputs that other files depend on.
upstreamFileIdsString[]NoParent file ids this share came from. Helps keep a simple lineage for pipeline outputs.

Usage notes

  • Use this endpoint after upload. The same options can also be sent during direct or remote upload.
  • shortId is the public share code. It locates /d/{shortId} and is not the unlock secret.
  • Send the public share address and unlockCode through separate channels, or send the private handoffUrl.
  • A positive priceCents requires connected seller payouts (POST /connect with action=onboard). Buyers pay on /d/{shortId} before download unlocks.
  • Free public shares last 7 days. Pro defaults to forever while subscribed and can choose any expiry date within 90 days.
  • CLI beecargo share updates the same fields (--visibility, --price-cents, --protect, …). beecargo extend FILE_ID 7d is a shortcut for --extend-ttl.
  • Setting protect: true again rotates the unlock credentials.
Open: Share settings
MCPUpdate share settingsChange visibility, one-time price, direct download, public retention, and optional unlock protection on a file or growable Shipment you own.+

Tool

beecargo_update_share_settings

Authentication

API key required. The file or Shipment must be owned and claimed (not anonymous).

Parameters

ParameterTypeRequiredDescription
fileIdStringNoFile id from the upload response (required if shortId is omitted)
shortIdStringNoShare shortId — one-file share or growable Shipment from openShare (required if fileId is omitted)
visibilityunlisted | publicNoPublic needs a claimed username on the account
priceCentsInteger | nullNoOne-time price in the smallest currency unit (minimum 100). Pass 0 or null to clear. Positive prices require seller Connect readyToSell. Pair with currency (default usd).
currencyusd | eur | aed | brl | jpy | krw | cny | rubNoCharge currency for priceCents. Defaults to usd. JPY and KRW use whole units (no cents).
directBooleanNoPro only: auto-start download when the /d link opens
retentionttl | foreverNoPublic + Pro only for forever
expiresAtString (ISO)NoExpiry when retention is ttl
extendTtlStringNoAdd more keep time from now (for example 7d) without picking an exact expiry date
protectBooleanNoWhen true, create a download unlock code and delivery link (returned once). When false, clear protection.
handoffMessageStringNoOptional note (max 480 chars) shown on the delivery link /h/{token}
immutableBooleanNoWhen true, the file cannot be casually changed or deleted
upstreamFileIdsString[]NoOptional parent file ids for pipeline lineage

Usage notes

  • Use after upload, or when someone upgrades to Pro and wants forever retention or a new TTL. Set priceCents for a paid share (seller Connect must be ready). Set protect to create unlock credentials. For growable Shipments from openShare, pass shortId (or the member fileId). Maps to PATCH /files/share-settings.
  • Pass at least one of fileId or shortId.
  • Before a positive priceCents, call beecargo_connect with action=onboard / action=status until readyToSell.
  • Buyers pay on the human share page /d/{shortId} — not through this tool.
  • Free public shares last 7 days; forever and direct need Pro.
  • While Pro is active, recipients get sponsored ad-free, wait-free downloads on your links without signing in.
  • Upgrading to Pro does not rewrite existing Free public TTLs. Call this tool with extendTtl or set forever.
  • CLI beecargo share covers the same fields (--price-cents, --protect, …). beecargo extend is the same idea as extendTtl here.
  • When protect is on, the response includes unlockCode and handoffUrl once. Share both on a private channel. The /d link alone is not enough to download.
  • Recipients can open handoffUrl (message + unlock) or type unlockCode on /d/{shortId}.
  • For a growable multi-file Shipment, protect on shortId unlocks the whole set — not each member file separately.
Open: Update share settings
CLICLI shareUpdate share settings on an owned file or Shipment.+

Command

npx --yes github:Beecargo/cli share FILE_ID --visibility public --key YOUR_BC_KEY

Authentication

Requires --key or BEECARGO_API_KEY.

Usage notes

  • Pass fileId and/or --short-id. Use --price-cents (min 100) after Connect is ready to sell; 0 clears the price.
  • extend FILE_ID 7d is a shortcut for share --extend-ttl.
  • Share and protect