Send a message as a contact on a channel
Post a message into an existing chat, authored as the contact (not as the admin). Only custom channels are supported.
curl --request POST \
--url https://api.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_id}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"message": [
{
"type": "text",
"text": "<string>",
"start_timestamp": 123,
"end_timestamp": 123
}
]
}
'import requests
url = "https://api.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_id}/messages"
payload = { "message": [
{
"type": "text",
"text": "<string>",
"start_timestamp": 123,
"end_timestamp": 123
}
] }
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: [{type: 'text', text: '<string>', start_timestamp: 123, end_timestamp: 123}]
})
};
fetch('https://api.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_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.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_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' => [
[
'type' => 'text',
'text' => '<string>',
'start_timestamp' => 123,
'end_timestamp' => 123
]
]
]),
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.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_id}/messages"
payload := strings.NewReader("{\n \"message\": [\n {\n \"type\": \"text\",\n \"text\": \"<string>\",\n \"start_timestamp\": 123,\n \"end_timestamp\": 123\n }\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.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_id}/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"message\": [\n {\n \"type\": \"text\",\n \"text\": \"<string>\",\n \"start_timestamp\": 123,\n \"end_timestamp\": 123\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_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 {\n \"type\": \"text\",\n \"text\": \"<string>\",\n \"start_timestamp\": 123,\n \"end_timestamp\": 123\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"model": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"messages": [
{
"role": "system",
"parts": [
{
"type": "text",
"text": "<string>",
"audio": {
"id": "<string>",
"file_path": "<string>",
"file_filename": "document.pdf",
"file_size": 1024,
"file_mimetype": "application/pdf",
"file_url": "<string>",
"created_at": "2023-11-07T05:31:56Z"
},
"start_timestamp": 123,
"end_timestamp": 123
}
]
}
],
"member": {
"id": "<string>",
"user": {
"id": "<string>",
"name": "<string>",
"avatar": "<string>"
},
"session": {
"id": "<string>"
},
"contact_channel": {
"id": "<string>",
"user_id": "<string>",
"avatar": "<string>",
"name": "<string>",
"username": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"country": "<string>",
"agent": "<string>",
"ip": "<string>",
"language": "<string>",
"contact": {
"id": "<string>",
"name": "<string>",
"blocked": true,
"unsubscribed": true,
"ai_replies": true,
"is_admin": true
},
"link": "<string>"
}
},
"error": "<string>",
"broadcast_id": "<string>",
"is_broadcast_message": true,
"usage": {
"input_tokens": 123,
"output_tokens": 123,
"total_tokens": 123,
"reasoning_tokens": 123,
"input_tokens_cache_read": 123,
"input_tokens_cache_write": 123,
"turns": [
{
"input_tokens": 123,
"output_tokens": 123,
"total_tokens": 123,
"reasoning_tokens": 123,
"input_tokens_cache_read": 123,
"input_tokens_cache_write": 123
}
]
},
"delivered_at": "2023-11-07T05:31:56Z",
"seen_at": "2023-11-07T05:31:56Z"
}Authorizations
Bearer token authentication using your API key
Path Parameters
Org ID
Contact ID
Channel ID
Chat ID
Body
The message content, authored as the contact.
1User message parts
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
Show child attributes
Show child attributes
Response
The chat message schema
The role of the message
user, assistant, system, tool, event, note The model used for the message
The chat status
RUNNING, COMPLETED, FAILED, CANCELED The message content
System message
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
Show child attributes
Show child attributes
The member of the chat
Show child attributes
Show child attributes
Error message if the message failed
ID of the broadcast this message originates from
Whether this message was sent via a broadcast template
The usage information for the message
Show child attributes
Show child attributes
When the message was delivered to the recipient
When the recipient saw the message
Was this page helpful?
curl --request POST \
--url https://api.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_id}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"message": [
{
"type": "text",
"text": "<string>",
"start_timestamp": 123,
"end_timestamp": 123
}
]
}
'import requests
url = "https://api.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_id}/messages"
payload = { "message": [
{
"type": "text",
"text": "<string>",
"start_timestamp": 123,
"end_timestamp": 123
}
] }
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: [{type: 'text', text: '<string>', start_timestamp: 123, end_timestamp: 123}]
})
};
fetch('https://api.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_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.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_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' => [
[
'type' => 'text',
'text' => '<string>',
'start_timestamp' => 123,
'end_timestamp' => 123
]
]
]),
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.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_id}/messages"
payload := strings.NewReader("{\n \"message\": [\n {\n \"type\": \"text\",\n \"text\": \"<string>\",\n \"start_timestamp\": 123,\n \"end_timestamp\": 123\n }\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.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_id}/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"message\": [\n {\n \"type\": \"text\",\n \"text\": \"<string>\",\n \"start_timestamp\": 123,\n \"end_timestamp\": 123\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useinvent.com/orgs/{org_id}/contacts/{contact_id}/channels/{channel_id}/chats/{chat_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 {\n \"type\": \"text\",\n \"text\": \"<string>\",\n \"start_timestamp\": 123,\n \"end_timestamp\": 123\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"model": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"messages": [
{
"role": "system",
"parts": [
{
"type": "text",
"text": "<string>",
"audio": {
"id": "<string>",
"file_path": "<string>",
"file_filename": "document.pdf",
"file_size": 1024,
"file_mimetype": "application/pdf",
"file_url": "<string>",
"created_at": "2023-11-07T05:31:56Z"
},
"start_timestamp": 123,
"end_timestamp": 123
}
]
}
],
"member": {
"id": "<string>",
"user": {
"id": "<string>",
"name": "<string>",
"avatar": "<string>"
},
"session": {
"id": "<string>"
},
"contact_channel": {
"id": "<string>",
"user_id": "<string>",
"avatar": "<string>",
"name": "<string>",
"username": "<string>",
"email": "jsmith@example.com",
"phone": "<string>",
"country": "<string>",
"agent": "<string>",
"ip": "<string>",
"language": "<string>",
"contact": {
"id": "<string>",
"name": "<string>",
"blocked": true,
"unsubscribed": true,
"ai_replies": true,
"is_admin": true
},
"link": "<string>"
}
},
"error": "<string>",
"broadcast_id": "<string>",
"is_broadcast_message": true,
"usage": {
"input_tokens": 123,
"output_tokens": 123,
"total_tokens": 123,
"reasoning_tokens": 123,
"input_tokens_cache_read": 123,
"input_tokens_cache_write": 123,
"turns": [
{
"input_tokens": 123,
"output_tokens": 123,
"total_tokens": 123,
"reasoning_tokens": 123,
"input_tokens_cache_read": 123,
"input_tokens_cache_write": 123
}
]
},
"delivered_at": "2023-11-07T05:31:56Z",
"seen_at": "2023-11-07T05:31:56Z"
}