fshy

fshy / Storage

iNaturalist

inaturalist.org · Storage · 1 record · JSON

iNaturalist Storage

fails: quotaemailno cardRper-object-cap

www.inaturalist.org · citizen-science observation platform · storage/inaturalist · JSON · compare

Free tierNo per-account quota published or enforced (395,436,915 observations live at time of probe). But per-object: 20 MB/file upload cap, AND every image is re-encoded to a 2048 px longest edge — so the stored 'original' is not your original.
unit MB; metered on stored-bytes
Pricenone stated
Per-object cap20 MB/file (20000000 bytes)
Retentionnot stated
Egressfree, no auth, static.inaturalist.org serves 5 sizes; API 100 req/min (asked to stay at 60)
Identityemail email — verified the live signup form at /users/new: user[login], user[email], user[password] only, plus a reCAPTCHA widget. No affiliation field exists.
Limits
  • per-object-cap 20 MB/file source
20 MB/file; downsample to 2048×2048 max on the longest edge; API 100 req/min
Bindingper-object-cap the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota
Interfacerest REST v1 + v2 — POST /v1/observation_photos and POST /v1/photos accept multipart file; pyinaturalist wraps it
Toolingpyinaturalist (add_photo_to_observation, upload), REST directly
Composes withGood write API, bad read fidelity. Every returned photo is ≤2048 px; the size ladder is square/large/medium/small/original and 'original' is a misnomer.
ReliabilityFails rule 4 outright. Measured on a live asset: /photos/753863865/original.jpg = 3,881,965 bytes at dimensions reported as 1536×2048, i.e. already clamped. Mods state plainly: 'That term [original] is probably misleading ... everything larger is reduced to 2048.'
NotesNo per-account quota published or enforced (395,436,915 observations live at time of probe). But per-object: 20 MB/file upload cap, AND every image is re-encoded to a 2048 px longest edge — so the stored 'original' is not your original.
Evidence rungreported One page read moves it to documented.
Checked2026-10-21 (inherited); stale on 2026-11-04
Parsed numbers
  • $.limits[0].value limit:per-object-cap 20.0 MB
Evidence (5)
datesourcewhat it proved
2026-10-21api.inaturalist.org/v1/observations?per_page=1&photos=truetotal_results 395436915; photo objects carry original_dimensions {width,height} capped at 2048
2026-10-21static.inaturalist.org/photos/753863865/{originallarge,medium,small,square}.jpg — 200 in all five, 3,881,965 / 1,164,886 / 340,333 / 92,808 / 14,515 bytes
2026-10-21forum.inaturalist.org/t/original-image-not-showing-in-full-r'The term original is probably misleading ... everything larger is reduced to 2048'
2026-10-21www.inaturalist.org/users/newform fields user[login], user[email], user[password] + reCAPTCHA
2026-10-21forum.inaturalist.org/t/image-for-linking-to-in-an-observatistaff: the forum has 'a storage limit to our subscription', i.e. this is not a general-purpose host
More fields (1)
{
 "dead_end": {
  "failure_class": "quota",
  "why": "No per-account quota published or enforced (395,436,915 observations live at time of probe). But per-object: 20 MB/file upload cap, AND every image is re-encoded to a 2048 px longest edge — so the stored 'original' is not your original.",
  "retry_when": null,
  "first_recorded": "2026-10-21"
 }
}
Unknown or withheld values (5)
  • $.extras.dead_end.retry_when process
  • $.free_tier.notes process
  • $.per_object_cap.notes not-extracted
  • $.retention.notes not-extracted
  • $.retention.stated not-extracted