Skip to navigation

List daily sentiment

View as Markdown

Returns, per calendar day, how callers felt: average sentiment (-1 to 1), average frustration (0 to 1) and the average of each call’s worst moment. Only calls that carry a sentiment score are included, and callCount says how many that was, so a day with two scored calls is not mistaken for a trend.

Filters. days sets the window (rolling, ending now; missing or out-of-range values become 30). direction, campaignId and agentId narrow every row. timezone decides which calendar day a call falls in; an unknown zone name silently falls back to UTC.

Ordering. Ascending by date, at most 366 rows.

No data. Days without a scored call are omitted. avgFrustration and avgSentimentLow can still be null on a day that has sentiment, because those signals were captured from 2026-09-02 onwards.

Idempotency. Safe to retry: this is a read.

Consistency. Cached for 120 seconds, then served stale for up to 15 minutes while a background refresh runs.

Access

  • Required scope: read. Signed-in users need the owner, admin, member or viewer role.
  • Rate limit: Analytics — 30 requests/min per workspace, in addition to the general API budget of your plan. See Rate limits.
  • Plan: Available on every plan. Requires an active subscription (active, trialing or past_due); without one the request is refused with 403 BILLING_ERROR (metadata.kind: subscription_required).

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.

ScopeGET / HEADPOST / PUT / PATCH / DELETEAdmin-only routes
readYesNoNo
writeYesYesNo
fullYesYesYes

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.

Query parameters

daysintegerOptional1-365Defaults to 30

Size of the reporting window in days, ending now. On most analytics routes a missing or out-of-range value falls back to 30 instead of being rejected; the operation says when it is strict.

directionenumOptionalDefaults to all

Which calls to count: inbound (calls the agent answered), outbound (calls the agent placed) or all (both).

Allowed values:
campaignIdstringOptionalformat: "uuid"
Scope every number to one campaign of the workspace. Omit it to aggregate across all campaigns and manual calls.
agentIdstringOptionalformat: "uuid"

Scope every number to one agent — the agent that served each call, so manual (campaign-less) calls count. Omit it to aggregate across agents.

timezonestringOptional<=50 characters

IANA time zone the day and hour buckets are computed in (default UTC). An unknown zone falls back to UTC; a value longer than 50 characters is rejected with 400.

Response

Daily sentiment rows in ascending date order.
datalist of objectsOptional

Errors

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