Messages

Messages is a simple service for storing messages behind a group ID. Post messages to a group, upvote or downvote them, and retrieve visible messages. Useful for comments, feedback, or anywhere you need a lightweight message store without running your own backend.

Each group has a password-protected admin panel where you can flag or delete messages, configure auto-flag heuristics, and view all messages including hidden ones.

Create a Group

API

Create a Group

POST /m with optional JSON body to create a group. If id is omitted, one is generated. If password is omitted, one is generated for you.

curl -X POST messages/m \
  -H "Content-Type: application/json" \
  -d '{"id": "my-group"}'
# Response (201 Created)
{
  "id": "my-group",
  "password": "G7kP2mR5qT9wXy4b",
  "url": "/m/my-group"
}

Save the password — it is needed for the admin panel and cannot be retrieved later.

Post a Message

POST /m/ID with a message body. If the group doesn't exist, it is created automatically. Accepts JSON ({"body": "..."}) or plain text.

# JSON
curl -X POST messages/m/my-group \
  -H "Content-Type: application/json" \
  -d '{"body": "Hello world"}'

# Plain text
curl -X POST messages/m/my-group \
  -d "Hello world"
# Response (201 Created)
{
  "id": "xK9mP2qR5tLw",
  "group": "my-group",
  "body": "Hello world"
}

Get Messages

GET /m/ID returns messages as an HTML page. /m/ID.json or Accept: application/json returns JSON. Flagged messages and messages with negative vote scores are hidden.

curl messages/m/my-group.json
{
  "id": "my-group",
  "messages": [
    {
      "nano_id": "xK9mP2qR5tLw",
      "body": "Hello world",
      "upvotes": 3,
      "downvotes": 0,
      "score": 3,
      "created_at": "2025-01-15 12:30:00"
    }
  ]
}

Vote on Messages

POST /m/ID/upvote/MSG_ID or /m/ID/downvote/MSG_ID to vote on a message.

curl -X POST messages/m/my-group/upvote/xK9mP2qR5tLw
{"ok": true}

Admin Panel

Visit /m/ID/admin to access the admin panel. You'll need the password from when the group was created. From there you can flag or delete individual messages.