Skip to content
Dashboard
Menu Reference · Errors

Reference

Errors

There are no error codes to memorize — the HTTP status is the contract, and the body is one human-readable message in a fixed envelope:

json400 Bad Request
{
  "error": "ttl must be an integer number of seconds (min 60)"
}

Status catalogue

StatusWhen
400bad requestUnparseable bodies, bad paths, invalid ttl/name values, per-request file caps, invalid zips.
401unauthorizedAccount routes without a credential, ?name= without a key, minting keys without an ID token.
402payment requiredSubscriber features (?name=, long ttl, append, vanity) on a free account.
404not foundMissing drops, keys or files — also returned for resources owned by someone else.
405method not allowedWrong verb on a real path, e.g. POSTing to a served drop.
409conflictVanity sub already taken, or the account already owns one.
410goneThe drop expired — see Expiry. Browsers get an “expired” page.
413payload too largeZip over the plan cap, decompression past 4×, or a drop hitting its 10,000-file total.
429rate limited10 deploys/min per IP anonymous, 120/min per account subscribed.
451unavailable for legal reasonsThe drop was taken down — see Abuse & takedown.
502 / 503upstream troubleThe billing backend or drop index is briefly unreachable. Retry shortly — deploys themselves fail open where safe.

Browsers vs. API clients

On served drops (*.hurled.page), requests with Accept: text/html get small branded error pages for not-found, expired and removed drops; everything else gets the JSON envelope. The API origin (hurl.page) always speaks JSON.