Metered resources
| Resource | What it counts | Reset cadence |
|---|---|---|
| Spans | Every span ingested across all projects (LLM, chain, tool, retriever, custom) | Monthly, on plan anniversary |
| Evaluations | LLM-as-judge and rule-based eval results produced, both ad-hoc and scheduled | Monthly |
| Seats | Active team members (role ≠ viewer counts toward the seat cap) | Always current |
| Retention | Oldest trace you can query, expressed in days | Always current |
Plan limits
Current defaults (confirm against trulayer.ai/pricing for the latest):| Plan | Spans / month | Evals / month | Seats | Retention |
|---|---|---|---|---|
| Starter | 500,000 | 2,500 | 3 | 14 days |
| Pro | 5,000,000 | 50,000 | 15 | 60 days |
| Team | 25,000,000 | 500,000 | 50 | 180 days |
| Enterprise | Custom | Custom | Custom | Up to 400 days |
Feature availability by plan
| Feature | Starter | Pro | Team | Business / Enterprise |
|---|---|---|---|---|
Semantic search (/v1/search/spans) | — | Yes | Yes | Yes |
| Eval rules (create / update / delete) | Yes (3-rule cap) | Yes (unlimited) | Yes (unlimited) | Yes (unlimited) |
| Anomaly detection | Yes | Yes | Yes | Yes |
| BYOK judge model for evals | — | — | Yes | Yes |
| Prompt deployments / control loop | — | — | Yes | Yes |
code: "plan_upgrade_required" when called on an ineligible plan. The Starter eval-rules cap returns code: "eval_rules_quota_exceeded" instead.
Overage behaviour
- Starter — hard block. Once you hit the monthly span cap, ingestion returns HTTP
429witherror.code = "plan_limit_exceeded"until reset or upgrade. - Pro / Team — metered overage. Ingestion continues; the overage is billed at the per-span rate shown at the top of the Usage page. A banner on the dashboard warns at 80% and 100% of the included allowance.
- Enterprise — per-contract; speak to your account manager.
Data retention
Traces older than your plan’s retention window are permanently deleted nightly (rolling). Shortly before deletion:- Exports you need must be taken ahead of time — use the API
/v1/exports. - Datasets created from old traces are preserved — only the raw trace storage is pruned.