Skip to main content
GET
/
messages
cURL
curl --request GET \
  --url 'https://{api_base_url}/messages?conversation_id={conversation_id}&user={user}' \
  --header 'Authorization: Bearer {api_key}'
import requests

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

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://{api_base_url}/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_base_url}/messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

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

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://{api_base_url}/messages")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

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

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "limit": 20,
  "has_more": false,
  "data": [
    {
      "id": "9da23599-e713-473b-982c-4328d4f5c78a",
      "conversation_id": "45701982-8118-4bc5-8e9b-64562b4555f2",
      "parent_message_id": null,
      "inputs": {
        "city": "San Francisco"
      },
      "query": "What are the specs of the iPhone 13 Pro Max?",
      "answer": "iPhone 13 Pro Max specs are listed here:...",
      "status": "normal",
      "error": null,
      "message_files": [],
      "feedback": {
        "rating": "like"
      },
      "retriever_resources": [],
      "agent_thoughts": [],
      "created_at": 1705407629,
      "extra_contents": []
    }
  ]
}

Authorizations

Authorization
string
header
required

API Key authentication. For all API requests, include your API Key in the Authorization HTTP Header, prefixed with Bearer. Example: Authorization: Bearer {API_KEY}. Strongly recommend storing your API Key on the server-side, not shared or stored on the client-side, to avoid possible API-Key leakage that can lead to serious consequences. Requests with a missing or invalid API key fail with HTTP 401 and error code unauthorized.

Query Parameters

conversation_id
string
required

Conversation ID.

user
string

User identifier.

first_id
string

The ID of the first chat record on the current page. Default is null (fetches the latest messages). For subsequent pages, use the ID of the first message from the current list to get older messages.

limit
integer
default:20

Number of chat history messages to return per request.

Required range: 1 <= x <= 100

Response

Successfully retrieved conversation history.

limit
integer

Number of items per page.

has_more
boolean

Whether there are more messages.

data
object[]

List of messages.

Last modified on July 9, 2026