Get Mailbox Warmup Analytics
GET /mailboxes/{mailbox_id}/warmup
Get live warmup analytics for a single mailbox.
Wraps the existing GET /warmup/{mailbox_id}/analytics flow so MCP
(API-key auth) can read warmup engagement / reputation without going
through cookie-based session auth.
Behavior:
- Looks up the mailbox in the API user’s org schema. 404 if missing
or deleted. Tenant isolation comes from the per-org schema bind,
NOT from a row-level predicate.
- Hits the configured warmup provider (Instantly or SmartLead) over
HTTP — slow (~300-800ms typical). For warm bulk reads use
list_mailboxes and check the cheap DB-level warmup_status.
- Returns {success, warmup_enabled, provider, analytics, warmup_settings}
— same shape as the internal /warmup/{id}/analytics endpoint.
Backwards-compat: this is a brand-new route. The internal /warmup/{id}/analytics (cookie auth) is unchanged.
Historical bug (fixed 2026-05-24, same root cause as list_mailboxes
above): the previous implementation appended
(t.org_id = :org_id OR m.created_by = :user_id) to the WHERE. Both
halves match zero rows in prod — mailboxes.team_id is NULL on every
row (no team pinning) and mailboxes.created_by stores email strings,
not propelauth UUIDs. Result: every warmup-analytics call 404’d even
for mailboxes that list_mailboxes happily returned. Dropping the
predicate restores parity; schema bind is the tenant boundary.
Authorizations
Parameters
Path Parameters
Header Parameters
Responses
200
Successful Response
object
object
422
Validation Error