List evaluation criteria results across voice and text

View as Markdown
Success-evaluation verdicts per criterion over calls AND text conversations created in the window, with a `bySource` split (`voice` = calls, `text` = conversations). The analysis evaluates a WhatsApp thread with the same criteria as a call, so the totals here cover the whole operation. Only records that carry evaluation results count. Criteria are sorted by id. Each verdict is counted once per record: `total = success + failure + unknown`, and `bySource.voice` + `bySource.text` add up to the totals. A verdict other than `success` / `failure` / `unknown` is counted as `unknown` rather than dropped. Deleted calls are excluded. With `agentId`, calls are attributed to the agent that handled them (manual calls included) and conversations to their agent. For text-only numbers with a success rate, use `GET /api/analytics/conversations/criteria`. **No data.** `criteria` is an empty array when nothing in range was evaluated; counts are integers, never `null`. **Idempotency.** Read-only; safe to retry. **Access** - **Required scope:** `read`. No role or plan gate: any signed-in member of the workspace can read it. - **Rate limit:** General API — per plan: 120 (Starter / no plan), 200 (Growth), 300 (Business), 600 (Enterprise) requests/min per workspace. The 30/min analytics limiter does not apply to this route. See [Rate limits](/rate-limits). - **Plan:** Available on every plan.

Authentication

AuthorizationBearer
Workspace API key: `jl_` followed by 64 lowercase hex characters, created by the workspace owner in the dashboard (**Settings → API Keys**) and sent as `Authorization: Bearer jl_...`. The plaintext is shown once, at creation; Jelliu stores only a SHA-256 hash. A workspace can hold up to 25 active keys. | Scope | GET / HEAD | POST / PUT / PATCH / DELETE | Admin-only routes | | --- | --- | --- | --- | | `read` | Yes | No | No | | `write` | Yes | Yes | No | | `full` | Yes | Yes | Yes | Operations restricted to admins or owners reject keys without the `full` scope with `403`, and say so in their description. No key, whatever its scope, can mint or revoke API keys or rotate a webhook secret — that requires a signed-in owner session. A revoked key stops authenticating within about 10 seconds. See [Authentication](/authentication).

Query parameters

daysintegerOptional1-365Defaults to 30

Window in days ending now. Never rejected: a value outside 1-365, 0 or a non-numeric value falls back to 30, and decimals are floored.

agentIdstringOptionalformat: "uuid"

Restrict to one agent (see GET /api/agents). A malformed id is a 400 — it is never silently ignored, because ignoring it would return the whole workspace’s numbers. An empty value means no filter.

Response

Criteria roll-up.

dataobjectOptional

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
429
Too Many Requests Error