Posts
Fetch one public post by ID.
GET https://api.menofhunger.com/v1/public/posts/:id
Try it
Every post link looks like menofhunger.com/p/<id>. Paste the whole link or just the ID.
curl https://api.menofhunger.com/v1/public/posts/:idResponse
Trimmed for readability.
{
"data": {
"id": "cm4x8f2p1k0001qab3d7yh2m9z",
"createdAt": "2026-07-14T13:02:41.518Z",
"editedAt": null,
"body": "Discipline is remembering what you want.",
"kind": "regular",
"visibility": "public",
"topics": ["discipline"],
"hashtags": [],
"cashtags": [],
"boostCount": 42,
"commentCount": 7,
"repostCount": 3,
"bookmarkCount": 11,
"viewerCount": 1280,
"totalViewCount": 1540,
"parentId": null,
"media": [],
"poll": null,
"author": {
"id": "cm4x8ez4mn0000qab3g1r5t8kv",
"username": "menofhunger",
"name": "Men of Hunger",
"avatarUrl": "https://menofhunger.com/…",
"verifiedStatus": "identity",
"premium": true
}
}
}Fields
- id
- string
- body
- string
- Plain text. Mentions, #hashtags, and $cashtags stay inline.
- createdAt / editedAt
- ISO 8601 string
- kind
- "regular" | "checkin" | "repost" | "articleShare"
- author
- object
- id, username, name, avatarUrl, verifiedStatus, premium.
- media
- array
- Each has url, kind ("image" | "gif" | "video"), width, height, alt.
- topics / hashtags / cashtags
- string[]
- boostCount, commentCount, repostCount, bookmarkCount, viewerCount, totalViewCount
- number
- viewerCount is unique people; totalViewCount is accepted impressions.
- parentId
- string | null
- Set when the post is a reply.
- poll
- object | null
- Options with voteCount and percent, plus endsAt.
- viewer*
- false | []
- Present but always empty — there is no viewer on a public call.
404s
Drafts, deleted posts, group posts, and anything not set to public visibility all return 404 — the same as an ID that never existed.