Build on it.
The same service the website is, driven from your own code. Create a link, upload straight to storage, hand the link to whoever needs the files, and get told when they take them.
- Biggest file
- 10 GB
- Links an hour
- 120
- Webhook events
- 5
- Pay only for links you create. Reading, listing and deleting are free.
- 100 free credits with your first key.
- No subscription. Credits never expire.
What a link costs
1 credit for the link, plus 1 credit for every started gigabyte, for every started week it is kept. 1,000 credits cost $15. Only creating a link costs anything — reading, listing, deleting, webhooks and downloads are free.
| Link | Credits | Cost |
|---|---|---|
| A 20 MB file, kept 24 hours | 2 | $0.03 |
| A 500 MB folder, kept 7 days | 2 | $0.03 |
| 3 GB of video, kept 7 days | 4 | $0.06 |
| 10 GB, kept 30 days | 51 | $0.77 |
Nothing renews. Credits are bought once and do not expire — they sit on the account until links spend them.
Three calls and a PUT
- Ask for a link
POST the filenames and sizes. You get back a slug, the public URL, and one signed upload slot per file.
- Send the bytes to storage
PUT each file body straight to its slot. This one does not come to us at all — no proxying, no size limit from our server, no queue.
- Say it arrived
POST the storage keys back. Sizes are read from storage rather than trusted, and calling it twice records each file once.
curl -X POST https://filecamel.com/api/v1/shares \
-H "Authorization: Bearer $FILECAMEL_KEY" \
-H "Content-Type: application/json" \
-d '{"files":[{"name":"report.pdf","size":91234}],"expiry":"7d"}'
{
"url": "https://filecamel.com/k3f9mq2phx7vn",
"uploads": [{ "url": "https://…", "storageKey": "k3f9mq2phx7vn/9f2c….pdf" }]
}
What you get
Limits
10 GB a file, 20 GB in one link, 50 files at a time, up to 30 days or an exact time you set.
The API
Create, complete, inspect, list and delete. 120 creations, 300 writes and 600 reads an hour — per key, not per address.
Webhooks
5 events, signed HMAC-SHA256, retried six times, at least once. share.downloaded · share.expired · share.deleted · file.blocked · share.reported
On every link
Passwords, your own code in the URL, a message beside the files, your own links on the page — no cap on any of them.
Downloads
Straight from storage on a signed URL. Not metered per byte and not counted against the rate limit.
No subscription
Buy credits once, spend them as you go. A quiet month costs nothing, and there is nothing to cancel.
The API does not need Premium, and Premium does not include credits — they are separate. Links the API makes get the full limits either way.
Questions
Do my files go through your servers?
No, and that is the point of the shape. Creating a link hands you a signed URL per file and you PUT the body straight to storage. We see the filename, the size and the content type you declared — never the contents. It is one call more than a single multipart POST would be, and it is the reason the product can say what it says.
How is it priced?
You buy credits up front — 1,000 for $15 — and each link the API creates spends some: 1 for the link, plus 1 for every started gigabyte for every started week it is kept. A small file kept a day is 2 credits. Reading, listing and deleting links, webhooks and downloads cost nothing. There is no subscription and nothing renews.
What happens when I run out?
Creating a link is refused with a 402 and the code insufficient_credits, and the response says what the link would have cost and what is left. Nothing else stops: links you already made keep their expiry and keep downloading, and you can still read, list and delete them. Buy more and the same key carries on. Every create response carries the remaining balance in an x-credits-remaining header, so you can warn yourself early.
Do credits expire?
No. They stay on the account until links spend them. The first key an account makes comes with 100 free, enough to build the integration and watch it work before paying anything.
What are the rate limits, really?
120 link creations, 300 writes and 600 reads an hour, per key, not per address — a program on ten machines is one caller. Downloads are not on that list at all: a recipient fetches from storage directly, so downloading never touches the API. Every response carries the remaining budget in a header.
Is there a test mode or a sandbox?
Not a separate one. Make a link with a short expiry — ten minutes is the floor — and it cleans itself up. Keys are prefixed fc_live_ so that a test mode can be added later without changing what a live key looks like, but there is nothing behind fc_test_ today and pretending otherwise would waste your afternoon.
Can my users upload without a FileCamel account?
Yes — your key is the account. You create the link and hand the signed upload URL to whoever is sending, and they need nothing from us. The same is true at the other end: a recipient opens the link and downloads with no sign-up.
Do you scan for malware?
Every file's SHA-256 is looked up with VirusTotal; the file itself is never sent anywhere. That only recognises a file somebody has already analysed, so anything new or repacked comes back as never seen — and the API says exactly that rather than calling it clean. Do not render a green tick for a missing verdict.
What if the API is down when I need it?
There is no uptime guarantee, and it would be a lie to print one next to a price this size. What there is: a 503 that says storage did not answer and that nothing was created, so a retry is safe; idempotent completion and deletion; and webhook delivery that retries six times over two and three quarter hours.
Read it before you buy it
The documentation is the whole of it — every endpoint, every field, the signing scheme, and what each error code means. It is not behind the paywall, and with 100 free credits on your first key you can find out whether this fits before spending anything on it.
Something missing, or a limit that does not work for what you are building? contact@filecamel.com.