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
object
Whether there are more pages
Items per page
Current page number (1-indexed)
Total number of items
422
Validation Error