---
title: "Errors and troubleshooting | Trellus Call Data API"
description: "What Trellus Call Data API errors mean and how to fix them: 401 response text, rejected fields, empty results, 429 rate limits and capped exports."
source: "https://www.trellus.ai/developers/api/errors"
note: "Text-only copy of the page for AI assistants and agents. Link to the source address, not this file."
site_summary: "https://www.trellus.ai/llms.txt"
---

# Errors and troubleshooting

What 400, 401 and 429 responses mean, and what to check when rows are missing.

## Read the status and the text

Error bodies can be plain text. Keep the status, endpoint, UTC time and response text when asking support for help. Exclude credentials and customer personal data from logs.

A request body that exceeds the accepted size can return `413`. Reduce the request size and query scope. For transient `5xx` responses, use bounded backoff; do not retry indefinitely.

## Troubleshooting

### List works, but /session returns 401 “not found”

Send the exact session_id from a list row in the x-session-id header, with the same Bearer key. A session_id query parameter or JSON body is ignored. “not found” means the session could not be located, not that you need a transcript scope. If correct headers still fail, contact support with the session ID, endpoint, status, response text and UTC time; never include your API key.

### 401 “not permissioned” or “not authorized”

The user behind the key cannot read that session or team. Check /visible and ask your team admin to review reporting access. A team_id parameter does not grant access. “inactive user” can also mean the key is invalid or the account is inactive.

### 401 “not on db”

The backend found the session record but could not load its stored detail. Report the session ID and response text to support. You can still use transcript columns from the list when available.

### 400 or rejected phone, company, email or transcript field

Use the exact paths in the field guide. start and select are required for lists; metrics use selects. POST parameters belong in JSON, with Content-Type: application/json. Error responses can be plain text.

### 200 with [] or missing contact/transcript values

Confirm the UTC date window, readable reps and filters. Remove the live-duration filter to include short calls. Contact data depends on captured CRM enrichment; transcripts depend on recording/transcription settings. A 200 empty result is a successful query with no matching readable rows.

### 429 Too Many Requests

Wait the Retry-After number of seconds, then retry with a bounded retry policy. Coordinate workers using the same user key. Default backend limits are per user, not per IP. If only your shared cloud host is blocked despite pacing, give support the UTC time, endpoint and response headers so upstream limits can be investigated.

### I need every call, not just the newest 50

Set limit to at most 1000. There is no cursor or offset pagination. If a window fills the limit, split it into smaller [start, end) windows and deduplicate by session_id. A full 1000-row response does not prove the export is complete; very dense windows may also need rep filters.

### I need a team-wide read-only key, or my key was exposed

A Trellus API key belongs to a user and inherits their permissions; using it for reporting does not make it a separately restricted credential. Each user can copy their own key in Settings → Integrations → API. Use an appropriately permissioned account for team reporting, verify /visible, and contact support for key replacement if it was exposed.

Limits and pacing are on [Rate limits and exports](https://www.trellus.ai/developers/api/rate-limits). For anything else, [contact Trellus support](https://app.trellus.ai/support).
