Send Shed
Developers

Upload API

Updated October 2026

Upload files to your Send Shed account from scripts, apps and tools like ShareX. You get a share link back, plus a direct image link for pictures. A free account is all you need.

Authentication

Create a key in your dashboard under ShareX, then send it on every request:

Authorization: Bearer ss_your_key_here

The key works like a password: keep it out of public code. Creating a new key replaces the old one, and you can revoke it in the dashboard. Accounts must have confirmed their email address.

Upload a file

POST https://sendshed.com/api/v1/upload
Content-Type: multipart/form-data
FieldRequiredWhat it does
fileYesThe file. Send other fields before it.
filenameNoName to use instead of the uploaded file’s own name (max 255 characters).
expiryHoursNoHours until the link expires, 1 to 720 (30 days). Default 168 (7 days).
downloadLimitNoDelete after this many downloads.
idleExpiryHoursNoAlso delete after this many hours without a download.
passwordNoRequire a password to download.
?folder=IDNoQuery parameter: add the file to one of your folders (the id from /f/ID).

Each file can be up to 3 GB, and counts against your account’s storage (10 GB on a free account).

Response

{
  "id": "Ab3dE6gH9jK2mN5p",
  "url": "https://sendshed.com/d/Ab3dE6gH9jK2mN5p/screenshot.png",
  "directUrl": "https://sendshed.com/i/Ab3dE6gH9jK2mN5p/screenshot_sendshed.com.png",
  "link": "https://sendshed.com/i/Ab3dE6gH9jK2mN5p/screenshot_sendshed.com.png",
  "thumbnailUrl": "https://sendshed.com/t/Ab3dE6gH9jK2mN5p.jpg",
  "deletionUrl": "https://sendshed.com/delete/Ab3dE6gH9jK2mN5p/q8Wn...",
  "deleteToken": "q8Wn...",
  "expiresAt": 1792369682824,
  "filename": "screenshot.png"
}
FieldMeaning
urlThe download page. Share this one.
directUrlOnly for public PNG, JPEG, GIF and WebP images: the image itself, for embedding in forums and chat.
linkdirectUrl when there is one, otherwise url. Handy for screenshot tools.
thumbnailUrlOnly for public images and videos: a preview picture (JPEG, up to 1200 px wide).
deletionUrlA link that deletes the file after a confirmation click. Anyone with it can delete the file, so keep it private.
deleteTokenKeep it to delete the file later (see below).
expiresAtWhen the link expires, in milliseconds since 1970 (UTC).

Images and videos with no password or download limit also get a real preview picture when the link is posted in Discord, X, WhatsApp or iMessage, and MP4 and WebM videos play inline.

Delete a file

DELETE https://sendshed.com/api/file/ID
X-Delete-Token: the deleteToken from the upload

You can also delete any of your files from the dashboard.

Errors and limits

Errors come back as JSON: {"error": "message"}.

StatusMeaning
401Missing or wrong API key.
403Account suspended, or email address not confirmed yet.
404The folder you named isn’t one of yours.
413File too large, or not enough storage left on the account.
429Too many uploads: the limit is 120 per hour per account.

Examples

curl

curl -H "Authorization: Bearer $SENDSHED_KEY" \
     -F expiryHours=24 \
     -F "file=@clip.mp4" \
     https://sendshed.com/api/v1/upload

Python

import os, requests

with open("report.pdf", "rb") as f:
    r = requests.post(
        "https://sendshed.com/api/v1/upload",
        headers={"Authorization": "Bearer " + os.environ["SENDSHED_KEY"]},
        data={"expiryHours": "72"},
        files={"file": f},
    )
r.raise_for_status()
print(r.json()["url"])

ShareX

Download a ready-made config from the dashboard; see the ShareX setup guide.