Skip to main content
POST
/
messages
/
{message_id}
/
feedbacks
Submit Message Feedback
curl --request POST \
  --url https://{api_base_url}/messages/{message_id}/feedbacks \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "rating": "like",
  "user": "abc-123",
  "content": "This answer was very helpful!"
}
'
import requests

url = "https://{api_base_url}/messages/{message_id}/feedbacks"

payload = {
"rating": "like",
"user": "abc-123",
"content": "This answer was very helpful!"
}
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({rating: 'like', user: 'abc-123', content: 'This answer was very helpful!'})
};

fetch('https://{api_base_url}/messages/{message_id}/feedbacks', 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_base_url}/messages/{message_id}/feedbacks",
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([
'rating' => 'like',
'user' => 'abc-123',
'content' => 'This answer was very helpful!'
]),
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_base_url}/messages/{message_id}/feedbacks"

payload := strings.NewReader("{\n \"rating\": \"like\",\n \"user\": \"abc-123\",\n \"content\": \"This answer was very helpful!\"\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_base_url}/messages/{message_id}/feedbacks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"rating\": \"like\",\n \"user\": \"abc-123\",\n \"content\": \"This answer was very helpful!\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://{api_base_url}/messages/{message_id}/feedbacks")

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 \"rating\": \"like\",\n \"user\": \"abc-123\",\n \"content\": \"This answer was very helpful!\"\n}"

response = http.request(request)
puts response.read_body
{
  "result": "success"
}
{
"status": 400,
"code": "invalid_param",
"message": "Arg user must be provided."
}
{
"status": 404,
"code": "not_found",
"message": "Message Not Exists."
}

Authorizations

Authorization
string
header
required

Every request authenticates with an API key: Authorization: Bearer {API_KEY}. App endpoints take an app API key; knowledge endpoints take a knowledge base API key (Get Started).

Keep keys server-side; never embed them in client code. Requests with a missing or invalid key fail with HTTP 401 (unauthorized).

Path Parameters

message_id
string<uuid>
required

ID of the message to give feedback on. Get message IDs from List Conversation Messages.

Body

application/json

Request body for submitting message feedback.

user
string
required

End-user identifier, defined by your app and unique within it. Must match the user that received the message, since feedback is scoped to that end user. See End User Identity.

rating
enum<string> | null

Feedback rating. Set to null to revoke previously submitted feedback.

Available options:
like,
dislike,
null
content
string

Optional text feedback providing additional detail.

Response

Operation successful.

result
string

Operation result. Always success.