# Blossom server

> 24242.io | Storage; 2 records: free tier, limits, identity cost and evidence.

HTML https://fshy.ajam.dev/p/24242/ | JSON https://fshy.ajam.dev/api/v1/entity/24242.json | how to read a record: https://fshy.ajam.dev/llms-full.txt

## Blossom server fleet (24242.io, blossom.oslim.dev / Lotus, blossom.nostr.build)

- `storage/blossom-server-fleet` | qualifies | evidence reported | binding per-object-cap | category p2p-blob-storage
- needs card no, phone no, ID no, institution no | verified 2026-10-21 (inherited) | stale on 2026-11-05
- url https://24242.io/
- free tier: 24242.io 100 MiB/file, deleted if not accessed for 60 days. blossom.oslim.dev (Lotus): 100 MB/file and 8 GB per pubkey, retention 'permanent', cost 'free'. blossom.nostr.build: 20 MiB/file free tier, 'no limit on how many files, and no expiry'. | unit: mixed | metered on: unstated | read on: 2026-10-21 | source: [1]
- per-object cap: 100 MiB/file | bytes: 104857600 | source: [1] | note: not stated
- retention: 24242.io 100 MiB/file, deleted if not accessed for 60 days | days: 60 | source: [1] | note: not stated
- egress: unmetered / CDN-fronted. nostr.build advertises 'Global CDN delivery' on free uploads. | metered: no
- identity: anonymous | detail: anonymous
- interface: cli
- limits:
  - per-object-cap (binding): 100 MiB/file [1]
  - per-object-cap (binding): 100 MB/file [1]
  - retention-clamped: deleted if not accessed for 60 days [1]
- limits note: per-object-cap 100 MiB on most servers (20 MiB on nostr.build free). This is chunk-sized, not object-sized. 24242.io caps /list at the first 250 hits, so enumeration needs date ranges.
- interface detail: Blossom BUD-01/02/04/05/06/10. `GET /<sha256>`, `PUT /upload`, `PUT /mirror`, `GET /list/`.
- tooling: curl; hzrd149/blossom CLI; any Blossom client. BUD-04 `/mirror` lets one server pull a blob from another given a URL, so replication is a server-side call, not a client re-upload.
- composes with: aggregate GB is the sum over the fleet x number of keypairs (oslim's 8 GB is per-pubkey, and pubkeys cost nothing). 24242.io's 60-day access-based retention is defeated by any periodic HEAD.
- reliability: small volunteer hosts, several with unstated total capacity. 24242.io states 'Free and unrestricted... for now'. Prefer BUD-04 mirroring to two servers per chunk.
- notes: the same as the free tier
- extras:
  - unit_note: free_tier.unit is 'mixed' because the headline is denominated in MiB or KiB, which the schema enum does not carry; the verbatim free_tier.stated keeps the true unit.
- evidence:
  - [1] 2026-10-21: 'Free and unrestricted... with no warranties... for now.', 'Files are deleted if not accessed for 60 days', 'Max file size: 100MiB', 'BUD-06 /mirror will only accept a URL from another blossom server'
  - [2] 2026-10-21: 'Max file size —, Storage per user —, Retention permanent, Cost free'; README of 0ceanSlim/lotus shows max_upload_size_bytes 104857600, max_storage_per_pubkey_bytes 8589934592
  - [3] 2026-10-21: 'A hard cap of 100 MiB per upload (20 MiB for free uploads), with no limit on the number of uploads or retention'
  - [4] 2026-10-21: agent report: nostr.download, 24242.io, files.sovbit.host and blossom.primal.net accepted BUD-06 checks at 5 MB AND 100 MB 'with a brand-new key that has never paid anywhere'
  - [5] 2026-10-21: HTTP 400 (endpoint live, rejects unsigned body)
- sources:
  - [1] https://24242.io/
  - [2] https://blossom.oslim.dev/
  - [3] https://blossom.nostr.build/
  - [4] https://oddbean.com/e/note17emh2aqsswd6fkzezpzykpus4226qkgu3z5gzqrc7p5cpslkeckq9e6882
  - [5] https://blossom.primal.net/upload

## 24242.io — public Blossom blob server (Nostr)

- `storage/24242-io-public-blossom-blob-server` | qualifies-with-caveat | evidence reported | binding per-object-cap | category content-addressed blob server (BUD-01/02/06)
- needs card no, phone no, ID no, institution no | verified 2026-10-21 (inherited) | stale on 2026-11-05
- url https://24242.io
- free tier: No account, no quota, no total cap stated — 'Free and unrestricted... with no warranties... for now.' Per-file 100 MiB. First person to upload an object owns it (SHA-256 addressed). | unit: unlimited | metered on: unstated | read on: 2026-10-21 | source: [1]
- per-object cap: 100 MiB/file | bytes: 104857600 | source: [1] | note: not stated
- retention: 100 MiB/file; files deleted if not accessed for 60 days; /list returns only the first 250 hits; BUD-08 (NIP-94) not implemented | days: 60 | source: [1] | note: not stated
- egress: free, unauthenticated GET by SHA-256; served from a public host with no metering published | metered: no
- identity: anonymous | detail: anonymous — a Nostr keypair is the credential; no email, no phone. Verified: HEAD /upload with a BUD-06 pre-flight but no auth header returns 401 'x-reason: Authorization header missing, when required'.
- interface: unknown
- limits:
  - per-object-cap (binding): 100 MiB/file [1]
  - retention-clamped: deleted if not accessed for 60 days [1]
- limits note: 100 MiB/file; files deleted if not accessed for 60 days; /list returns only the first 250 hits; BUD-08 (NIP-94) not implemented
- interface detail: BUD-01 HTTP: PUT /upload (NIP-98 auth header), GET /<sha256>, HEAD /upload for BUD-06 pre-flight, /mirror for BUD-06
- tooling: any Blossom client (nostr.build, ditto, Amethyst); `nak` for key generation; plain curl once you can sign a NIP-98 event
- composes with: Content-addressed means a chunk map is trivial: `(sha256 → server)` is a complete locator, and BUD-06 /mirror lets one server pull a blob from another — so replication is a one-request operation per chunk.
- reliability: 60-day access-decay retention makes this an ephemeral tier, not an archive. 100 MiB/file means ~5,000 objects per 500 GB.
- notes: the same as the free tier
- evidence:
  - [1] 2026-10-21: 'Max file size: 100MiB'; 'Files are deleted if not accessed for 60 days'; 'First person to upload an object owns it'; BUD-06 /mirror accepts only another blossom URL
  - [2] 2026-10-21: HEAD (BUD-06 headers) — 401, x-reason: 'Authorization header missing, when required'
  - [3] 2026-10-21: HEAD — 401 (same BUD-06 shape)
  - [4] 2026-10-21: HEAD — 401, X-Reason: 'This needs a Nostr auth token (BUD-11)'
- sources:
  - [1] https://24242.io/
  - [2] https://24242.io/upload
  - [3] https://files.sovbit.host/upload
  - [4] https://blossom.ditto.pub/upload
