curl --request POST \
--url https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"text": "<string>",
"confirm": true,
"threadName": "<string>"
}
'import requests
url = "https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages"
payload = {
"text": "<string>",
"confirm": True,
"threadName": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>', confirm: true, threadName: '<string>'})
};
fetch('https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'text' => '<string>',
'confirm' => true,
'threadName' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages"
payload := strings.NewReader("{\n \"text\": \"<string>\",\n \"confirm\": true,\n \"threadName\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\",\n \"confirm\": true,\n \"threadName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\",\n \"confirm\": true,\n \"threadName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"createTime": "<string>",
"text": "<string>",
"sender": {
"name": "<string>",
"displayName": "<string>",
"type": "<string>"
},
"thread": {
"name": "<string>"
}
}{
"error": "invalid_request",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
],
"message": "<string>",
"capability": "<string>"
}{
"error": "unauthorized"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Send a message to an existing Google Chat space or direct message
Posts one text message as the member after explicit user confirmation. It cannot create a space or start a new direct message. Never automatically retry an uncertain send. Uses only the calling member’s selected connected Google account and requires the Google Chat permission on the Google Workspace connector.
curl --request POST \
--url https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"text": "<string>",
"confirm": true,
"threadName": "<string>"
}
'import requests
url = "https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages"
payload = {
"text": "<string>",
"confirm": True,
"threadName": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({text: '<string>', confirm: true, threadName: '<string>'})
};
fetch('https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'text' => '<string>',
'confirm' => true,
'threadName' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages"
payload := strings.NewReader("{\n \"text\": \"<string>\",\n \"confirm\": true,\n \"threadName\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"text\": \"<string>\",\n \"confirm\": true,\n \"threadName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/capabilities/google-workspace/chat-spaces/{spaceId}/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"text\": \"<string>\",\n \"confirm\": true,\n \"threadName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"createTime": "<string>",
"text": "<string>",
"sender": {
"name": "<string>",
"displayName": "<string>",
"type": "<string>"
},
"thread": {
"name": "<string>"
}
}{
"error": "invalid_request",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
],
"message": "<string>",
"capability": "<string>"
}{
"error": "unauthorized"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
Organization API key passed as the x-api-key header. The raw key is the header value; do not prefix it with Bearer.
Path Parameters
The ID after spaces/ in a space name, e.g. AAAA1234 for spaces/AAAA1234.
1 - 256^[A-Za-z0-9_-]+$Body
Plain message text, up to 4,096 characters.
1 - 4096True only after the user explicitly asked to send this message to this space. Finding the space or drafting the text is not send authorization.
Reply in this existing thread of the same space (a message's thread.name). Omit to start a new thread.
^spaces\/[A-Za-z0-9_-]+\/threads\/[A-Za-z0-9_-]+$Was this page helpful?