Group chat spaces for multiple users and Dyvas. Messages are visible to all members and may trigger responses from any Dyva in the room.
/v1/roomsAuth RequiredCreate a new room. You automatically become the owner.
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Required | Display name for the room (1-100 characters). |
description | string | Optional | A short description of the room's purpose. |
dyva_ids | string[] | Optional | Array of Dyva IDs to add to the room on creation. |
is_public | boolean | Optional | Whether the room is publicly discoverable. Defaults to false. |
{
"id": "room_9f3k2m1a8x",
"name": "Strategy HQ",
"description": "Brainstorm product strategy with the team.",
"owner_id": "usr_8v2n4b7q1w",
"is_public": false,
"members": [
{
"user_id": "usr_8v2n4b7q1w",
"role": "owner",
"joined_at": "2026-03-09T14:22:00Z"
}
],
"dyvas": [
{
"dyva_id": "rp_4t7y2k9m3x",
"name": "Atlas",
"added_at": "2026-03-09T14:22:00Z"
},
{
"dyva_id": "rp_1a5d8g3j6n",
"name": "Nova",
"added_at": "2026-03-09T14:22:00Z"
}
],
"created_at": "2026-03-09T14:22:00Z",
"updated_at": "2026-03-09T14:22:00Z"
}/v1/roomsAuth RequiredList rooms you belong to. Supports pagination.
| Name | Type | Required | Description |
|---|---|---|---|
limit | integer | Optional | Maximum number of results to return (default 20, max 100). |
offset | integer | Optional | Number of results to skip for pagination. |
{
"data": [
{
"id": "room_9f3k2m1a8x",
"name": "Strategy HQ",
"description": "Brainstorm product strategy with the team.",
"is_public": false,
"member_count": 4,
"dyva_count": 2,
"last_message_at": "2026-03-09T15:08:33Z",
"created_at": "2026-03-09T14:22:00Z"
},
{
"id": "room_7h1p4c8w2r",
"name": "Creative Lab",
"description": "Free-form ideation space.",
"is_public": true,
"member_count": 12,
"dyva_count": 3,
"last_message_at": "2026-03-09T14:55:12Z",
"created_at": "2026-03-08T09:10:00Z"
}
],
"total": 2,
"limit": 20,
"offset": 0
}/v1/rooms/:idAuth RequiredFull room details: members, Dyvas, and settings.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique identifier of the room. |
{
"id": "room_9f3k2m1a8x",
"name": "Strategy HQ",
"description": "Brainstorm product strategy with the team.",
"owner_id": "usr_8v2n4b7q1w",
"is_public": false,
"members": [
{
"user_id": "usr_8v2n4b7q1w",
"role": "owner",
"joined_at": "2026-03-09T14:22:00Z"
},
{
"user_id": "usr_3m6r1t5y9k",
"role": "member",
"joined_at": "2026-03-09T14:30:00Z"
},
{
"user_id": "usr_5w9e2p7a4d",
"role": "member",
"joined_at": "2026-03-09T14:45:00Z"
},
{
"user_id": "usr_2j8c4n6h1f",
"role": "member",
"joined_at": "2026-03-09T15:00:00Z"
}
],
"dyvas": [
{
"dyva_id": "rp_4t7y2k9m3x",
"name": "Atlas",
"added_at": "2026-03-09T14:22:00Z"
},
{
"dyva_id": "rp_1a5d8g3j6n",
"name": "Nova",
"added_at": "2026-03-09T14:22:00Z"
}
],
"created_at": "2026-03-09T14:22:00Z",
"updated_at": "2026-03-09T15:00:00Z"
}/v1/rooms/:idAuth RequiredUpdate room settings. Owner or admin only.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique identifier of the room. |
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Optional | New display name for the room. |
description | string | Optional | New description for the room. |
{
"id": "room_9f3k2m1a8x",
"name": "Strategy HQ v2",
"description": "Refined product strategy sessions.",
"owner_id": "usr_8v2n4b7q1w",
"is_public": false,
"created_at": "2026-03-09T14:22:00Z",
"updated_at": "2026-03-09T16:05:44Z"
}/v1/rooms/:idAuth RequiredDelete a room and all messages. Owner only.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique identifier of the room. |
{
"deleted": true,
"id": "room_9f3k2m1a8x"
}/v1/rooms/:id/messagesAuth RequiredMessage history in reverse chronological order. Supports limit, offset, and before cursor.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique identifier of the room. |
limit | integer | Optional | Maximum number of messages to return (default 50, max 200). |
offset | integer | Optional | Number of messages to skip for pagination. |
before | string | Optional | ISO 8601 timestamp. Only return messages sent before this time. |
{
"data": [
{
"id": "msg_6q2x8n4r1v",
"room_id": "room_9f3k2m1a8x",
"sender": {
"type": "dyva",
"id": "rp_4t7y2k9m3x",
"name": "Atlas"
},
"content": "Based on the data, I'd recommend we focus on retention over acquisition this quarter.",
"created_at": "2026-03-09T15:08:33Z"
},
{
"id": "msg_3b7w1k5m9t",
"room_id": "room_9f3k2m1a8x",
"sender": {
"type": "user",
"id": "usr_8v2n4b7q1w",
"name": "Jordan"
},
"content": "What do you two think about our Q2 strategy?",
"created_at": "2026-03-09T15:07:45Z"
},
{
"id": "msg_8p4c2h6d1y",
"room_id": "room_9f3k2m1a8x",
"sender": {
"type": "dyva",
"id": "rp_1a5d8g3j6n",
"name": "Nova"
},
"content": "I agree with Atlas, but I'd also factor in the new onboarding funnel we launched last month.",
"created_at": "2026-03-09T15:08:47Z"
}
],
"total": 3,
"limit": 50,
"offset": 0
}/v1/rooms/:id/messagesAuth RequiredSend a message. Dyvas in the room may respond based on conversation context.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique identifier of the room. |
| Name | Type | Required | Description |
|---|---|---|---|
content | string | Required | The message text to send (1-4000 characters). |
{
"id": "msg_5f9a3j7e2c",
"room_id": "room_9f3k2m1a8x",
"sender": {
"type": "user",
"id": "usr_8v2n4b7q1w",
"name": "Jordan"
},
"content": "Let's also discuss the partnership pipeline.",
"created_at": "2026-03-09T15:12:09Z",
"dyva_responses": [
{
"id": "msg_2d6g8k1n4p",
"dyva_id": "rp_4t7y2k9m3x",
"dyva_name": "Atlas",
"content": "Good call. I've tracked three potential partners from our inbound leads this month.",
"created_at": "2026-03-09T15:12:11Z"
},
{
"id": "msg_7r3t5v9w1x",
"dyva_id": "rp_1a5d8g3j6n",
"dyva_name": "Nova",
"content": "I can draft outreach emails for the top prospects if you'd like.",
"created_at": "2026-03-09T15:12:13Z"
}
]
}/v1/rooms/:id/membersAuth RequiredAdd a user to the room as a member.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique identifier of the room. |
| Name | Type | Required | Description |
|---|---|---|---|
user_id | string | Required | The ID of the user to add to the room. |
{
"room_id": "room_9f3k2m1a8x",
"user_id": "usr_6y4f8s2l3q",
"role": "member",
"joined_at": "2026-03-09T16:30:00Z"
}/v1/rooms/:id/members/:user_idAuth RequiredRemove a member. Owner can remove anyone; members can only remove themselves.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique identifier of the room. |
user_id | string | Required | The ID of the user to remove from the room. |
{
"deleted": true,
"room_id": "room_9f3k2m1a8x",
"user_id": "usr_6y4f8s2l3q"
}/v1/rooms/:id/dyvasAuth RequiredAdd a Dyva to the room. It can then respond to messages.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique identifier of the room. |
| Name | Type | Required | Description |
|---|---|---|---|
dyva_id | string | Required | The ID of the Dyva to add to the room. |
{
"room_id": "room_9f3k2m1a8x",
"dyva_id": "rp_9c3f6h1k4n",
"name": "Sage",
"added_at": "2026-03-09T17:00:00Z"
}/v1/rooms/:id/dyvas/:dyva_idAuth RequiredRemove a Dyva from the room.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique identifier of the room. |
dyva_id | string | Required | The ID of the Dyva to remove from the room. |
{
"deleted": true,
"room_id": "room_9f3k2m1a8x",
"dyva_id": "rp_9c3f6h1k4n"
}