string
Conversations
Reply to Conversation
Send a reply or add an internal note
POST
/
api
/
v1
/
conversations
/
{conversationId}
/
messages
Reply to Conversation
curl --request POST \
--url https://api.sequenzy.com/api/v1/conversations/{conversationId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>",
"subject": "<string>",
"bodyText": "<string>",
"bodyHtml": "<string>"
}
'import requests
url = "https://api.sequenzy.com/api/v1/conversations/{conversationId}/messages"
payload = {
"type": "<string>",
"subject": "<string>",
"bodyText": "<string>",
"bodyHtml": "<string>"
}
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({
type: '<string>',
subject: '<string>',
bodyText: '<string>',
bodyHtml: '<string>'
})
};
fetch('https://api.sequenzy.com/api/v1/conversations/{conversationId}/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.sequenzy.com/api/v1/conversations/{conversationId}/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([
'type' => '<string>',
'subject' => '<string>',
'bodyText' => '<string>',
'bodyHtml' => '<string>'
]),
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.sequenzy.com/api/v1/conversations/{conversationId}/messages"
payload := strings.NewReader("{\n \"type\": \"<string>\",\n \"subject\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"bodyHtml\": \"<string>\"\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.sequenzy.com/api/v1/conversations/{conversationId}/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"<string>\",\n \"subject\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"bodyHtml\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/conversations/{conversationId}/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 \"type\": \"<string>\",\n \"subject\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"bodyHtml\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": {
"id": "msg_new123",
"conversationId": "conv_abc123",
"type": "outbound",
"subject": "Re: A quick update",
"bodyText": "Happy to help! Let me know if you have other questions.",
"bodyHtml": null,
"fromEmail": "support@example.com",
"fromName": null,
"fromUserId": "user_abc123",
"attachments": [],
"isRead": true,
"createdAt": "2026-06-11T10:00:00.000Z",
"deliveryStatus": "pending"
}
}
{
"error": "Message body is required"
}
{
"success": false,
"error": "Unauthorized"
}
{
"error": "Conversation not found"
}
{
"error": "Failed to create message"
}
Send an email reply to the subscriber or add an internal team note. Replies are queued for delivery and reopen closed conversations. Notes are only visible to your team and do not reopen conversations.
Request
string
required
Conversation ID.
string
Message type:
outbound sends an email reply (default), note adds an
internal note.string
Message subject. Defaults to the conversation subject.
Plain text body. Outbound messages require
bodyText or bodyHtml.string
HTML body. Outbound messages require
bodyText or bodyHtml.curl -X POST "https://api.sequenzy.com/api/v1/conversations/conv_abc123/messages" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"bodyText": "Happy to help! Let me know if you have other questions."}'
Responses
{
"success": true,
"message": {
"id": "msg_new123",
"conversationId": "conv_abc123",
"type": "outbound",
"subject": "Re: A quick update",
"bodyText": "Happy to help! Let me know if you have other questions.",
"bodyHtml": null,
"fromEmail": "support@example.com",
"fromName": null,
"fromUserId": "user_abc123",
"attachments": [],
"isRead": true,
"createdAt": "2026-06-11T10:00:00.000Z",
"deliveryStatus": "pending"
}
}
{
"error": "Message body is required"
}
{
"success": false,
"error": "Unauthorized"
}
{
"error": "Conversation not found"
}
{
"error": "Failed to create message"
}
⌘I
Reply to Conversation
curl --request POST \
--url https://api.sequenzy.com/api/v1/conversations/{conversationId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>",
"subject": "<string>",
"bodyText": "<string>",
"bodyHtml": "<string>"
}
'import requests
url = "https://api.sequenzy.com/api/v1/conversations/{conversationId}/messages"
payload = {
"type": "<string>",
"subject": "<string>",
"bodyText": "<string>",
"bodyHtml": "<string>"
}
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({
type: '<string>',
subject: '<string>',
bodyText: '<string>',
bodyHtml: '<string>'
})
};
fetch('https://api.sequenzy.com/api/v1/conversations/{conversationId}/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.sequenzy.com/api/v1/conversations/{conversationId}/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([
'type' => '<string>',
'subject' => '<string>',
'bodyText' => '<string>',
'bodyHtml' => '<string>'
]),
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.sequenzy.com/api/v1/conversations/{conversationId}/messages"
payload := strings.NewReader("{\n \"type\": \"<string>\",\n \"subject\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"bodyHtml\": \"<string>\"\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.sequenzy.com/api/v1/conversations/{conversationId}/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"<string>\",\n \"subject\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"bodyHtml\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/conversations/{conversationId}/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 \"type\": \"<string>\",\n \"subject\": \"<string>\",\n \"bodyText\": \"<string>\",\n \"bodyHtml\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": {
"id": "msg_new123",
"conversationId": "conv_abc123",
"type": "outbound",
"subject": "Re: A quick update",
"bodyText": "Happy to help! Let me know if you have other questions.",
"bodyHtml": null,
"fromEmail": "support@example.com",
"fromName": null,
"fromUserId": "user_abc123",
"attachments": [],
"isRead": true,
"createdAt": "2026-06-11T10:00:00.000Z",
"deliveryStatus": "pending"
}
}
{
"error": "Message body is required"
}
{
"success": false,
"error": "Unauthorized"
}
{
"error": "Conversation not found"
}
{
"error": "Failed to create message"
}