Export complete windows
There is no cursor or offset pagination. If a result reaches your row limit, divide the date range into smaller windows and deduplicate by session_id. Dense windows may also need a rep filter.
Trellus developers
Read call records, connect an AI assistant, or send contact lists into Trellus. The guides, examples and field references are public.
The documentation is public. A Trellus account with API access is required to query your data. Your account permissions determine which calls you can read.
Check access, choose a date window, and select the fields your project needs.
curl https://ext.trellus.ai/visible \
-H "api_key: $TRELLUS_API_KEY"
Read call records, transcripts, reporting fields and recording links.
Connect your assistant. Query call activity and selected transcripts.
Import contact lists and update contact ownership with CSV requests.
Find the supported calling workflow for your sales platform.
01 / Authentication
Sign in to Trellus and open Settings → Integrations → API. Copy your account key there. The complete reference, examples and field catalogue are available publicly on this website. If the page is unavailable, ask your team admin to check your access or contact support.
Store the key in your server environment as TRELLUS_API_KEY. It belongs to your signed-in account and inherits that account’s permissions; using it for reporting does not create a separately restricted credential.
curl https://ext.trellus.ai/visible \
-H "api_key: $TRELLUS_API_KEY"
team value appears only when the key can read the whole team.These examples use a placeholder environment variable. This page never asks for a key or sends a request to the API.
02 / Your first query
Start with a small result set. The example selects calls and returns their IDs, start times, contact names, and durations. You can include transcript columns when your project needs them.
curl https://rpt-2.trellus.ai/session-list-v6 \
-H "Authorization: Bearer $TRELLUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"start": 1790812800000000,
"end": 1791417600000000,
"cnf": [
[
{
"column_name": "conversation_type",
"operator": "EQ",
"value_safe": 1
}
]
],
"limit": 50,
"select": [
"session_id",
"started_at",
"customer_data.name",
"duration"
]
}'
| Field | What to send |
|---|---|
start / end | Unix microseconds. Start is included; end is excluded. The date controls calculate these values. |
select | Exact field paths in the order you want returned. |
cnf | Filter groups. This example selects calls using conversation_type EQ 1. |
limit | Up to 1,000 rows. This caps the result; it is not a page size with a continuation token. |
03 / Response shape
List results are arrays of rows. Every cell matches the field at the same position in your request’s select array. A successful empty response, [], means no readable calls matched that query.
[
[
"EXAMPLE_SESSION_ID",
1790812800,
"Example contact",
120
]
]
// Each row follows the same order as your request's select array.
const calls = rows.map(row => Object.fromEntries(
select.map((column, index) => [column, row[index]])
));
// started_at and duration are seconds, unlike request date boundaries.
const startedAt = calls[0] ? new Date(calls[0].started_at * 1000) : null;
started_at values, call durations, and transcript offsets use seconds.| Field | Meaning |
|---|---|
session_id | The identifier to use when requesting one call. |
started_at | Unix seconds. Multiply by 1,000 for a JavaScript Date. |
customer_data.name | Contact name, when captured for the call. |
duration | Call duration in seconds. |
turn_data.texts | Transcript utterances as an array, when available. |
turn_data.is_customers | Aligned with texts: true for the customer, false for the agent. |
turn_data.starts | Aligned with texts: offsets in seconds from session start. |
Contact fields depend on captured CRM data. Transcripts depend on the call’s recording and transcription settings. When transcript arrays are present, match their entries by index.
04 / Call detail
Use an exact session_id from your list response in the x-session-id header. Keep the same account key. The x-proto-as-json header requests JSON instead of the default binary format.
curl https://rpt-2.trellus.ai/session \
-H "Authorization: Bearer $TRELLUS_API_KEY" \
-H "x-session-id: SESSION_ID_FROM_YOUR_LIST" \
-H "x-proto-as-json: true"
Detail JSON uses camelCase names such as customerData and turnData. List-query fields use snake_case paths such as customer_data.name. Default-valued fields may be absent in detail JSON.
https://ext.trellus.ai/visibleConfirm account access before querying call records.
api_key headerhttps://rpt-2.trellus.ai/session-list-v6Read a bounded date window with the exact fields you need.
Authorization: Bearerhttps://rpt-2.trellus.ai/sessionFetch one selected call in JSON using x-proto-as-json.
Authorization: Bearer + x-session-idBefore you schedule a job
There is no cursor or offset pagination. If a result reaches your row limit, divide the date range into smaller windows and deduplicate by session_id. Dense windows may also need a rep filter.
On HTTP 429, wait the number of seconds in Retry-After and use bounded retries. Coordinate jobs sharing the same account key. See the public API reference for request pacing.
Errors may be plain text. For a 401, inspect the response, confirm the selected call and account access, and contact support with the timestamp and session ID if needed. Keep the key out of support messages.
Before scheduling an export, compare a small result with a call you can see in Trellus. Confirm the date window, field order, units, and available transcript data.
The full Call Data API reference also covers filtered counts and duration totals, recording links, the complete field catalogue, and an OpenAPI starter.
Call analytics through MCP
Connect a compatible AI assistant to Trellus reporting. Ask for call totals, connect rates, and rep-level breakdowns, then follow up with a specific call or transcript. You can explore a question without preparing a spreadsheet for each follow-up.
Example prompts to use after connecting
Show yesterday’s outbound dials, connected calls, and connect rate by rep. Include unanswered attempts in total dials and use our team’s time zone.
Compare the last 30 days with the previous 30. Show session count, total live duration, and calls with at least 30 seconds of live time.
Break the last 30 days down by disposition. Show session count and average duration for each outcome.
Find five recent connected calls. Open one with a transcript and summarize its objections and agreed next step. Leave out customer contact details.
Start with a date range and a rep or team. Ask the assistant to show its filters and supporting call records so you can check the result. Transcripts are available when the call’s recording and transcription settings allow them.
Sign in to Trellus and approve the connection in your browser. The reporting connector is read-only and can access only the calls your account can read. It cannot make calls or change account settings. Your AI app must support remote MCP, and your workspace must allow the connection.
Start with the guide for the platform your team already uses.