Skip to content
TriedDocs
Calls

List calls

Filter, sort and page through the calls in your workspace.

POSThttps://api.tried.com.au/v3/list-calls

Returns calls that match filter_criteria, newest first by default. Every top-level filter must match (AND). Values inside one array filter match any of the values (OR).

Request#

Body#

All fields are optional. An empty body returns the 50 newest calls.

Field Type Required Description
filter_criteria object No Filters. See filter_criteria. Default {}.
sort_order string No ascending or descending by creation time. Default descending.
limit integer No 1 to 1000. Default 50.
pagination_key string No The call_id of the last call on the previous page. The next page starts after it.

filter_criteria#

Field Type Description
agent_id string[] Calls handled by any of these agents.
call_status string[] Any of registered, ongoing, ended, error, not_connected.
call_type string[] Any of phone_call, web_call.
direction string[] Any of inbound, outbound.
user_sentiment string[] Any of Positive, Negative, Neutral, Unknown (from post-call analysis).
call_successful boolean[] [true], [false] or both.
disconnection_reason string[] Any of the disconnection reasons.
batch_call_id string[] Calls placed by any of these batches.
start_timestamp object Range on the start time: lower_threshold and upper_threshold, epoch ms, both inclusive and optional. Calls that never started are matched on their creation time.
duration_ms object Range on duration_ms: lower_threshold and upper_threshold, both inclusive and optional.
fields object[] Up to 20 conditions on analysis data, metadata or dynamic variables. All must match. See fields.

fields#

Each condition reads one value by key and compares it.

Field Type Required Description
source string Yes custom_analysis_data (post-call analysis fields), metadata, or dynamic_variable (matches either the request variables or the collected variables).
key string Yes 1 to 200 characters. A dotted path reaches into nested objects, for example order.total.
op string No Operator, default eq. See the table below.
value string, number, boolean or array No Value to compare with. Not used by exists and not_exists.
op Matches when
eq The value equals value (type-sensitive: true and "true" differ).
neq The value differs from value, or the key is missing.
contains The value is a string that contains value.
gt, gte, lt, lte Numeric comparison. A numeric string in value is compared as a number.
in The value equals any element of the value array.
exists The key is present and not null.
not_exists The key is missing or null.

Example request#

curl -X POST "https://api.tried.com.au/v3/list-calls" \
  -H "Authorization: Bearer $TRIED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "filter_criteria": {
    "agent_id": [
      "agent_3f9a1c0b2d4e5f6a7b8c9d0e"
    ],
    "call_status": [
      "ended"
    ],
    "start_timestamp": {
      "lower_threshold": 1792022400000
    },
    "fields": [
      {
        "source": "custom_analysis_data",
        "key": "confirmed",
        "op": "eq",
        "value": true
      },
      {
        "source": "metadata",
        "key": "crm_id",
        "op": "exists"
      }
    ]
  },
  "sort_order": "descending",
  "limit": 100
}'
const res = await fetch("https://api.tried.com.au/v3/list-calls", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.TRIED_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "filter_criteria": {
      "agent_id": [
        "agent_3f9a1c0b2d4e5f6a7b8c9d0e"
      ],
      "call_status": [
        "ended"
      ],
      "start_timestamp": {
        "lower_threshold": 1792022400000
      },
      "fields": [
        {
          "source": "custom_analysis_data",
          "key": "confirmed",
          "op": "eq",
          "value": true
        },
        {
          "source": "metadata",
          "key": "crm_id",
          "op": "exists"
        }
      ]
    },
    "sort_order": "descending",
    "limit": 100
  }),
});
const data = await res.json();
import os, requests

res = requests.post(
    "https://api.tried.com.au/v3/list-calls",
    headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
    json={
        "filter_criteria": {
            "agent_id": ["agent_3f9a1c0b2d4e5f6a7b8c9d0e"],
            "call_status": ["ended"],
            "start_timestamp": {
                "lower_threshold": 1792022400000,
            },
            "fields": [
                {
                    "source": "custom_analysis_data",
                    "key": "confirmed",
                    "op": "eq",
                    "value": True,
                },
                {
                    "source": "metadata",
                    "key": "crm_id",
                    "op": "exists",
                },
            ],
        },
        "sort_order": "descending",
        "limit": 100,
    },
)
data = res.json()

Response#

200 OK with a JSON array of call objects, each with agent_name.

[
  {
    "call_id": "call_8d1e0f2a3b4c5d6e7f8a9b0c",
    "call_type": "phone_call",
    "agent_id": "agent_3f9a1c0b2d4e5f6a7b8c9d0e",
    "agent_version": 4,
    "agent_name": "Appointment reminders",
    "call_status": "ended",
    "direction": "outbound",
    "start_timestamp": 1792310400000,
    "end_timestamp": 1792310465000,
    "duration_ms": 65000,
    "disconnection_reason": "agent_hangup",
    "call_analysis": { "call_summary": "Sam confirmed the appointment.", "in_voicemail": false, "user_sentiment": "Positive", "call_successful": true, "custom_analysis_data": { "confirmed": true } }
  }
]

The example shows a subset of fields; each item is a full call object.

To get the next page, send the same request with pagination_key set to the last call_id you received. A page shorter than limit is the last one.

Errors#

Status When
400 Validation failed, or pagination_key is not a call in this workspace (Invalid pagination_key).
401 Missing or invalid API key.
403 The key's IP allowlist or scopes reject the request. This route needs the calls scope.
429 Rate limit exceeded. See Rate limits.

See Errors for the body format.

Compatibility notes#

POST /v2/list-calls is an alias. The response is a plain array with no has_more or cursor field; pagination uses the last call_id.