Quickstart: Notification Bot
Post alerts from CI/CD, monitoring, or ticketing into a Roam group in under ten minutes. Uses an organization API key — no OAuth or webhooks required.
1. Create an API key
- Open Roam Administration → Developer (gear → Settings).
- Click Add ApiClient, choose API key, name it (e.g.
ci-bot). - Grant scopes:
group:read,chat:send_message(or the UI label Chat Send). - Save and copy the API key (
rmk-…).
export ROAM_TOKEN='rmk-…'
2. Find a group
curl -sS -H "Authorization: Bearer $ROAM_TOKEN" \
https://api.ro.am/v1/group.list | jq .
Copy a group id (plain UUID).
export GROUP_ID='88bebce7-6cbb-4666-96f9-5c02d73e6661'
3. Post a markdown message
curl -sS -X POST https://api.ro.am/v1/chat.post \
-H "Authorization: Bearer $ROAM_TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"groupId\": \"$GROUP_ID\",
\"text\": \"**Deploy succeeded** on \`main\` — build 42 is live.\"
}" | jq .
A successful response includes "ok": true and the new message timestamps.
4. (Optional) Post Block Kit
curl -sS -X POST https://api.ro.am/v1/chat.post \
-H "Authorization: Bearer $ROAM_TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"groupId\": \"$GROUP_ID\",
\"blocks\": [
{
\"type\": \"header\",
\"text\": { \"type\": \"plain_text\", \"text\": \"Deploy succeeded\" }
},
{
\"type\": \"section\",
\"text\": {
\"type\": \"mrkdwn\",
\"text\": \"Service **api-gateway** is live.\\nVersion: \`v2.4.1\`\"
}
}
],
\"color\": \"good\"
}" | jq .
Supported blocks: Block Kit guide.
Next steps
- GitHub Actions — drop-in workflow notifications
- Webhook Relays — forward external webhooks into chat without code
- Threads: pass
threadKeyonchat.postto keep related alerts grouped - Rate limits: burst 10 / 1 rps — see API Reference
If you need the bot to read messages and reply, use the Interactive bot quickstart instead.