Beecargo

Get set up

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

API

OverviewUpload a fileRemote uploadShare settingsClaim a fileAgent APIWebhooksRetrieve a fileGet file infoList files & foldersDelete a file

MCP

OverviewRegister an agentUpload a fileUpload statusRemote uploadLarge uploads & jobsFoldersShare settingsSeller payoutsBuy a priced shareClaim fileSearch toolsCreate checkoutRetrieve a fileGet file infoList filesDelete a fileFiles from a runUpload delegation

PreviousUpload a fileNextShare settings
BlogPricingDashboardPrivacyTerms

Remote upload

Pull a file into Beecargo from a public URL.


Same flow in MCP: beecargo_upload (url)

Endpoint

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

Beecargo fetches the URL and stores the file. For very large imports you can start an async job and poll until it finishes.

Authentication

With an API key: send Authorization: Bearer YOUR_API_KEY.

Authorization: Bearer YOUR_API_KEY

Without a key: 1 GB per file; expires after 3 days; about 10 requests per hour per IP.

Rate limiting

Anonymous: about 10 remote uploads per hour per IP.

Signed-in people: no extra hourly remote cap beyond the global API rate. Agent keys: about 30/hour (bootstrap) or 300/hour (Pro).

Request examples

Pass a public URL. Beecargo downloads it and stores the file for you.

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.

# 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"
  }'

Request body

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

Response

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.

{
  "success": true,
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "video.mp4",
    "size": 52428800,
    "url": "https://signed-url.cloudflare.com/...",
    "mimeType": "video/mp4",
    "createdAt": "2025-12-06T12:00:00.000Z",
    "isAnonymous": false,
    "expiresAt": null,
    "shortId": "abc123"
  }
}

Anonymous imports set isAnonymous to true, expire after about 3 days, and include a deletionToken. For safe retries, send an Idempotency-Key header.

Error responses

Common errors:

// Invalid or missing URL
{
  "success": false,
  "error": "No URL provided. Please provide a valid URL in the request body."
}

// Rate limit exceeded (anonymous users)
{
  "success": false,
  "error": "Rate limit exceeded. Anonymous users can upload 10 files from remote URLs per hour. Try again in 45 minutes.",
  "rateLimitExceeded": true,
  "resetAt": "2025-12-06T13:45:00.000Z"
}

// Remote server error
{
  "success": false,
  "error": "Failed to download file from URL",
  "remoteStatus": 403
}

// File too large for anonymous users
{
  "success": false,
  "error": "Anonymous uploads are limited to 1GB. Please create an account for larger files."
}

Supported URL formats

  • Public Google Drive, Dropbox, and OneDrive share links (we turn them into downloads when we can)
  • Direct HTTP or HTTPS download links
  • URLs that send a Content-Length header (helps with size checks)
  • Public links that do not need a login or browser click
  • CDN and public object-storage URLs

Limitations

  • Private cloud files: sign in once in the dashboard and pick files from Google Drive, Dropbox, or OneDrive
  • Sites that need a captcha or extra browser steps may still fail
  • Anonymous: about 10/hour per IP, max 1 GB, expire after 3 days
  • Fetch timeout is about 5 minutes for the stream window
  • Content-Length helps; without it, size is checked while streaming

Usage notes

Prefer /files/remote-upload for most imports. Use remote-multipart when you need status polling or SSE progress. Give people the lasting share link at https://beecargo.net/d/{shortId}.