List agent conversation users
Changed on<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>
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.
<Note>This endpoint accepts a personal API key, including a read-only one, from anyone with access to the app, viewers included. Workspace API keys are not authorized for it.</Note>
Request
- Base URLhttps://app.base44.com
- URLhttps://app.base44.com/api/apps/{app_id}/agent-configs/conversation-users
- AuthHTTP bearer
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.
Response
A page of the users who have conversations with the app's agents.
Example response
{
"items": [
{
"user_group_key": "68a1d2c3e4f5061728394a6c",
"created_by_id": "68a1d2c3e4f5061728394a6c",
"created_by_email": "jane@acme.com",
"created_by_name": "Jane Cooper",
"role": "user",
"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",
"answering": "ai",
"channel": "whatsapp",
"display_phone": "+15550100123",
"display_name": "Dana Levi"
}
],
"answering": "ai"
}
],
"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",
"answering": "ai",
"channel": "whatsapp",
"display_phone": "+15550100123",
"display_name": "Dana Levi"
}
],
"answering": "ai",
"channels": [
"whatsapp"
],
"display_phone": "+15550100123",
"display_name": "Dana Levi"
}
],
"total": 42
}Changes
- breaking
queryrequest parameteragent_filterlist-of-types was narrowed by removing typesnull - breaking
queryrequest parameterlimitlist-of-types was narrowed by removing typesnull - breaking
queryrequest parameterowner_filterlist-of-types was narrowed by removing typesnull - breaking
queryrequest parameterrole_filterlist-of-types was narrowed by removing typesnull - breaking
queryrequest parametersearchlist-of-types was narrowed by removing typesnull - breaking
queryrequest parameterskiplist-of-types was narrowed by removing typesnull - breaking
queryrequest parametersortlist-of-types was narrowed by removing typesnull - breaking
queryrequest parametertime_filterlist-of-types was narrowed by removing typesnull - breaking
for the
queryrequest parameterlimit, the type changed from no type tointeger - breaking
for the
queryrequest parameterskip, the type changed from no type tointeger - info
for the
queryrequest parameteragent_filter, the type was generalized from no type tostring - info
for the
queryrequest parameterowner_filter, the type was generalized from no type tostring - info
for the
queryrequest parameterrole_filter, the type was generalized from no type tostring - info
for the
queryrequest parametersearch, the type was generalized from no type tostring - info
for the
queryrequest parametersort, the type was generalized from no type tostring - info
for the
queryrequest parametertime_filter, the type was generalized from no type tostring
- breaking
- info
added the optional property
//////to the response with the status - info
added the optional property
////to the response with the status - info
added the optional property
//to the response with the status
- info