GET Together rebuilds a social network entirely on HTTP GET requests

GET Together is a small social network shown on Hacker News whose entire point is a pun: every write action on the site, posting, hearting, replying, deleting, is sent as an HTTP GET request rather than the POST, PUT or DELETE a REST API would normally use. The homepage opens by defining "get together" as both meeting other people and writing a post with the wrong HTTP method, then documents the API directly: a post is created with GET /post, passing a name and text as query parameters, and the docs give working examples in curl, Python, JavaScript, Go and Rust that all do the same thing, issue a GET request with the content encoded in the URL.

The rest of the API follows the same pattern. /feed returns posts as JSON, /heart?id=...&on=1 adds a heart to a post and on=0 removes it, and /delete?id=... deletes a post the caller owns, all as GET calls. Replies work by adding a parent=POST_ID parameter to /post, and /feed?parent=POST_ID returns a reply thread together with its original post; replies can themselves have replies and go through the same limits and moderation as top-level posts. Deleting a post does not delete the replies other users left on it. Display names are limited to 2 to 20 letters, numbers or underscores and are neither unique nor verified. Posting does not require a cookie, but the gt_session cookie the server returns lets a user delete a post later, and for safe retries a client can generate its own UUID and reuse it with the same cookie; a request sent without an ID creates a brand-new post every time instead of being treated as a retry.

New posts and names are checked for English-language profanity and for crypto content, and the site explicitly bans crypto, Bitcoin, memecoin and token promotion. Users can report posts, but reports alone do not take anything down; an automated abuse review hides only clear violations. Because post text becomes part of the request URL, the site warns users not to include private information in what they write, since the URL itself is public. The API returns a 400 for a bad name, text or UUID, a 403 for a bad owner cookie or request origin, and a 429 when rate-limited, with guidance to wait ten seconds before retrying. The Show HN post was made by user nchudleigh and had drawn 42 points and 17 comments at the time it was catalogued; the page itself does not say who built the site, when, what it runs on, or how many posts or users it has.

Key facts

  • Every write action on the site, posting, hearting, replying and deleting, is implemented as an HTTP GET request instead of POST, PUT or DELETE.
  • Display names must be 2 to 20 letters, numbers or underscores, and are not unique or verified.
  • Deleting a post preserves other users' replies to it; a request sent without a UUID creates a new post each time rather than acting as a safe retry.
  • The site bans crypto, Bitcoin, memecoin and token promotion, and automatically hides only clear moderation violations; reporting a post alone does not remove it.
  • Because post text is encoded in the request URL, the site warns users not to include private information, and tells clients rate-limited with a 429 to wait ten seconds before retrying.

Why it matters

The project's entire appeal is the constraint: building a functioning social network where the read/write distinction that HTTP methods exist to express is deliberately discarded, so that writing a post literally is a GET request, the same kind of request a browser makes to load a page. It is a working demonstration of an API design joke rather than a product aimed at growth or retention, in the vein of Hacker News's long-running taste for projects that treat a technical constraint as the whole feature.

Who it affects

The audience is developers and the Hacker News crowd who get the REST-convention joke and want to poke at an unusual API, not general social media users. Anyone who tries the endpoints directly, via curl or a short script in Python, JavaScript, Go or Rust, can post, reply, heart or delete content without a client app, since the docs supply working examples in all five.

How to use it

Posting is GET /post with name and text as query parameters, returning a JSON object with the new post's ID. /feed reads back posts as JSON, /heart?id=...&on=1 or on=0 toggles a heart, /delete?id=... removes a caller's own post, and adding parent=POST_ID to /post creates a reply, with /feed?parent=POST_ID fetching a thread. The gt_session cookie returned after posting is needed to delete that post later; supplying your own UUID as the post ID and reusing it with the same cookie makes retries safe, while omitting the ID means every retry creates a separate post.

How solid is it

The site is live and documented with runnable code samples in five languages, and the mechanics described, endpoints, cookies, error codes, retries, read as a genuinely working service rather than a mockup. All of this comes from the project's own homepage; nothing here is independently confirmed by a third party, and the page does not disclose who built it, when, what it runs on, or any usage numbers. The Show HN submission had 42 points and 17 comments at the time it was catalogued.

Risks and caveats

Because post text is sent as URL query parameters, it can end up logged by servers, proxies, browser history or referrer headers along the way, which is exactly why the site itself warns users not to put private information in a post. Moderation only screens for English-language profanity and crypto-related content, and only automatically hides clear violations, so a report by itself does not remove anything. The page gives no information about who runs the service, how long it will stay up, or what happens to the data it stores.

“A social network with no POSTs. Everything you write is a GET request.”

— GET Together (gettogether.dev)