Skip to main content

Overview

The Chat service provides access to Google Chat v1 API for sending messages, managing spaces, and interacting with Chat apps. API: chat (v1)

Common Use Cases

  • Send messages to spaces
  • List and manage spaces
  • Create and manage chat apps
  • Upload attachments
  • Manage memberships

Helper Commands

+send

Send a plain text message to a space:
gws chat +send --space spaces/AAAAxxxx --text 'Deploy complete!'
Features:
  • Simple text messaging
  • For cards or threaded replies, use the raw API

Command Examples

List Spaces

gws chat spaces list
{
  "spaces": [
    {
      "name": "spaces/AAAAxxxx",
      "type": "ROOM",
      "displayName": "Engineering Team",
      "spaceThreadingState": "THREADED_MESSAGES"
    },
    {
      "name": "spaces/BBBByyyy",
      "type": "DM",
      "singleUserBotDm": false
    }
  ]
}

Get Space Details

gws chat spaces get --params '{"name": "spaces/AAAAxxxx"}'

Create a Space

gws chat spaces create --json '{
  "displayName": "Project Alpha",
  "spaceType": "SPACE"
}'

Send a Message

gws chat spaces messages create \
  --params '{"parent": "spaces/AAAAxxxx"}' \
  --json '{"text": "Hello, team!"}'
{
  "name": "spaces/AAAAxxxx/messages/MESSAGExxxx",
  "sender": {
    "name": "users/123456789",
    "displayName": "Alice Smith",
    "type": "HUMAN"
  },
  "text": "Hello, team!",
  "createTime": "2026-03-05T10:30:00.000Z",
  "thread": {"name": "spaces/AAAAxxxx/threads/THREADxxxx"}
}

Send a Card Message

gws chat spaces messages create \
  --params '{"parent": "spaces/AAAAxxxx"}' \
  --json '{
    "cardsV2": [
      {
        "cardId": "deploy-status",
        "card": {
          "header": {"title": "Deployment Status", "subtitle": "Production"},
          "sections": [
            {
              "widgets": [
                {"textParagraph": {"text": "✅ Deployment successful"}},
                {"buttonList": {
                  "buttons": [
                    {"text": "View Logs", "onClick": {"openLink": {"url": "https://logs.example.com"}}}
                  ]
                }}
              ]
            }
          ]
        }
      }
    ]
  }'

List Messages

gws chat spaces messages list --params '{"parent": "spaces/AAAAxxxx", "pageSize": 10}'

Update a Message

gws chat spaces messages patch \
  --params '{"name": "spaces/AAAAxxxx/messages/MESSAGExxxx", "updateMask": "text"}' \
  --json '{"text": "Updated message text"}'

Delete a Message

gws chat spaces messages delete --params '{"name": "spaces/AAAAxxxx/messages/MESSAGExxxx"}'

Manage Memberships

List members
gws chat spaces members list --params '{"parent": "spaces/AAAAxxxx"}'
Add member
gws chat spaces members create \
  --params '{"parent": "spaces/AAAAxxxx"}' \
  --json '{"member": {"name": "users/123456789", "type": "HUMAN"}}'
Remove member
gws chat spaces members delete --params '{"name": "spaces/AAAAxxxx/members/MEMBERxxxx"}'

Upload Attachment

gws chat media upload --params '{"parent": "spaces/AAAAxxxx"}' --upload ./image.png
Then reference the attachment in a message:
gws chat spaces messages create \
  --params '{"parent": "spaces/AAAAxxxx"}' \
  --json '{
    "text": "Check out this screenshot:",
    "attachment": [{"attachmentDataRef": {"resourceName": "ATTACHMENT_NAME"}}]
  }'

React to a Message

Add reaction
gws chat spaces messages reactions create \
  --params '{"parent": "spaces/AAAAxxxx/messages/MESSAGExxxx"}' \
  --json '{"emoji": {"unicode": "👍"}}'
List reactions
gws chat spaces messages reactions list --params '{"parent": "spaces/AAAAxxxx/messages/MESSAGExxxx"}'
Remove reaction
gws chat spaces messages reactions delete --params '{"name": "spaces/AAAAxxxx/messages/MESSAGExxxx/reactions/REACTIONxxxx"}'

Search Spaces

gws chat spaces search --params '{"query": "engineering"}'

Message Threading

Chat supports threaded conversations. When creating a message, you can:
  • Start a new thread (default)
  • Reply to an existing thread by passing thread.name
  • Use messageReplyOption to control fallback behavior
Reply to thread
gws chat spaces messages create \
  --params '{"parent": "spaces/AAAAxxxx", "messageReplyOption": "REPLY_MESSAGE_OR_FAIL"}' \
  --json '{"text": "Reply in thread", "thread": {"name": "spaces/AAAAxxxx/threads/THREADxxxx"}}'

Resources

  • spaces - Chat spaces (rooms, DMs)
  • spaces.messages - Messages in spaces
  • spaces.members - Space memberships
  • spaces.messages.reactions - Message reactions
  • spaces.messages.attachments - Message attachments
  • media - Upload media files
Use gws chat <resource> --help to see all available methods.

Gmail

Email communication

Calendar

Schedule meetings