Messages
Create a message
Create a new message in a conversation
POST
/
api
/
v1
/
messaging
/
conversations
/
{conversation_id}
/
messages
Create a message
curl --request POST \
--url https://api.fluid.app/api/v1/messaging/conversations/{conversation_id}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"message": {
"body": "Can someone restock the Scranton Branch Mugs before the client visit at 3?",
"type": "DirectMessage"
}
}
'import requests
url = "https://api.fluid.app/api/v1/messaging/conversations/{conversation_id}/messages"
payload = { "message": {
"body": "Can someone restock the Scranton Branch Mugs before the client visit at 3?",
"type": "DirectMessage"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
message: {
body: JSON.stringify('Can someone restock the Scranton Branch Mugs before the client visit at 3?'),
type: 'DirectMessage'
}
})
};
fetch('https://api.fluid.app/api/v1/messaging/conversations/{conversation_id}/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.fluid.app/api/v1/messaging/conversations/{conversation_id}/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([
'message' => [
'body' => 'Can someone restock the Scranton Branch Mugs before the client visit at 3?',
'type' => 'DirectMessage'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.fluid.app/api/v1/messaging/conversations/{conversation_id}/messages"
payload := strings.NewReader("{\n \"message\": {\n \"body\": \"Can someone restock the Scranton Branch Mugs before the client visit at 3?\",\n \"type\": \"DirectMessage\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.fluid.app/api/v1/messaging/conversations/{conversation_id}/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"message\": {\n \"body\": \"Can someone restock the Scranton Branch Mugs before the client visit at 3?\",\n \"type\": \"DirectMessage\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v1/messaging/conversations/{conversation_id}/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message\": {\n \"body\": \"Can someone restock the Scranton Branch Mugs before the client visit at 3?\",\n \"type\": \"DirectMessage\"\n }\n}"
response = http.request(request)
puts response.read_body{
"attachments": [],
"body": "Can someone restock the Scranton Branch Mugs before the client visit at 3?",
"conversation_id": 7731,
"created_at": "2026-09-15T13:20:48Z",
"deleted_at": null,
"edited_at": null,
"emoji_only_count": 0,
"id": 90457,
"mentioned_recipients": [],
"metadata": {
"client_message_id": null
},
"pinned": false,
"reaction": null,
"reaction_stats": null,
"replied_to_message": null,
"seen_by": [],
"seen_by_count": 0,
"sender_recipient": {
"avatar_background": "4F46E5",
"blocked": false,
"blocker": false,
"discarded_at": null,
"first_name": "Dwight",
"id": 48217,
"image_url": "https://cdn.fluid.app/avatars/dunder-mifflin/dwight-schrute.jpg",
"last_name": "Schrute",
"pro_user": false
},
"sent_at": "2026-09-15T13:20:48Z",
"status": "sent",
"type": "DirectMessage",
"updated_at": "2026-09-15T13:20:48Z"
}{
"message": "<string>"
}Authorizations
Bearer token authentication
Path Parameters
Response
Success
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Any valid JSON value for provider, integration, theme, metadata, or other dynamic payloads whose keys are not fixed by the API contract.
Any valid JSON value for provider, integration, theme, metadata, or other dynamic payloads whose keys are not fixed by the API contract.
Any valid JSON value for provider, integration, theme, metadata, or other dynamic payloads whose keys are not fixed by the API contract.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
⌘I
Create a message
curl --request POST \
--url https://api.fluid.app/api/v1/messaging/conversations/{conversation_id}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"message": {
"body": "Can someone restock the Scranton Branch Mugs before the client visit at 3?",
"type": "DirectMessage"
}
}
'import requests
url = "https://api.fluid.app/api/v1/messaging/conversations/{conversation_id}/messages"
payload = { "message": {
"body": "Can someone restock the Scranton Branch Mugs before the client visit at 3?",
"type": "DirectMessage"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
message: {
body: JSON.stringify('Can someone restock the Scranton Branch Mugs before the client visit at 3?'),
type: 'DirectMessage'
}
})
};
fetch('https://api.fluid.app/api/v1/messaging/conversations/{conversation_id}/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.fluid.app/api/v1/messaging/conversations/{conversation_id}/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([
'message' => [
'body' => 'Can someone restock the Scranton Branch Mugs before the client visit at 3?',
'type' => 'DirectMessage'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.fluid.app/api/v1/messaging/conversations/{conversation_id}/messages"
payload := strings.NewReader("{\n \"message\": {\n \"body\": \"Can someone restock the Scranton Branch Mugs before the client visit at 3?\",\n \"type\": \"DirectMessage\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.fluid.app/api/v1/messaging/conversations/{conversation_id}/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"message\": {\n \"body\": \"Can someone restock the Scranton Branch Mugs before the client visit at 3?\",\n \"type\": \"DirectMessage\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v1/messaging/conversations/{conversation_id}/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message\": {\n \"body\": \"Can someone restock the Scranton Branch Mugs before the client visit at 3?\",\n \"type\": \"DirectMessage\"\n }\n}"
response = http.request(request)
puts response.read_body{
"attachments": [],
"body": "Can someone restock the Scranton Branch Mugs before the client visit at 3?",
"conversation_id": 7731,
"created_at": "2026-09-15T13:20:48Z",
"deleted_at": null,
"edited_at": null,
"emoji_only_count": 0,
"id": 90457,
"mentioned_recipients": [],
"metadata": {
"client_message_id": null
},
"pinned": false,
"reaction": null,
"reaction_stats": null,
"replied_to_message": null,
"seen_by": [],
"seen_by_count": 0,
"sender_recipient": {
"avatar_background": "4F46E5",
"blocked": false,
"blocker": false,
"discarded_at": null,
"first_name": "Dwight",
"id": 48217,
"image_url": "https://cdn.fluid.app/avatars/dunder-mifflin/dwight-schrute.jpg",
"last_name": "Schrute",
"pro_user": false
},
"sent_at": "2026-09-15T13:20:48Z",
"status": "sent",
"type": "DirectMessage",
"updated_at": "2026-09-15T13:20:48Z"
}{
"message": "<string>"
}