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.