Skip to content

Trellus developers

Build with your
call data.

Bring call records and transcripts into your reports, internal tools, and AI workflows.

A Trellus account with API access is required. Your account permissions determine which calls you can read.

A small first request

Start with what you can read.

Check access, choose a date window, and select the fields your project needs.

Verify access
curl https://ext.trellus.ai/visible \
  -H "api_key: $TRELLUS_API_KEY"
Account accessCall recordsYour report

01 / Authentication

Check account access first.

Sign in to Trellus and open Settings → Integrations → Call Data API. The reference includes your account key, request examples, and the field catalogue. 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.

Check readable users
curl https://ext.trellus.ai/visible \
  -H "api_key: $TRELLUS_API_KEY"
A 200 response confirms access. The response lists readable users, groups and memberships. A 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

Choose a date window. List your calls.

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.

Generate a requestDates are UTC
List matching calls
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"
  ]
}'
Request fields used in this example
FieldWhat to send
start / endUnix microseconds. Start is included; end is excluded. The date controls calculate these values.
selectExact field paths in the order you want returned.
cnfFilter groups. This example selects calls using conversation_type EQ 1.
limitUp to 1,000 rows. This caps the result; it is not a page size with a continuation token.

03 / Response shape

Map each row to your selected fields.

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.

Illustrative response — example values
[
  [
    "EXAMPLE_SESSION_ID",
    1790812800,
    "Example contact",
    120
  ]
]
Map response rows
// 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;
Watch the units. Request date boundaries use microseconds. Returned started_at values, call durations, and transcript offsets use seconds.
Fields in the quickstart
FieldMeaning
session_idThe identifier to use when requesting one call.
started_atUnix seconds. Multiply by 1,000 for a JavaScript Date.
customer_data.nameContact name, when captured for the call.
durationCall duration in seconds.
turn_data.textsTranscript utterances as an array, when available.
turn_data.is_customersAligned with texts: true for the customer, false for the agent.
turn_data.startsAligned 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

Read one selected call.

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.

Read one call as JSON
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.

Quick endpoint reference
GEThttps://ext.trellus.ai/visible

Confirm account access before querying call records.

api_key header
POSThttps://rpt-2.trellus.ai/session-list-v6

Read a bounded date window with the exact fields you need.

Authorization: Bearer
GEThttps://rpt-2.trellus.ai/session

Fetch one selected call in JSON using x-proto-as-json.

Authorization: Bearer + x-session-id

Before you schedule a job

Keep queries bounded and results checkable.

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.

Handle rate limits

On HTTP 429, wait the number of seconds in Retry-After and use bounded retries. Coordinate jobs sharing the same account key. See the full reference for current request pacing.

Inspect error text

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.

Check a known call

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.

Prefer an AI assistant?

Connect through MCP.

Use Trellus with a compatible remote MCP app to ask questions about calls your account can read. Connect through the Trellus sign-in flow and approve access in your browser.

The reporting connector is read-only: it can read permitted call data, but cannot make calls or change your account. Client support and workspace policies determine whether you can add the connection.

Open the MCP setup guide

Calling inside your CRM?

Start with the guide for the platform your team already uses.

Browse integrations