Cloud Storage & File Sharing — entry 007 of 18

GoFile

Verified Jul 2026

GoFile is a free file-hosting service with no upload size limit, offering folder-based organization and a REST API for account, content, and folder management. A live GET against the real gateway, api.gofile.io/accounts/getid, returned a 401 without a token, reconfirming API-key auth over HTTPS, and the same response carried an Access-Control-Allow-Origin header echoing the request Origin, resolving cors from unknown to yes. The core upload/download API is free, with a paid Premium tier removing ads, wait times, and daily limits.

GoFile is a free file host with no upload size limit; behind its account/API-key model sits a fully anonymous guest path — POST a file straight to one of its storage nodes and it silently mints a disposable guest account for you, no signup or key required. A live POST this run against a real storage node returned a genuine, working share link with zero credentials sent.

file-hostingfile-sharingapi-keyunlimited-size
AuthenticationAPI KeySign up with the provider to obtain credentials.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreemiumA usable free tier exists, with paid plans for more volume.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score61out of 100
Authentication15/25API key required
Pricing17/20Freemium tier available
Docs0/20No docs or spec available
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 61 on greatapis.com
<a href="https://greatapis.com/api/gofile/"><img src="https://greatapis.com/badge/gofile.svg" alt="Scored 61 on greatapis.com"></a>

Auth quickstart

  1. No API key or signup is required for a basic upload — call GET https://api.gofile.io/servers to get a live storage-node hostname, then POST the file straight there; GoFile auto-creates a disposable guest account behind the scenes and hands its guestToken back in the same upload response.
  2. That guestToken unlocks very little — a live GET this run against https://api.gofile.io/accounts/getid with Authorization: Bearer <guestToken> returned HTTP 200 with the guest's own account id, but the same token against https://api.gofile.io/contents/<folderId> (to list what you just uploaded) returned HTTP 401 {"status":"error-notPremium"}.
  3. For a real API key — needed for content listing, direct programmatic download links, and higher limits — sign in at gofile.io and generate one from account settings, then send it the same way: Authorization: Bearer <token>.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Anonymous file upload

POSThttps://store-eu-par-5.gofile.io/uploadFile

Content-Type: multipart/form-data; boundary=----boundary

------boundary
Content-Disposition: form-data; name="file"; filename="hello.txt"

Hello from the greatapis.com quickstart!
------boundary--

200 application/json

{"data":{"createTime":1786395369,"downloadPage":"https://gofile.io/d/43xwvv","guestToken":"Gf2Bo3A1Pcc7XbxenwwUHU2BaqmEzcNF","id":"c4a20d7c-7678-4e64-b217-bf937ab8b7db","md5":"de0c741cb1591d4cfcd403aec5f1195b","mimetype":"text/plain; charset=utf-8","modTime":1786395369,"name":"hello.txt","parentFolder":"e0d3ff98-f9df-4bb2-a892-99605ca286b9","parentFolderCode":"43xwvv","servers":["store-eu-par-5"],"size":40,"type":"file"},"status":"ok"}

The servers/uploadFile split is real, not optional flavor — GET /servers first returns a rotating list of live storage-node hostnames (store-eu-par-5, store-na-phx-4, etc.), and a client has to call it first and pick one; posting straight to the apex gofile.io/uploadFile skips that step and fails (see gotchas).

Developer reference

Gotchas & limits

  • You must upload to a real storage-node host, not the apex domain — a live POST this run against https://gofile.io/uploadFile (skipping the /servers call) returned a plain 404 Cannot POST /uploadFile.
  • The response looks complete, but a guest token can't read it back through the API — a live GET this run against /contents/<folderId> with the guest token from the same upload returned HTTP 401 {"status":"error-notPremium"}; the only way to fetch what you just uploaded as a guest is the human-facing downloadPage URL, not a second API call.
  • GET /accounts/<id> with a guest token echoes back IP-derived geolocation for whoever uploaded — a live call this run returned a real ipinfo block (country, asnName, netblockName, the IP's CIDR range) alongside the account row, worth knowing before treating a guest account as anonymous in a privacy-sensitive context.
  • CORS reflects the caller's Origin verbatim rather than a fixed value — a live GET this run against /servers with Origin: https://example.com returned that same value back in access-control-allow-origin, plus access-control-allow-credentials: true.
  • A fresh POST /accounts mints an entirely new, unrelated guest account each time (different id/token/auto-generated guest<random>@gofile.io email) rather than returning the token tied to your most recent upload — track the guestToken from the upload response itself if you need to act on that specific upload later.