iNaturalist
inaturalist.org · Storage · 1 record · JSON
iNaturalist Storage
fails: quotaemailno cardRper-object-cap
| Free tier | 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. unit MB; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | 20 MB/file (20000000 bytes) |
| Retention | not stated |
| Egress | free, no auth, static.inaturalist.org serves 5 sizes; API 100 req/min (asked to stay at 60) |
| Identity | email 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 |
20 MB/file; downsample to 2048×2048 max on the longest edge; API 100 req/min |
| Binding | per-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 |
| Interface | rest REST v1 + v2 — POST /v1/observation_photos and POST /v1/photos accept multipart file; pyinaturalist wraps it |
| Tooling | pyinaturalist (add_photo_to_observation, upload), REST directly |
| Composes with | Good 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. |
| Reliability | Fails 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.' |
| Notes | 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. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
| Parsed numbers |
|
Evidence (5)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | api.inaturalist.org/v1/observations?per_page=1&photos=true | total_results 395436915; photo objects carry original_dimensions {width,height} capped at 2048 |
| 2026-10-21 | static.inaturalist.org/photos/753863865/{original | large,medium,small,square}.jpg — 200 in all five, 3,881,965 / 1,164,886 / 340,333 / 92,808 / 14,515 bytes |
| 2026-10-21 | forum.inaturalist.org/t/original-image-not-showing-in-full-r | 'The term original is probably misleading ... everything larger is reduced to 2048' |
| 2026-10-21 | www.inaturalist.org/users/new | form fields user[login], user[email], user[password] + reCAPTCHA |
| 2026-10-21 | forum.inaturalist.org/t/image-for-linking-to-in-an-observati | staff: 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_whenprocess$.free_tier.notesprocess$.per_object_cap.notesnot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted