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
The unique identifier of the session
Request Body
The message content (maximum 4000 characters)
Optional metadata to attach to the message
Optional array of attachments
Response
Unique identifier of the created message
The message content
UUID of the message author (user or agent)
ISO timestamp of message creation
Any metadata attached to the message
Current session status after sending the message
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

