Brand overview (totals, rates, timeseries)
Windowed brand overview — the EXACT read behind the app’s /analytics metric cards + chart (same per-recipient dedup and machine-click/open exclusion rules), so API/MCP numbers can never disagree with the page. Defaults to the last 7 days. Optional filters, all of which COMPOSE freely: source (csv of send sources), automationId, emailId, audienceId (csv, ≤20), triggerEventId (csv, ≤10 — integration trigger-events, resolved to their wired automations), domain (sending domain), and recipient (csv of recipient rules — same grammar and name as GET /v1/analytics/events). A single filter is answered from pre-aggregated rollup rows; any combination (and anything with domain or recipient, neither of which has a rollup dimension) is answered by aggregating raw events instead — exact, but capped, so watch truncated on wide windows. Returns { totals, rates, buckets, granularity, timeZone, range, truncated } — truncated: true means the window exceeded the scan budget; narrow the range. Requires the emails scope.
Authorizations
Send your Brew API key as Authorization: Bearer brew_xxx.
Headers
The brand this request acts on. REQUIRED for organization-scoped credentials (otherwise 400 BRAND_ID_REQUIRED — there is no default brand); list ids with GET /v1/brands. Brand-scoped credentials may omit it, and sending a different brand returns 403 BRAND_SCOPE_MISMATCH. A brand outside your organization returns 404 BRAND_NOT_FOUND.
1 - 64Query Parameters
CSV of send sources to include (e.g. audience,api; valid values: audience, api, automation_manual, automation_integration, automation_custom). Composes with every other filter.
1 - 256CSV of automation ids (max 20) — a single id is still valid. Composes with every other filter; one id reads a pre-aggregated rollup partition, several take the raw-event path.
1 - 2048Scope to one email design. Composes with every other filter — a design used by several automations can be narrowed with automationId.
1 - 64CSV of audience ids (max 20). Composes with every other filter.
1 - 2048CSV of integration trigger-event ids (max 10), resolved to their wired automations. Composes with every other filter.
1 - 2048Sending domain (fromEmail match). Has no rollup dimension, so requests carrying it are answered from raw events — check truncated on wide windows.
1 - 255CSV of recipient rules (max 10) matching who RECEIVED the email — the SAME grammar and the same parameter name as GET /v1/analytics/events, so one filter string moves between the two and the totals here describe exactly the rows that feed lists. A full address matches exactly, @domain matches the domain, any other text matches as a substring; prefix ! to exclude (e.g. @clay.com,!ceo@clay.com). Includes OR together; excludes always apply. Like domain this has no rollup dimension (stored rows aggregate ACROSS recipients), so requests carrying it are answered from raw events — check truncated on wide windows.
1 - 2048