Send a message to a session
curl --request POST \
--url http://localhost:3000/api/messaging/sessions/{sessionId}/messages \
--header 'Content-Type: application/json' \
--data '
{
"content": "<string>",
"attachments": [
{
"type": "<string>",
"url": "<string>",
"name": "<string>"
}
],
"metadata": {}
}
'import requests
url = "http://localhost:3000/api/messaging/sessions/{sessionId}/messages"
payload = {
"content": "<string>",
"attachments": [
{
"type": "<string>",
"url": "<string>",
"name": "<string>"
}
],
"metadata": {}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
content: '<string>',
attachments: [{type: '<string>', url: '<string>', name: '<string>'}],
metadata: {}
})
};
fetch('http://localhost:3000/api/messaging/sessions/{sessionId}/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_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/api/messaging/sessions/{sessionId}/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([
'content' => '<string>',
'attachments' => [
[
'type' => '<string>',
'url' => '<string>',
'name' => '<string>'
]
],
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"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 := "http://localhost:3000/api/messaging/sessions/{sessionId}/messages"
payload := strings.NewReader("{\n \"content\": \"<string>\",\n \"attachments\": [\n {\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
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("http://localhost:3000/api/messaging/sessions/{sessionId}/messages")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"<string>\",\n \"attachments\": [\n {\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/api/messaging/sessions/{sessionId}/messages")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"content\": \"<string>\",\n \"attachments\": [\n {\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body// 404 - Session not found
{
"error": "Session not found",
"details": {
"sessionId": "abc-123"
}
}
// 410 - Session expired
{
"error": "Session has expired",
"details": {
"sessionId": "abc-123",
"expiresAt": "2024-01-15T10:30:00Z"
}
}
// 400 - Invalid content
{
"error": "Content exceeds maximum length of 4000 characters"
}
Session Messages
Send Session Message
Send a message to a conversation session with automatic renewal tracking
POST
/
api
/
messaging
/
sessions
/
{sessionId}
/
messages
Send a message to a session
curl --request POST \
--url http://localhost:3000/api/messaging/sessions/{sessionId}/messages \
--header 'Content-Type: application/json' \
--data '
{
"content": "<string>",
"attachments": [
{
"type": "<string>",
"url": "<string>",
"name": "<string>"
}
],
"metadata": {}
}
'import requests
url = "http://localhost:3000/api/messaging/sessions/{sessionId}/messages"
payload = {
"content": "<string>",
"attachments": [
{
"type": "<string>",
"url": "<string>",
"name": "<string>"
}
],
"metadata": {}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
content: '<string>',
attachments: [{type: '<string>', url: '<string>', name: '<string>'}],
metadata: {}
})
};
fetch('http://localhost:3000/api/messaging/sessions/{sessionId}/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_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/api/messaging/sessions/{sessionId}/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([
'content' => '<string>',
'attachments' => [
[
'type' => '<string>',
'url' => '<string>',
'name' => '<string>'
]
],
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"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 := "http://localhost:3000/api/messaging/sessions/{sessionId}/messages"
payload := strings.NewReader("{\n \"content\": \"<string>\",\n \"attachments\": [\n {\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
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("http://localhost:3000/api/messaging/sessions/{sessionId}/messages")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"<string>\",\n \"attachments\": [\n {\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/api/messaging/sessions/{sessionId}/messages")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"content\": \"<string>\",\n \"attachments\": [\n {\n \"type\": \"<string>\",\n \"url\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body// 404 - Session not found
{
"error": "Session not found",
"details": {
"sessionId": "abc-123"
}
}
// 410 - Session expired
{
"error": "Session has expired",
"details": {
"sessionId": "abc-123",
"expiresAt": "2024-01-15T10:30:00Z"
}
}
// 400 - Invalid content
{
"error": "Content exceeds maximum length of 4000 characters"
}
Sending a message automatically updates the session’s last activity timestamp. If auto-renewal is enabled, the session will be renewed, extending its expiration time.
Path Parameters
string
required
The unique identifier of the session
Request Body
string
required
The message content (maximum 4000 characters)
object
Optional metadata to attach to the message
array
Optional array of attachments
Response
string
Unique identifier of the created message
string
The message content
string
UUID of the message author (user or agent)
string
ISO timestamp of message creation
object
Any metadata attached to the message
object
Error Responses
// 404 - Session not found
{
"error": "Session not found",
"details": {
"sessionId": "abc-123"
}
}
// 410 - Session expired
{
"error": "Session has expired",
"details": {
"sessionId": "abc-123",
"expiresAt": "2024-01-15T10:30:00Z"
}
}
// 400 - Invalid content
{
"error": "Content exceeds maximum length of 4000 characters"
}
Path Parameters
ID of the session
Body
application/json
Was this page helpful?
⌘I

