- Resolve a project ID (by name or from a known UUID).
- List session IDs for that project within a created_at date range.
- Fetch every message in each session (user turns, assistant replies, and tool calls).
user_message, assistant_message, tool_call, tool_result, compaction), so tool calls and results appear inline rather than on a separate endpoint.
All endpoints require admin access and operate at tenant scope: with an admin platform access token or dashboard session, you can list and read any session in your workspace, not only ones you started.
Endpoints used
Resolve the project ID
If you already have a project ID, skip this step.GET /api/v1/projects returns paginated projects.
List sessions for a project and date range
GET /api/v1/assistants/sessions returns sessions for your workspace. Use project_id plus timestamp_start / timestamp_end to restrict to sessions created within a range (both bounds are inclusive, ISO 8601):
count is the total number of sessions matching your filters, not just the current page.If
timestamp_start is after timestamp_end, the API returns 400.Reading the messages
GET /api/v1/assistants/sessions/{session_id}/messages returns the canonical paginated envelope plus a top-level session block identifying who the session belonged to:
size and total count messages, not events. One message can hold several events (e.g. an assistant turn with text plus parallel tool calls), so the items array’s combined event count is usually larger than size.raw vs resolved
The agent talks to the Caylex Navigator through meta-tools (suggest_tools, get_tool_schemas, invoke_tools, list_skills, …). invoke_tools is the one that runs the real downstream tools.
view=raw(default) shows exactly what happened, meta-tools included, useful for debugging the agent loop.view=resolveddrops the pure meta-tools and unwrapsinvoke_toolsinto the actual server tool calls and results it performed, so you see business tools likegmail_search_messagesdirectly.
resolved mode, unwrapped tool_call events carry server_name, intent, and parent_tool_use_id; unwrapped tool_result events carry tool_name and parent_tool_use_id.
The procedure
1
Resolve the project ID
GET /api/v1/projects and find the id for your project name — or use a project_id you already have from provisioning or the UI.2
List sessions in the date range
GET /api/v1/assistants/sessions?project_id={id}×tamp_start=…×tamp_end=… and collect each session_id. Page with limit / offset while offset + len(sessions) < count.3
Fetch messages for each session
For every
session_id, call GET /api/v1/assistants/sessions/{session_id}/messages?size=100 (add view=resolved to hide meta-tools).4
Page each session until done
While
meta.has_next is true, call again with cursor=meta.next_cursor, accumulating items until has_next is false.Full script
This resolves a project by name, lists all assistant sessions created in June 2026 for that project, then exports the complete message timeline for each session. Passview=resolved to get business tools instead of Caylex meta-tools.
- Python
- TypeScript
- cURL
export_project_sessions.py
Next steps
Provision a customer project
Stand up a project per customer and capture the returned
id for session exports.Analytics overview
Aggregate metrics (queries, tool calls, error rates) across sessions.
Background Agent Tasks
Run the agent server-to-server; each task is backed by a chat session you can read here.
REST API Reference
Full request/response schemas for these endpoints.