curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users', 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://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users",
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://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users"
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://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users")
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{
"items": [
{
"user_group_key": "68a1d2c3e4f5061728394a6c",
"created_by_id": "68a1d2c3e4f5061728394a6c",
"created_by_email": "jane@acme.com",
"created_by_name": "Jane Cooper",
"role": "user",
"is_anonymous_user": false,
"anonymous_visitor_id": "v_8f3k2m9q",
"agent_names": [
"support_agent"
],
"agent_count": 1,
"conversation_count": 2,
"message_count": 6,
"credit_count": 1.5,
"latest_time": "2026-01-15T09:31:07",
"agents": [
{
"agent_name": "support_agent",
"last_message_preview": "Your order ships tomorrow and should arrive by Friday.",
"last_message_time": "2026-01-15T09:31:07",
"conversation_count": 2,
"message_count": 6,
"credit_count": 1.5,
"conversations": [
{
"id": "68a1d2c3e4f5061728394a5b",
"app_id": "6820f3a4e7b91d003c45a1f2",
"agent_name": "support_agent",
"title": "Order #1042 delivery date",
"created_by_id": "68a1d2c3e4f5061728394a6c",
"created_by_email": "jane@acme.com",
"metadata": {
"name": "Order #1042 delivery date"
},
"created_date": "2026-01-15T09:23:41",
"updated_date": "2026-01-15T09:31:07",
"message_count": 6,
"credit_count": 1.5,
"first_message_preview": "Order #1042 delivery date",
"last_message_preview": "Your order ships tomorrow and should arrive by Friday.",
"last_message_time": "2026-01-15T09:31:07"
}
]
}
],
"conversations": [
{
"id": "68a1d2c3e4f5061728394a5b",
"app_id": "6820f3a4e7b91d003c45a1f2",
"agent_name": "support_agent",
"title": "Order #1042 delivery date",
"created_by_id": "68a1d2c3e4f5061728394a6c",
"created_by_email": "jane@acme.com",
"metadata": {
"name": "Order #1042 delivery date"
},
"created_date": "2026-01-15T09:23:41",
"updated_date": "2026-01-15T09:31:07",
"message_count": 6,
"credit_count": 1.5,
"first_message_preview": "Order #1042 delivery date",
"last_message_preview": "Your order ships tomorrow and should arrive by Friday.",
"last_message_time": "2026-01-15T09:31:07"
}
]
}
],
"total": 42
}List agent conversation users
Returns the app’s users who have conversations with its agents, most recently active first. Each user comes with totals, a breakdown by agent, and up to 100 of their conversations.
The response carries personal data about the app’s users. That includes their emails and names, and the start and end of their messages.
You can filter by:
- Text in the user’s email or name
- Agent
- App role
- Recent activity
Results use offset pagination. Page with limit and skip, and stop once you’ve read total users. Open a conversation’s messages with Get agent conversation.
This is limited to 60 requests a minute per app for each workspace’s personal API keys, so every key in a workspace shares one allowance. Some workspaces have a different limit.
curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users', 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://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users",
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://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users"
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://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users")
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{
"items": [
{
"user_group_key": "68a1d2c3e4f5061728394a6c",
"created_by_id": "68a1d2c3e4f5061728394a6c",
"created_by_email": "jane@acme.com",
"created_by_name": "Jane Cooper",
"role": "user",
"is_anonymous_user": false,
"anonymous_visitor_id": "v_8f3k2m9q",
"agent_names": [
"support_agent"
],
"agent_count": 1,
"conversation_count": 2,
"message_count": 6,
"credit_count": 1.5,
"latest_time": "2026-01-15T09:31:07",
"agents": [
{
"agent_name": "support_agent",
"last_message_preview": "Your order ships tomorrow and should arrive by Friday.",
"last_message_time": "2026-01-15T09:31:07",
"conversation_count": 2,
"message_count": 6,
"credit_count": 1.5,
"conversations": [
{
"id": "68a1d2c3e4f5061728394a5b",
"app_id": "6820f3a4e7b91d003c45a1f2",
"agent_name": "support_agent",
"title": "Order #1042 delivery date",
"created_by_id": "68a1d2c3e4f5061728394a6c",
"created_by_email": "jane@acme.com",
"metadata": {
"name": "Order #1042 delivery date"
},
"created_date": "2026-01-15T09:23:41",
"updated_date": "2026-01-15T09:31:07",
"message_count": 6,
"credit_count": 1.5,
"first_message_preview": "Order #1042 delivery date",
"last_message_preview": "Your order ships tomorrow and should arrive by Friday.",
"last_message_time": "2026-01-15T09:31:07"
}
]
}
],
"conversations": [
{
"id": "68a1d2c3e4f5061728394a5b",
"app_id": "6820f3a4e7b91d003c45a1f2",
"agent_name": "support_agent",
"title": "Order #1042 delivery date",
"created_by_id": "68a1d2c3e4f5061728394a6c",
"created_by_email": "jane@acme.com",
"metadata": {
"name": "Order #1042 delivery date"
},
"created_date": "2026-01-15T09:23:41",
"updated_date": "2026-01-15T09:31:07",
"message_count": 6,
"credit_count": 1.5,
"first_message_preview": "Order #1042 delivery date",
"last_message_preview": "Your order ships tomorrow and should arrive by Friday.",
"last_message_time": "2026-01-15T09:31:07"
}
]
}
],
"total": 42
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
ID of the app whose agents to read.
Query Parameters
Text to match, ignoring case, against the app user's email or full name, the agent's name, or a WhatsApp phone number. Only the first 200 characters are used.
Whose conversations to include. Either all, mine for only the ones you started as a user of the app, or others for everyone else's. Defaults to all.
Names of the agents to include, as a comma-separated list or a JSON array. For example, support_agent,sales_agent. Leave it out for every agent.
Keep only conversations updated since midnight UTC (today), in the last 7 days (7d), or in the last 30 days (30d). Defaults to all.
App roles to include, as a comma-separated list or a JSON array of user, admin, and editor. For example, user,admin. Anonymous visitors are left out when you set it. Defaults to all.
Single field to sort users by, prefixed with - for descending. Either last_message_time, created_date, updated_date, agent_count, conversation_count, or credit_count. For example, -conversation_count puts the most active users first. Defaults to -last_message_time, and any other field sorts by last_message_time.
Items per page. Max 100. Defaults to 20, and 0 also means 20.
Number of users to skip before the page starts. Defaults to 0.
Was this page helpful?