Printables
printables.com · Storage · 1 record · JSON
Printables (Prusa Research) Storage
★ qualifiesemailno cardRper-object-cap
| Free tier | No published account quota and no published upload cap. Verified live object: a single 1,036,822,737 B (1.037 GB) STL served from files.printables.com. Also verified a model holding 29 files totalling 404.3 MB, and one holding six ZIPs of 62.5/167.5/208.5/65.0/98.8/118.6 MB. 'Other files' accepts ZIP, so arbitrary payloads ride inside an archive; and a single model accepts 1335+ files (forum report of a user hitting UI limits, not a storage limit). unit objects; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | per-object-cap: 1.037 GB (1036999999 bytes) |
| Retention | not stated |
| Egress | Backed by Google Cloud Storage (x-goog-* headers), fronted by files.printables.com with Cache-Control: public, max-age=31536000 and Access-Control-Allow-Origin: *. No egress cap published, no paywall on download, no account needed to download. |
| Identity | email email |
| Limits | per-object-cap: 1.037 GB observed (no stated ceiling found — the '1 GB' in that model's own title is the author's description, not a platform limit). Write is normal account signup; no curator. Download is anonymous. RANGE VERIFIED: Range: bytes=100-199 returned HTTP/1.1 206 Partial Content, Content-Range: bytes 100-199/1036822737, 100 bytes — so resumable/ranged GET works (this is NOT the RepOD case). |
| 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 | graphql Undocumented but stable public GraphQL: POST https://api.printables.com/graphql/ with no auth. print(id:N){ name stls{id name fileSize} otherFiles{id name fileSize} downloadPacks{...} } to enumerate; then mutation getDownloadLink(id, printId, source:"model_detail", fileType:"stl"|"other") returns {ok, output:{link}}. |
| Tooling | Plain HTTP + JSON. No SDK needed. gid/uid path component is an opaque UUID, not a signature. |
| Composes with | The returned link is a plain GCS object URL with NO signature and NO expiry field that is enforced (headers showed expires: Fri, 06 Mar 2026 — a date already in the past — and the object still served on 2026-10-21, i.e. rule 9: the signature field is not a gate). Hot-linkable behind Cloudflare with zero origin egress cost. Object keys are enumerable per model, so a shard-and-replicate writer can treat each model as a bucket. |
| Reliability | Signup page returns 403 to plain curl (Cloudflare) but email signup is the documented path. |
| Notes | No published account quota and no published upload cap. Verified live object: a single 1,036,822,737 B (1.037 GB) STL served from files.printables.com. Also verified a model holding 29 files totalling 404.3 MB, and one holding six ZIPs of 62.5/167.5/208.5/65.0/98.8/118.6 MB. 'Other files' accepts ZIP, so arbitrary payloads ride inside an archive; and a single model accepts 1335+ files (forum report of a user hitting UI limits, not a storage limit). |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
| Parsed numbers |
|
Evidence (8)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | api.printables.com/graphql/ | print(id:1216949){stls{fileSize}} returned 1036822737 for high_poly_benchy.stl, and downloadPacks 123718835; proves a real 1.037 GB object, not a claim |
| 2026-10-21 | files.printables.com/media/prints/1216949/stls/9131937_666a2 | getDownloadLink mutation — returned with no query-string signature |
| 2026-10-21 | withheld | curl -D - on that URL — 200, Content-Length: 1036822737, Content-Type: model/stl, x-goog-storage-class: STANDARD, Access-Control-Allow-Origin: *, Accept-Ranges: bytes |
| 2026-10-21 | withheld | curl -r 100-199 — HTTP/1.1 206 Partial Content, Content-Range: bytes 100-199/1036822737, exactly 100 bytes written |
| 2026-10-21 | withheld | full-object download of 24695 '0.25mm clip part 1.zip' — got exactly 62,510,662 B; md5sum 4df344d46a0452592f6a70bd88e63777 matched the server's x-goog-hash md5=TfNE1GoEUlkvanC9iOY3dw== (base64 -> same digest). SHA-256-class byte-exact roundtrip. |
| 2026-10-21 | withheld | print(id:868222) — 29 files, 404.3 MB in one model |
| 2026-10-21 | withheld | print(id:180017) — six ZIPs in 'Other files' up to 208,474,336 B; proves arbitrary archive types survive ingest |
| 2026-10-21 | www.prusa3d.com/page/terms-of-service-of-printables-com_2312 | section 2.1 lists accepted types incl. .gcode/.bgcode/.sl1/.stl/.3mf/.obj/.step/.scad/.amf plus images, 'and other information and files'; 2.9 disclaims storage durability |
Unknown or withheld values (9)
$.evidence[2].urlprivate-url$.evidence[3].urlprivate-url$.evidence[4].urlprivate-url$.evidence[5].urlprivate-url$.evidence[6].urlprivate-url$.free_tier.notesprocess$.per_object_cap.notesnot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted