Messages
Add a message to a conversation
Add a message from the agent to a conversation.
POST
/
conversations
/
{conversationId}
/
messages
Add a message from the agent to a conversation.
curl --request POST \
--url https://1-some-client.some-server.healvi-chat/third-party/v1/conversations/{conversationId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>",
"reference_id": 123,
"text": {
"content": "<string>"
},
"image": {
"caption": "<string>"
},
"video": {
"caption": "<string>"
},
"audio": {
"voice": true
},
"document": {
"filename": "<string>",
"caption": "<string>"
},
"location": {
"latitude": "<string>",
"longitude": "<string>",
"remaining_fields": "See location schema."
},
"contact": {
"name": {
"formatted_name": "<string>"
},
"remaining_fields": "See contact schema."
},
"file": {
"url": "<string>",
"mime_type": "<string>",
"size": 123,
"internal_uuid": "<string>"
}
}
'import requests
url = "https://1-some-client.some-server.healvi-chat/third-party/v1/conversations/{conversationId}/messages"
payload = {
"type": "<string>",
"reference_id": 123,
"text": { "content": "<string>" },
"image": { "caption": "<string>" },
"video": { "caption": "<string>" },
"audio": { "voice": True },
"document": {
"filename": "<string>",
"caption": "<string>"
},
"location": {
"latitude": "<string>",
"longitude": "<string>",
"remaining_fields": "See location schema."
},
"contact": {
"name": { "formatted_name": "<string>" },
"remaining_fields": "See contact schema."
},
"file": {
"url": "<string>",
"mime_type": "<string>",
"size": 123,
"internal_uuid": "<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>',
reference_id: 123,
text: {content: '<string>'},
image: {caption: '<string>'},
video: {caption: '<string>'},
audio: {voice: true},
document: {filename: '<string>', caption: '<string>'},
location: {
latitude: '<string>',
longitude: '<string>',
remaining_fields: 'See location schema.'
},
contact: {name: {formatted_name: '<string>'}, remaining_fields: 'See contact schema.'},
file: {url: '<string>', mime_type: '<string>', size: 123, internal_uuid: '<string>'}
})
};
fetch('https://1-some-client.some-server.healvi-chat/third-party/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://1-some-client.some-server.healvi-chat/third-party/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>',
'reference_id' => 123,
'text' => [
'content' => '<string>'
],
'image' => [
'caption' => '<string>'
],
'video' => [
'caption' => '<string>'
],
'audio' => [
'voice' => true
],
'document' => [
'filename' => '<string>',
'caption' => '<string>'
],
'location' => [
'latitude' => '<string>',
'longitude' => '<string>',
'remaining_fields' => 'See location schema.'
],
'contact' => [
'name' => [
'formatted_name' => '<string>'
],
'remaining_fields' => 'See contact schema.'
],
'file' => [
'url' => '<string>',
'mime_type' => '<string>',
'size' => 123,
'internal_uuid' => '<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://1-some-client.some-server.healvi-chat/third-party/v1/conversations/{conversationId}/messages"
payload := strings.NewReader("{\n \"type\": \"<string>\",\n \"reference_id\": 123,\n \"text\": {\n \"content\": \"<string>\"\n },\n \"image\": {\n \"caption\": \"<string>\"\n },\n \"video\": {\n \"caption\": \"<string>\"\n },\n \"audio\": {\n \"voice\": true\n },\n \"document\": {\n \"filename\": \"<string>\",\n \"caption\": \"<string>\"\n },\n \"location\": {\n \"latitude\": \"<string>\",\n \"longitude\": \"<string>\",\n \"remaining_fields\": \"See location schema.\"\n },\n \"contact\": {\n \"name\": {\n \"formatted_name\": \"<string>\"\n },\n \"remaining_fields\": \"See contact schema.\"\n },\n \"file\": {\n \"url\": \"<string>\",\n \"mime_type\": \"<string>\",\n \"size\": 123,\n \"internal_uuid\": \"<string>\"\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://1-some-client.some-server.healvi-chat/third-party/v1/conversations/{conversationId}/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"<string>\",\n \"reference_id\": 123,\n \"text\": {\n \"content\": \"<string>\"\n },\n \"image\": {\n \"caption\": \"<string>\"\n },\n \"video\": {\n \"caption\": \"<string>\"\n },\n \"audio\": {\n \"voice\": true\n },\n \"document\": {\n \"filename\": \"<string>\",\n \"caption\": \"<string>\"\n },\n \"location\": {\n \"latitude\": \"<string>\",\n \"longitude\": \"<string>\",\n \"remaining_fields\": \"See location schema.\"\n },\n \"contact\": {\n \"name\": {\n \"formatted_name\": \"<string>\"\n },\n \"remaining_fields\": \"See contact schema.\"\n },\n \"file\": {\n \"url\": \"<string>\",\n \"mime_type\": \"<string>\",\n \"size\": 123,\n \"internal_uuid\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://1-some-client.some-server.healvi-chat/third-party/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 \"reference_id\": 123,\n \"text\": {\n \"content\": \"<string>\"\n },\n \"image\": {\n \"caption\": \"<string>\"\n },\n \"video\": {\n \"caption\": \"<string>\"\n },\n \"audio\": {\n \"voice\": true\n },\n \"document\": {\n \"filename\": \"<string>\",\n \"caption\": \"<string>\"\n },\n \"location\": {\n \"latitude\": \"<string>\",\n \"longitude\": \"<string>\",\n \"remaining_fields\": \"See location schema.\"\n },\n \"contact\": {\n \"name\": {\n \"formatted_name\": \"<string>\"\n },\n \"remaining_fields\": \"See contact schema.\"\n },\n \"file\": {\n \"url\": \"<string>\",\n \"mime_type\": \"<string>\",\n \"size\": 123,\n \"internal_uuid\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 123,
"conversation_id": 123,
"user_id": 123,
"contents": [
"<unknown>"
],
"agent_reaction": "<string>",
"customer_reaction": "<string>",
"sent_at": "2023-01-01T12:00:00Z",
"reference": "<unknown>",
"latest_error": {
"id": 123,
"message_id": 123,
"original_message": "<string>",
"created_at": "2023-01-01T12:00:00Z"
},
"whatsapp_campaign": {
"id": 123,
"name": "<string>"
}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
application/json
ID of message within the same conversation this message is referring to.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Used when type is image / video / audio / document.
Show child attributes
Show child attributes
Response
200 - application/json
Success
A message within a conversation.
Show child attributes
Show child attributes
⌘I
Add a message from the agent to a conversation.
curl --request POST \
--url https://1-some-client.some-server.healvi-chat/third-party/v1/conversations/{conversationId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "<string>",
"reference_id": 123,
"text": {
"content": "<string>"
},
"image": {
"caption": "<string>"
},
"video": {
"caption": "<string>"
},
"audio": {
"voice": true
},
"document": {
"filename": "<string>",
"caption": "<string>"
},
"location": {
"latitude": "<string>",
"longitude": "<string>",
"remaining_fields": "See location schema."
},
"contact": {
"name": {
"formatted_name": "<string>"
},
"remaining_fields": "See contact schema."
},
"file": {
"url": "<string>",
"mime_type": "<string>",
"size": 123,
"internal_uuid": "<string>"
}
}
'import requests
url = "https://1-some-client.some-server.healvi-chat/third-party/v1/conversations/{conversationId}/messages"
payload = {
"type": "<string>",
"reference_id": 123,
"text": { "content": "<string>" },
"image": { "caption": "<string>" },
"video": { "caption": "<string>" },
"audio": { "voice": True },
"document": {
"filename": "<string>",
"caption": "<string>"
},
"location": {
"latitude": "<string>",
"longitude": "<string>",
"remaining_fields": "See location schema."
},
"contact": {
"name": { "formatted_name": "<string>" },
"remaining_fields": "See contact schema."
},
"file": {
"url": "<string>",
"mime_type": "<string>",
"size": 123,
"internal_uuid": "<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>',
reference_id: 123,
text: {content: '<string>'},
image: {caption: '<string>'},
video: {caption: '<string>'},
audio: {voice: true},
document: {filename: '<string>', caption: '<string>'},
location: {
latitude: '<string>',
longitude: '<string>',
remaining_fields: 'See location schema.'
},
contact: {name: {formatted_name: '<string>'}, remaining_fields: 'See contact schema.'},
file: {url: '<string>', mime_type: '<string>', size: 123, internal_uuid: '<string>'}
})
};
fetch('https://1-some-client.some-server.healvi-chat/third-party/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://1-some-client.some-server.healvi-chat/third-party/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>',
'reference_id' => 123,
'text' => [
'content' => '<string>'
],
'image' => [
'caption' => '<string>'
],
'video' => [
'caption' => '<string>'
],
'audio' => [
'voice' => true
],
'document' => [
'filename' => '<string>',
'caption' => '<string>'
],
'location' => [
'latitude' => '<string>',
'longitude' => '<string>',
'remaining_fields' => 'See location schema.'
],
'contact' => [
'name' => [
'formatted_name' => '<string>'
],
'remaining_fields' => 'See contact schema.'
],
'file' => [
'url' => '<string>',
'mime_type' => '<string>',
'size' => 123,
'internal_uuid' => '<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://1-some-client.some-server.healvi-chat/third-party/v1/conversations/{conversationId}/messages"
payload := strings.NewReader("{\n \"type\": \"<string>\",\n \"reference_id\": 123,\n \"text\": {\n \"content\": \"<string>\"\n },\n \"image\": {\n \"caption\": \"<string>\"\n },\n \"video\": {\n \"caption\": \"<string>\"\n },\n \"audio\": {\n \"voice\": true\n },\n \"document\": {\n \"filename\": \"<string>\",\n \"caption\": \"<string>\"\n },\n \"location\": {\n \"latitude\": \"<string>\",\n \"longitude\": \"<string>\",\n \"remaining_fields\": \"See location schema.\"\n },\n \"contact\": {\n \"name\": {\n \"formatted_name\": \"<string>\"\n },\n \"remaining_fields\": \"See contact schema.\"\n },\n \"file\": {\n \"url\": \"<string>\",\n \"mime_type\": \"<string>\",\n \"size\": 123,\n \"internal_uuid\": \"<string>\"\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://1-some-client.some-server.healvi-chat/third-party/v1/conversations/{conversationId}/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"<string>\",\n \"reference_id\": 123,\n \"text\": {\n \"content\": \"<string>\"\n },\n \"image\": {\n \"caption\": \"<string>\"\n },\n \"video\": {\n \"caption\": \"<string>\"\n },\n \"audio\": {\n \"voice\": true\n },\n \"document\": {\n \"filename\": \"<string>\",\n \"caption\": \"<string>\"\n },\n \"location\": {\n \"latitude\": \"<string>\",\n \"longitude\": \"<string>\",\n \"remaining_fields\": \"See location schema.\"\n },\n \"contact\": {\n \"name\": {\n \"formatted_name\": \"<string>\"\n },\n \"remaining_fields\": \"See contact schema.\"\n },\n \"file\": {\n \"url\": \"<string>\",\n \"mime_type\": \"<string>\",\n \"size\": 123,\n \"internal_uuid\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://1-some-client.some-server.healvi-chat/third-party/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 \"reference_id\": 123,\n \"text\": {\n \"content\": \"<string>\"\n },\n \"image\": {\n \"caption\": \"<string>\"\n },\n \"video\": {\n \"caption\": \"<string>\"\n },\n \"audio\": {\n \"voice\": true\n },\n \"document\": {\n \"filename\": \"<string>\",\n \"caption\": \"<string>\"\n },\n \"location\": {\n \"latitude\": \"<string>\",\n \"longitude\": \"<string>\",\n \"remaining_fields\": \"See location schema.\"\n },\n \"contact\": {\n \"name\": {\n \"formatted_name\": \"<string>\"\n },\n \"remaining_fields\": \"See contact schema.\"\n },\n \"file\": {\n \"url\": \"<string>\",\n \"mime_type\": \"<string>\",\n \"size\": 123,\n \"internal_uuid\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 123,
"conversation_id": 123,
"user_id": 123,
"contents": [
"<unknown>"
],
"agent_reaction": "<string>",
"customer_reaction": "<string>",
"sent_at": "2023-01-01T12:00:00Z",
"reference": "<unknown>",
"latest_error": {
"id": 123,
"message_id": 123,
"original_message": "<string>",
"created_at": "2023-01-01T12:00:00Z"
},
"whatsapp_campaign": {
"id": 123,
"name": "<string>"
}
}
}