### Transcript Started Webhook Payload Example Source: https://developer.ro.am/docs/webhooks/transcript-started This is an example of the JSON payload received when the 'transcript:started' event is triggered. It includes essential details about the meeting and the transcript. ```json { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "meetingId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "start": "2024-07-29T15:51:28.071Z", "location": "string", "hostEmail": "string" } ``` -------------------------------- ### Fetch API Request Example Source: https://developer.ro.am/docs/onair-api/onair-attendance-list This example demonstrates how to make a GET request to the attendance list endpoint using the Fetch API in JavaScript. Ensure you include your Bearer token in the Authorization header. ```javascript const myHeaders = new Headers(); myHeaders.append("Accept", "application/json"); myHeaders.append("Authorization", "Bearer "); const requestOptions = { method: "GET", headers: myHeaders, redirect: "follow" }; fetch("https://api.ro.am/v1/onair.attendance.list", requestOptions) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); ``` -------------------------------- ### Fetch API Request Example Source: https://developer.ro.am/docs/onair-api/onair-event-list Demonstrates how to make a GET request to the event list endpoint using the Fetch API in JavaScript, including setting headers for JSON acceptance and authorization. ```javascript const myHeaders = new Headers(); myHeaders.append("Accept", "application/json"); myHeaders.append("Authorization", "Bearer "); const requestOptions = { method: "GET", headers: myHeaders, redirect: "follow" }; fetch("https://api.ro.am/v1/onair.event.list", requestOptions) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); ``` -------------------------------- ### Example OK Response Source: https://developer.ro.am/docs/chat-api/lobby-booking-list.md This is an example of a successful response when listing lobby bookings. It includes booking details and a cursor for pagination. ```json { "bookings": [ { "id": "018f3f37-eca3-7d07-8a12-9e65a8a0c1b9", "start": "2025-08-03T14:10:54Z", "end": "2025-08-03T14:40:54Z", "status": "active", "timeZone": "America/Los_Angeles", "notes": "Intro call", "created": "2025-08-01T10:00:00Z", "hosts": [ { "name": "Alex Doe", "email": "alex@example.com", "isOrganizer": true } ], "invitees": [ { "name": "Sam Smith", "email": "sam@example.com", "status": "invited", "isBooker": true } ] } ], "nextCursor": "018f3f39-2b5c-7b3d-9f96-8b2f1c0e1234" } ``` -------------------------------- ### Create and Start an Additional Hermes Bot Profile Source: https://developer.ro.am/docs/integrations/hermes.md Use this command to create a new Hermes profile, install the Roam plugin, configure its environment variables, and start the gateway. Ensure a unique webhook port is assigned. ```bash hermes profile create another another plugins install WonderInventions/hermes-roam # Then set ~/.hermes/profiles/another/.env (ROAM_WEBHOOK_PORT=8649 or any free # port, plus the allowlist / behavior vars) as in the Org Bot steps above. another gateway start ``` -------------------------------- ### Example Response for List Recordings Source: https://developer.ro.am/docs/roam-api/list-recordings.md This is an example of a successful response when listing recordings. It includes a list of recordings with their details and a cursor for pagination. ```json { "recordings": [ { "recordingId": "9003ec0e-ea7d-41b4-93cf-ef42d730f771", "location": "Conference Room A", "startTime": "2026-01-21T14:10:54Z", "endTime": "2026-01-21T15:12:27Z", "videoUrl": "https://ro.am/recordings/video/9003ec0e-ea7d-41b4-93cf-ef42d730f771.mp4?pwd=abc123" }, { "recordingId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "location": "Huddle Space", "startTime": "2026-01-21T10:00:00Z", "endTime": "2026-01-21T10:45:00Z", "videoUrl": "https://ro.am/recordings/video/a1b2c3d4-e5f6-7890-abcd-ef1234567890.mp4?pwd=def456" } ], "nextCursor": "MjAyNi0wMS0yMVQxMDowMDowMC4wMDBa" } ``` -------------------------------- ### Successful Guest List Response Example Source: https://developer.ro.am/docs/onair-api/onair-guest-list Example of a successful JSON response containing a list of guests and a pagination cursor. ```json { "guests": [ { "id": "gst_xyz789", "eventId": "evt_abc123", "email": "alice@example.com", "name": "Alice Johnson", "status": "going", "created": "2026-03-15T10:00:00Z", "updated": "2026-03-15T12:00:00Z" } ], "nextCursor": "eyJpZCI6ImdzdF94eXo3ODkifQ" } ``` -------------------------------- ### Example User List Response Source: https://developer.ro.am/docs/chat-api/user-list.md This is an example of a successful response when retrieving a list of users. It includes user details and a pagination cursor. ```json { "users": [ { "id": "U-709b8a57-70bc-427a-b6f0-b16ba5297f8c", "name": "Alex Chen", "imageUrl": "https://ro.am/card-images/7be550c0-6994-4b8f-9a41-48825c6fc62a", "email": "alex.chen@example.com", "isAdmin": false, "status": "checkedIn" }, { "id": "U-af6663d5-0f37-4105-95df-4fea20ef7c7c", "name": "Jordan Smith", "imageUrl": "https://ro.am/card-images/41b2a910-e37f-4ffb-9cdd-5be7d05e9f6f", "email": "jordan.smith@example.com", "isAdmin": true, "status": "checkedOut" }, { "id": "U-f589a8cb-78ac-493e-8719-0fa8a22f65e0", "name": "Taylor Williams", "imageUrl": "https://ro.am/photos/people/taylor-williams.png", "email": "taylor@example.com", "isAdmin": false, "status": "checkedIn" } ], "nextCursor": "546" } ``` -------------------------------- ### Install OpenClaw Roam Plugin Source: https://developer.ro.am/docs/integrations/openclaw.md Install the OpenClaw Roam channel plugin using the OpenClaw CLI. This command fetches and installs the necessary package for Roam integration. ```bash openclaw plugins install @roamhq/openclaw-roam ``` -------------------------------- ### Example Response Source: https://developer.ro.am/docs/chat-api/list-transcripts.md This is an example of a successful response when listing transcripts. It includes transcript metadata and a pagination cursor. ```json { "transcripts": [ { "id": "f9274881-c48f-4838-865d-98140ea7016d", "meetingId": "dde68f39-3eb0-42ef-9873-511509c8764f", "start": "2026-01-21T17:32:39Z", "end": "2026-01-21T17:48:04Z", "participants": [ { "name": "Alex Chen", "email": "alex.chen@example.com", "user": "U-0cc74785-e31e-4403-aa5e-0cc7c1897e66" }, { "name": "Jordan Smith", "email": "jordan.smith@example.com", "user": "U-6a897aa3-0cab-4ba4-a48b-4be14a9585d0" } ] }, { "id": "59bbf979-ec0a-4cd7-a29b-d09bced32819", "meetingId": "419479dd-b506-4fa4-bd04-e1b871309fe9", "start": "2026-01-21T17:29:13Z", "end": "2026-01-21T17:32:39Z", "participants": [ { "name": "Alex Chen", "email": "alex.chen@example.com", "user": "U-0cc74785-e31e-4403-aa5e-0cc7c1897e66" }, { "name": "Taylor Williams", "email": "taylor@example.com", "user": "U-6a897aa3-0cab-4ba4-a48b-4be14a9585d0" } ] } ], "nextCursor": "MjAyNi0wMS0yMVQxNzoyODo1OS4wMDBa" } ``` -------------------------------- ### Example 200 OK Response Source: https://developer.ro.am/docs/chat-api/meetinglink-info.md A successful response includes the meeting link's ID, name, host email, optional start and end times, and the meeting URL. ```json { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Q1 Planning Session", "host": "alex.chen@example.com", "start": "2026-02-15T14:00:00Z", "end": "2026-02-15T15:00:00Z", "url": "https://ro.am/r/#/d/abc123xyz/def456uvw" } ``` -------------------------------- ### Example Response for Listing Groups Source: https://developer.ro.am/docs/roam-api/list-groups.md This is an example of the JSON response you will receive when successfully listing groups. It includes details for each group. ```json [ { "addressId": "88bebce7-6cbb-4666-96f9-5c02d73e6661", "roamId": 12345, "accountId": 67890, "groupType": "roam", "name": "All Hands", "accessMode": "public", "groupManagement": "groupAdminsOnly", "enforceThreadedMode": false, "dateCreated": "2025-01-15T10:00:00Z", "imageUrl": "https://ro.am/card-images/88bebce7-6cbb-4666-96f9-5c02d73e6661" }, { "addressId": "c6040d77-a61c-4834-a939-fe3e687ffd72", "roamId": 12345, "accountId": 67890, "groupType": "group", "name": "Engineering Team", "accessMode": "public", "groupManagement": "allMembers", "enforceThreadedMode": true, "dateCreated": "2025-02-20T14:30:00Z", "imageUrl": "https://ro.am/card-images/c6040d77-a61c-4834-a939-fe3e687ffd72" } ] ``` -------------------------------- ### Example Meeting Link Creation Request Source: https://developer.ro.am/docs/chat-api/meetinglink-create.md Send this JSON payload to create a new meeting link. Specify the meeting name, host email, and optional start and end times. ```json { "name": "Q1 Planning Session", "host": "alex.chen@example.com", "start": "2026-02-15T14:00:00Z", "end": "2026-02-15T15:00:00Z" } ``` -------------------------------- ### Authorization Header Example Source: https://developer.ro.am/docs/onair-api/onair-event-cancel Example of how to format the Authorization header for API requests using a Bearer token. ```http Authorization: Bearer ``` -------------------------------- ### Example Response for 200 OK Source: https://developer.ro.am/docs/chat-api/group-members.md This is an example of a successful response when retrieving group members. It includes a list of members and a pagination cursor. ```json { "members": [ "U-709b8a57-70bc-427a-b6f0-b16ba5297f8c", "U-af6663d5-0f37-4105-95df-4fea20ef7c7c", "U-f589a8cb-78ac-493e-8719-0fa8a22f65e0" ], "nextCursor": "abc123" } ``` -------------------------------- ### Install Hermes Roam Plugin Source: https://developer.ro.am/docs/integrations/hermes.md Install the Hermes Roam plugin from its Git repository. This command clones the plugin and prompts for necessary credentials, saving them to `~/.hermes/.env`. ```bash hermes plugins install WonderInventions/hermes-roam ``` -------------------------------- ### Example Successful Response Source: https://developer.ro.am/docs/chat-api/token-info.md This is an example of a successful response from the `/token.info` endpoint, showing the bot's chat address, granted scopes, and Roam workspace details. ```json { "addr": "B-b893c426-6d54-4d9a-8e71-6bd53b26124e", "scopes": [ "chat:read", "chat:send_message", "user:read", "user:read.email" ], "roam": { "id": "12QJUIKR29", "name": "Acme Corp", "imageUrl": "https://ro.am/card-images/b5313458-1363-4832-a408-deaf740ad014", "iconUrl": "https://ro.am/card-images/08705e4f-7e32-4a5f-8f57-39e24eaadcbd" } } ``` -------------------------------- ### Example Successful Response Source: https://developer.ro.am/docs/chat-api/item-upload.md This is an example of a successful response when an item is uploaded. It includes details like the item ID, type, and URL. ```json { "id": "019be84b-0fa8-788f-8850-96de4cc39130", "type": "photo", "created": "2026-01-21T10:30:00Z", "name": "screenshot.png", "url": "https://ro.am/card-images/019be84b-0fa8-7897-9b52-b064ddb3d185", "thumbnail": "https://ro.am/card-images/019be84b-0fa8-7897-9b52-b064ddb3d185", "size": 245678, "width": 1920, "height": 1080 } ``` -------------------------------- ### Example Successful Response Source: https://developer.ro.am/docs/chat-api/chat-list.md This is an example of a successful response when retrieving a list of chats. It includes chat details and a pagination cursor. ```json { "chats": [ { "id": "C-295155ae-7df5-4ed5-9ebc-89a170559c81", "started": "2025-12-13T05:07:54Z", "name": "Engineering Team", "group": "G-88bebce7-6cbb-4666-96f9-5c02d73e6661" }, { "id": "C-f2976612-ffdc-4240-8ff6-6dda54bc4917", "started": "2025-11-13T22:21:51Z", "name": "Sales Team", "group": "G-c6040d77-a61c-4834-a939-fe3e687ffd72" }, { "id": "D-53b8a72b-b442-4da2-94ea-41b6116c14ea", "started": "2025-10-18T23:29:25Z", "name": "Alex Chen" } ], "nextCursor": "1760830165105000" } ``` -------------------------------- ### Example Response for Subscription Source: https://developer.ro.am/docs/webhooks/webhook-subscribe.md This is an example of a successful response when a webhook subscription is created or updated. It includes the subscription ID, event, URL, and any applied filter. ```json { "id": "19c6401f-6d02-4d8c-87c5-9fc45f02f4b5", "event": "lobby.booked", "url": "https://example.com/hooks/lobby-booked", "filter": { "lobbyId": "L-12345" } } ``` -------------------------------- ### Verify Hermes Roam Plugin Installation Source: https://developer.ro.am/docs/integrations/hermes.md Confirm that the Roam plugin has been successfully installed and is enabled. This command should list the 'roam' plugin with its status. ```bash hermes plugins list | grep roam ``` -------------------------------- ### Install Roam Plugin for Org Profile Source: https://developer.ro.am/docs/integrations/hermes.md Install the Roam plugin specifically for the 'org' profile. This command prompts for Roam API credentials and enables the plugin for the profile. ```bash org plugins install WonderInventions/hermes-roam ``` -------------------------------- ### Fetch API Example (JavaScript) Source: https://developer.ro.am/docs/onair-api/onair-guest-list Demonstrates how to fetch the guest list using the Fetch API in JavaScript. Ensure you include the 'Accept' and 'Authorization' headers. ```javascript const myHeaders = new Headers(); myHeaders.append("Accept", "application/json"); myHeaders.append("Authorization", "Bearer "); const requestOptions = { method: "GET", headers: myHeaders, redirect: "follow" }; fetch("https://api.ro.am/v1/onair.guest.list", requestOptions) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); ``` -------------------------------- ### Verifying Bot Startup with Logs Source: https://developer.ro.am/docs/integrations/openclaw.md Example log output showing successful startup messages for multiple OpenClaw bots, including webhook monitors and bot personas for each configured account. This helps confirm that all bots are running correctly after a daemon restart. ```text [default] Roam webhook monitor starting [default] Roam webhooks subscribed [default] Roam bot persona: You (rmp-…) [orgbot] Roam webhook monitor starting [orgbot] Roam webhooks subscribed [orgbot] Roam bot persona: OnCallBot (rmk-…) ``` -------------------------------- ### Configuration for Multiple Bots Source: https://developer.ro.am/docs/integrations/openclaw.md Example configuration showing how to set up multiple accounts (Personal Bot, Org Bot, additional bots) and define bindings to specific agents. This allows running different bots with distinct workspaces and identities from a single OpenClaw instance. ```text channels.roam.accounts.default ↠Personal Bot (rmp-…) channels.roam.accounts.orgbot ↠Org Bot (rmk-…) channels.roam.accounts. ↠additional bot bindings: [ { match: { channel: "roam", accountId: "orgbot" }, agentId: "orgbot" }, { match: { channel: "roam", accountId: "anotherId" }, agentId: "another" }, // unbound accounts fall through to the default agent ] agents.list: [ { id: "main", default: true, workspace: "/Users/you/jarvis" }, { id: "orgbot", workspace: "/Users/you/openclaw-orgbot-agent", identity: {...} }, { id: "another", workspace: "/Users/you/another-agent", identity: {...} }, ] ``` -------------------------------- ### GET /v1/onair.event.list Source: https://developer.ro.am/docs/onair-api/onair-event-list Returns a paginated list of On-Air events for the organization, sorted by start time in descending order. Requires `onair:read` scope. ```APIDOC ## GET /v1/onair.event.list ### Description Retrieves a paginated list of On-Air events, sorted by start time in descending order. This endpoint is accessible by Organization and Personal users and requires the `onair:read` scope. ### Method GET ### Endpoint https://api.ro.am/v1/onair.event.list ### Query Parameters - **cursor** (string) - Optional - Pagination cursor from a previous response's `nextCursor`. - **limit** (integer) - Optional - Maximum number of events to return (default 50). ### Request Example ```json { "events": [ { "id": "evt_abc123", "title": "Q1 All Hands", "slug": "q1-all-hands", "start": "2026-04-01T14:00:00Z", "end": "2026-04-01T15:00:00Z", "timeZone": "America/New_York", "eventPageUrl": "https://ro.am/e/q1-all-hands", "enableSEO": true, "autoAdmit": false, "disableRSVP": false, "hosts": [] } ], "nextCursor": "eyJpZCI6ImV2dF9hYmMxMjMifQ" } ``` ### Response #### Success Response (200) A paginated list of events. - **events** (object[]) - Array of event objects. - **id** (string) - Required - Unique identifier of the event. - **title** (string) - Required - Title of the event. - **description** (string) - Description of the event. - **slug** (string) - Required - URL-friendly slug for the event. - **start** (string) - Required - Start time of the event (RFC 3339). - **end** (string) - Required - End time of the event (RFC 3339). - **timeZone** (string) - Required - IANA time zone identifier (e.g. `America/New_York`). - **eventPageUrl** (string) - Required - Public URL of the event page. - **joinLinkUrl** (string) - URL for joining the event. - **enableSEO** (boolean) - Required - Whether the event page is indexed by search engines. - **autoAdmit** (boolean) - Required - Whether guests are automatically admitted when they join. - **disableRSVP** (boolean) - Required - Whether RSVPs are disabled for this event. - **hosts** (object[]) - Required - List of hosts for the event. - **id** (string) - Required - Unique identifier of the host. - **name** (string) - Display name of the host. - **imageUrl** (string) - URL of the host's profile image. - **nextCursor** (string) - Cursor to fetch the next page. Absent when there are no more results. #### Response Example (200) ```json { "events": [ { "id": "evt_abc123", "title": "Q1 All Hands", "slug": "q1-all-hands", "start": "2026-04-01T14:00:00Z", "end": "2026-04-01T15:00:00Z", "timeZone": "America/New_York", "eventPageUrl": "https://ro.am/e/q1-all-hands", "enableSEO": true, "autoAdmit": false, "disableRSVP": false, "hosts": [] } ], "nextCursor": "eyJpZCI6ImV2dF9hYmMxMjMifQ" } ``` ### Error Handling - **400 Bad Request**: Returned for invalid input. - **401 Unauthorized**: Returned for invalid authentication credentials. - **500 Internal Server Error**: Returned for unexpected server errors. #### Error Response Example (400, 401, 500) ```json { "error": "string" } ``` ### Authorization **Type:** Bearer Token **Scheme:** bearer **Description:** Pass your API Key or OAuth access token as a Bearer token. **Example:** `Authorization: Bearer ` ``` -------------------------------- ### Get Event Info Example Source: https://developer.ro.am/onair.json Retrieves details for a specific On-Air event using its ID. This endpoint requires 'onair:read' scope and supports both Organization and Personal access. ```json { "id": "evt_abc123", "title": "Q1 All Hands", "description": "Quarterly company all-hands meeting" } ``` -------------------------------- ### Guest Details Response Example Source: https://developer.ro.am/docs/onair-api/onair-guest-info Example JSON response containing details for a specific guest, including ID, event ID, email, name, status, and timestamps. ```json { "id": "gst_xyz789", "eventId": "evt_abc123", "email": "alice@example.com", "name": "Alice Johnson", "status": "going", "created": "2026-03-15T10:00:00Z", "updated": "2026-03-15T12:00:00Z" } ``` -------------------------------- ### GET /chat.list Source: https://developer.ro.am/docs/chat-api/chat-list.md Lists all accessible chats, including DMs, MultiDMs, and Channels the bot is part of, as well as public groups. Results are paginated and ordered by chat start time. ```APIDOC ## GET /chat.list ### Description List all accessible chats, which consist of all DMs, MultiDMs, and Channels that your bot has been added to, in addition to all public groups regardless of membership. Chats are returned in reverse chronological order of the chat's start timestamp, so the first page of results contains the most recently started chats. **Access:** Organization only. **Required scope:** `chat:read` ### Method GET ### Endpoint `/chat.list` ### Parameters #### Query Parameters - **limit** (integer) - No - The number of chats to return per response. Default is 10. - **cursor** (string) - No - Opaque pagination cursor from a previous response's `nextCursor`. Do not construct cursors manually. ### Request Example (No request body for GET requests) ### Response #### Success Response (200) - **chats** (object[]) - No - An array of chat objects. **chats** (array item): - **id** (TaggedUUID) - Yes - The Chat ID - **started** (string) - Yes - Timestamp that the chat started - **group** (TaggedUUID) - No - The Group ID. Only present for channel chats (group conversations). Absent for DMs and Multi-DMs. - **name** (string) - Yes - Descriptive name for the chat, set as follows: Channel - the group name, DM - the name of the other party, Multi-DM, a comma separated list of all participant names. **TaggedUUID**: A UUID prefixed by a tag identifying the specific type of object. #### Example Response ```json { "chats": [ { "id": "C-295155ae-7df5-4ed5-9ebc-89a170559c81", "started": "2025-12-13T05:07:54Z", "name": "Engineering Team", "group": "G-88bebce7-6cbb-4666-96f9-5c02d73e6661" }, { "id": "C-f2976612-ffdc-4240-8ff6-6dda54bc4917", "started": "2025-11-13T22:21:51Z", "name": "Sales Team", "group": "G-c6040d77-a61c-4834-a939-fe3e687ffd72" }, { "id": "D-53b8a72b-b442-4da2-94ea-41b6116c14ea", "started": "2025-10-18T23:29:25Z", "name": "Alex Chen" } ], "nextCursor": "1760830165105000" } ``` ### Error Responses - **400** - Bad request. - **401** - Presented invalid authentication credentials. - **405** - An unsupported method was requested. - **500** - An internal error occured. ``` -------------------------------- ### SRE Bot System Prompt Example Source: https://developer.ro.am/docs/integrations/openclaw.md A starter system prompt for an SRE-style bot designed to investigate Datadog alerts within a Roam channel. It outlines the bot's role, investigation steps, and response format. ```text You are OpenClaw SRE, an on-call assistant living in a Roam channel. Every message in this channel is typically a Datadog alert. Your job is to investigate and report. When a new alert arrives: 1. Extract the monitor name, the failing condition, the affected service / host / tag(s), and the alert time window. 2. Investigate using the `datadog` MCP server: monitor details, metrics for the affected service around the alert time, related logs, recent deploys. 3. Reply with a concise, well-structured investigation: - **Summary** — one sentence: what's wrong and the likely cause. - **Evidence** — specific metric values, log excerpts, exact times. - **Suggested next steps** — what a human on-call would do next. 4. Keep replies tight. No filler. 5. If you can't form a hypothesis, say so plainly — list what you looked at. 6. If a message is clearly not an alert, respond only if you can help; otherwise stay silent. 7. Never claim a fix is applied. You investigate and report; humans act. When asked who you are, say you are OpenClaw SRE. ``` -------------------------------- ### Example Transcript Response JSON Source: https://developer.ro.am/docs/chat-api/get-transcript.md This JSON object represents a successful response from the Get Transcript API, containing details about a meeting, its participants, transcribed cues, and identified action items. ```json { "id": "f9274881-c48f-4838-865d-98140ea7016d", "meetingId": "dde68f39-3eb0-42ef-9873-511509c8764f", "start": "2026-01-21T17:32:39Z", "end": "2026-01-21T17:48:04Z", "participants": [ { "name": "Alex Chen", "email": "alex.chen@example.com", "user": "U-0cc74785-e31e-4403-aa5e-0cc7c1897e66" }, { "name": "Jordan Smith", "email": "jordan.smith@example.com", "user": "U-6a897aa3-0cab-4ba4-a48b-4be14a9585d0" } ], "summary": "The team discussed Q1 priorities and assigned action items for the upcoming product launch.", "cues": [ { "speaker": "Alex Chen", "text": "Good morning everyone. Let's review our Q1 priorities.", "startOffset": 0, "endOffset": 4500 }, { "speaker": "Jordan Smith", "text": "I've prepared the roadmap document. Should I share my screen?", "startOffset": 4500, "endOffset": 9200 }, { "speaker": "Alex Chen", "text": "Yes, please go ahead. We should also discuss the launch timeline.", "startOffset": 9200, "endOffset": 14000 } ], "actionItems": [ { "title": "Finalize roadmap document", "description": "Complete the Q1 roadmap with updated timelines and share with stakeholders.", "assignee": "U-6a897aa3-0cab-4ba4-a48b-4be14a9585d0" }, { "title": "Schedule launch planning meeting", "description": "Set up a follow-up meeting with the product team to finalize launch details.", "assignee": "U-0cc74785-e31e-4403-aa5e-0cc7c1897e66" } ] } ``` -------------------------------- ### Start Hermes Gateway and Monitor Logs Source: https://developer.ro.am/docs/integrations/hermes.md Initiate the Hermes gateway service and tail its log file to monitor connection status and webhook subscriptions. This is essential for verifying the integration is active and correctly configured. ```bash org gateway start tail -f ~/.hermes/profiles/org/logs/gateway.log | grep -i roam ``` -------------------------------- ### Example Group Creation Request Source: https://developer.ro.am/docs/chat-api/group-create.md This JSON payload demonstrates how to create a new group with specified members and admins. ```json { "name": "Engineering Team", "description": "Channel for engineering discussions and updates", "private": false, "enforceThreads": true, "members": [ "alex.chen@example.com", "taylor@example.com" ], "admins": [ "jordan.smith@example.com" ] } ``` -------------------------------- ### On-Air Event Created Webhook Payload Source: https://developer.ro.am/docs/webhooks/onair-event-created This is an example of the JSON payload received when an 'onair.event.created' webhook is triggered. It includes details about the event, its start and end times, timezone, URLs, and host information. ```json { "type": "onair.event.created", "event": { "id": "string", "title": "string", "description": "string", "slug": "string", "start": "2024-07-29T15:51:28.071Z", "end": "2024-07-29T15:51:28.071Z", "timeZone": "string", "eventPageUrl": "string", "joinLinkUrl": "string", "enableSEO": true, "autoAdmit": true, "disableRSVP": true, "hosts": [ { "id": "string", "name": "string", "imageUrl": "string" } ] } } ``` -------------------------------- ### Fetch Guest Info using JavaScript Fetch API Source: https://developer.ro.am/docs/onair-api/onair-guest-info Demonstrates how to make a GET request to the guest info endpoint using the JavaScript Fetch API. Includes setting headers for accept and authorization. ```javascript const myHeaders = new Headers(); myHeaders.append("Accept", "application/json"); myHeaders.append("Authorization", "Bearer "); const requestOptions = { method: "GET", headers: myHeaders, redirect: "follow" }; fetch("https://api.ro.am/v1/onair.guest.info", requestOptions) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); ``` -------------------------------- ### Example Request Body for Updating a Meeting Link Source: https://developer.ro.am/docs/chat-api/meetinglink-update.md This JSON object demonstrates the structure of a request to update a meeting link. It includes the meeting ID, a new name, and updated start and end times. ```json { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Q1 Planning Session - Updated", "start": "2026-02-15T15:00:00Z", "end": "2026-02-15T16:30:00Z" } ``` -------------------------------- ### Get Magicast Info Source: https://developer.ro.am/docs/roam-api/roam-hq-api Get a specific magicast by its ID. ```APIDOC ## GET /magicast.info ### Description Get a magicast by ID. ### Method GET ### Endpoint /magicast.info ### Query Parameters - **id** (string) - Required - The ID of the magicast to retrieve. ### Response (No specific schema provided in source) ``` -------------------------------- ### Example User Info Response Source: https://developer.ro.am/docs/chat-api/user-info.md This is a successful response (200 OK) for a user info request. It includes basic user details and optionally expanded fields like status and availability if requested and scoped correctly. ```json { "id": "U-709b8a57-70bc-427a-b6f0-b16ba5297f8c", "name": "Alex Chen", "imageUrl": "https://ro.am/card-images/7be550c0-6994-4b8f-9a41-48825c6fc62a", "email": "alex.chen@example.com", "isAdmin": false, "status": "checkedIn", "available": true } ``` -------------------------------- ### Get user info Source: https://developer.ro.am/docs/chat-api/roam-hq-chat-api-alpha Get detailed information about a single user. ```APIDOC ## GET /user.info ### Description Get detailed info about a single user. ### Method GET ### Endpoint /user.info ``` -------------------------------- ### Get access token info Source: https://developer.ro.am/docs/chat-api/roam-hq-chat-api-alpha Get information about the current access token. ```APIDOC ## GET /token.info ### Description Get info about the current access token. ### Method GET ### Endpoint /token.info ``` -------------------------------- ### Get meeting link details Source: https://developer.ro.am/docs/chat-api/roam-hq-chat-api-alpha Get details about a specific meeting link. ```APIDOC ## POST /meetinglink.info ### Description Get meeting link details. ### Method POST ### Endpoint /meetinglink.info ``` -------------------------------- ### Get transcript details Source: https://developer.ro.am/docs/chat-api/roam-hq-chat-api-alpha Get a full meeting transcript, including cues and action items. ```APIDOC ## GET /transcript.info ### Description Get full transcript with cues and action items. ### Method GET ### Endpoint /transcript.info ``` -------------------------------- ### Error Response Schema Example Source: https://developer.ro.am/docs/onair-api/onair-event-cancel Example JSON schema for error responses from the event cancellation API. ```json { "error": "string" } ``` -------------------------------- ### Example Response for Listing Magicasts Source: https://developer.ro.am/docs/roam-api/list-magicasts.md Shows the structure of a successful response when listing magicasts. Includes magicast details and a pagination cursor if more results are available. ```json { "magicasts": [ { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Q1 Product Launch Recap", "createdAt": "2026-03-20T14:30:00Z", "ownerId": "0cc74785-e31e-4403-aa5e-0cc7c1897e66", "coverImageUrl": "https://ro.am/assets/a1b2c3d4/thumbnail" }, { "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "name": "Weekly Standup Highlights", "createdAt": "2026-03-18T09:15:00Z", "ownerId": "6a897aa3-0cab-4ba4-a48b-4be14a9585d0", "coverImageUrl": "https://ro.am/assets/b2c3d4e5/thumbnail" } ], "nextCursor": "MjAyNi0wMy0xOFQwOToxNTowMC4wMDBa" } ``` -------------------------------- ### Deploy Approval Notification using Block Kit Source: https://developer.ro.am/docs/guides/block-kit.md This example demonstrates a complete deploy approval notification using various Block Kit elements like headers, sections, dividers, contexts, and action buttons. It also shows how to use the `color` parameter for a visual indicator. This snippet is a `curl` command for sending a JSON payload to the Roam API. ```bash curl -X POST https://api.ro.am/v0/chat.post \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "chat": "G-757dfe66-37b4-4772-baa5-8c86ec68c176", "blocks": [ { "type": "header", "text": { "type": "plain_text", "text": "Deploy Request: api-gateway v2.4.1" } }, { "type": "section", "text": { "type": "mrkdwn", "text": "*Environment:* Production\n*Branch:* `main`\n*Commit:* `a1b2c3d` — Fix rate limiting edge case" }, "accessory": { "type": "button", "text": { "type": "plain_text", "text": "View Diff" }, "url": "https://github.com/example/api-gateway/compare/v2.4.0...v2.4.1" } }, { "type": "divider" }, { "type": "context", "elements": [ { "type": "mrkdwn", "text": "Requested by *@alice* · All CI checks passing" } ] }, { "type": "actions", "elements": [ { "type": "button", "text": { "type": "plain_text", "text": "Approve" }, "action_id": "deploy_approve", "value": "api-gateway-v2.4.1", "style": "primary" }, { "type": "button", "text": { "type": "plain_text", "text": "Reject" }, "action_id": "deploy_reject", "value": "api-gateway-v2.4.1", "style": "danger" } ] } ], "color": "#5B3FD9" }' ``` -------------------------------- ### Example Response Body for Transcript Prompt Source: https://developer.ro.am/docs/chat-api/prompt-transcript.md This is an example of a successful response containing the AI-generated answer to your prompt. ```json { "response": "Alex was assigned two action items: (1) Finalize the roadmap document with updated timelines and share with stakeholders, and (2) Schedule a launch planning meeting with the product team." } ``` -------------------------------- ### GET /magicast.info Source: https://developer.ro.am/llms.txt Fetches detailed information about a specific magicast. This endpoint is used to get more details on a single magicast. ```APIDOC ## GET /magicast.info ### Description Fetches detailed information about a specific magicast. This endpoint is used to get more details on a single magicast. ### Method GET ### Endpoint /magicast.info ### Parameters #### Query Parameters - **magicast_id** (string) - Required - The ID of the magicast to retrieve information for. ``` -------------------------------- ### Example Request Body for Creating an Event Source: https://developer.ro.am/docs/onair-api/onair-event-create This JSON object demonstrates the required and optional fields for creating a new On-Air event, including event details and host information. ```json { "title": "Q1 All Hands", "description": "Quarterly company all-hands meeting", "calendarHostEmail": "jane@example.com", "hosts": [ { "name": "Jane Smith", "imageUrl": "https://example.com/jane.jpg" } ], "start": "2026-04-01T14:00:00Z", "end": "2026-04-01T15:00:00Z", "timeZone": "America/New_York", "enableSEO": true, "autoAdmit": false, "disableRSVP": false } ``` -------------------------------- ### GET /onair.event.info Source: https://developer.ro.am/llms.txt Retrieves information about a specific On-Air event. This endpoint is used to get details about a scheduled or ongoing event. ```APIDOC ## GET /onair.event.info ### Description Retrieves information about a specific On-Air event. This endpoint is used to get details about a scheduled or ongoing event. ### Method GET ### Endpoint /onair.event.info ### Parameters #### Query Parameters - **event_id** (string) - Required - The ID of the event to retrieve information for. ``` -------------------------------- ### API Authentication Example Source: https://developer.ro.am/docs/chat-api/group-archive.md Include your API key in the Authorization header for authentication. ```http Authorization: Bearer YOUR_API_KEY ``` -------------------------------- ### GET /addr.info Source: https://developer.ro.am/docs/chat-api/addr-info.md Get information about a chat address, which is the name for any entity that may participate in a chat, such as a user, visitor, or bot. ```APIDOC ## GET /addr.info ### Description Get information about a chat address, which is the name for any entity that may participate in a chat, such as a user, visitor, or bot. **Access:** Organization only. **Required scope:** `chat:read` ### Method GET ### Endpoint /addr.info ### Parameters #### Query Parameters - **addr** (TaggedUUID) - Optional - The chat address to fetch information for. ### Responses #### Success Response (200) Info retrieved successfully #### Error Responses - **400** - Bad request. - **401** - Presented invalid authentication credentials. - **405** - An unsupported method was requested. - **500** - An internal error occured. ```