API
Everything the website does, curl can do too. No account required — the same free limits apply.
Upload a file with curl
$ curl https://filesharefree.com/api/upload/init \
-d '{"files":[{"name":"notes.txt","size":11,"mime":"text/plain"}]}'
$ curl -X PUT --data-binary @chunk0 \
"https://filesharefree.com/api/upload/chunk?uploadId=…&index=0"
$ curl https://filesharefree.com/api/upload/complete \
-d '{"transferId":"…","files":[{"uploadId":"…",…}]}'
$ curl https://filesharefree.com/api/transfer/k7m2pxq4Endpoints
/api/upload/initCreate a transfer. Returns an upload session per file.
Request
{ "files": [{ "name": "video.mp4", "size": 20971520, "mime": "video/mp4" }],
"password": "optional", // omit for none
"burnAfterRead": false } // every transfer is deleted 24h after uploadResponse
{ "transferId": "k7m2pxq4", "editKey": "…20 chars…",
"files": [{ "uploadId": "…", "chunkSize": 8388608, "chunkCount": 3 }] }/api/upload/chunk?uploadId=…&index=0Upload one raw 8 MiB chunk. Repeat until chunkCount is reached. Resumable.
Request
<raw bytes>Response
204 No Content/api/upload/chunk?uploadId=…List already-received chunk indices (for resuming).
Request
—Response
{ "received": [0, 1] }/api/upload/completeSeal the transfer: chunks are concatenated and encrypted at rest.
Request
{ "transferId": "k7m2pxq4",
"files": [{ "uploadId": "…", "name": "video.mp4", "size": 20971520,
"mime": "video/mp4", "chunkCount": 3 }] }Response
{ "ok": true, "link": "/t/k7m2pxq4", "manageUrl": "/manage/…" }/api/transfer/:idPublic metadata. File names/sizes stay hidden until unlock.
Request
—Response
{ "id": "k7m2pxq4", "status": "ready", "hasPassword": false, "expiresAt": 0 }/api/transfer/:idUnlock a transfer (password optional if none set). Returns a 10-minute download token.
Request
{ "password": "…" }Response
{ "ok": true, "token": "…", "files": [{ "index": 0, "name": "video.mp4" }] }/api/download/:id/:index?token=…Stream a decrypted file. Increments the download counter; burns burn-after-read transfers.
Request
—Response
file stream/api/manage/:editKeySender's view: stats, file list, status.
Request
—Response
{ "downloads": 2, "status": "ready", "files": […] }/api/manage/:editKeyRevoke the sender's link (files wiped).
Request
{ "action": "revoke" }Response
{ "ok": true, "status": "revoked" }/api/manage/:editKeyDelete the transfer and all records immediately.
Request
—Response
{ "ok": true, "deleted": true }