Skip to main content
July 2026
API v1 — preview a design across real inboxes & devices

Public API v1 — see how an email renders in real inboxes

New POST /v1/emails/{emailId}/client-previews renders a design’s latest version across real email clients & devices — Gmail, Outlook, Apple Mail, iOS (with dark-mode variants), plus Yahoo — and returns a screenshot per client, rehosted on the Brew CDN.
  • Pass clients (ids from the supported catalogue) to target specific inboxes/devices — e.g. outlook2021_win11_dm_dt for Outlook 2021 on Windows in dark mode — or send {} for a popular default spread.
  • Fixed cost of 10 credits, charged only when at least one client renders (X-Credit-Cost: 10). A batch where zero clients finish in time returns a retryable 503 and is not billed; unknown client ids are rejected with a 422 before any paid work.
  • Slow clients that outlive the bounded render window come back in pending — call again to retry just those.
  • Also available as the preview_email_across_clients MCP tool and as brew.emails.previewClients(...) in the SDK.
June 2026
API v1 — POST /v1/emails accepts an optional marketing category

Public API v1 — steer email design with a category

POST /v1/emails (“Create an email design”) now accepts an optional category so a create gets the same category-tailored treatment the in-app agent applies — exemplars, hero recipe, and personalization — instead of a generic default.
  • Marketing categories only: welcome, newsletter, promotional, product-launch, product-update, cart-abandonment, event-invitation, event-reminder, feedback-request, re-engagement, referral, business, internal, general. Transactional emails (receipts, password resets, order confirmations) are sent from automations with a trigger, not this endpoint, so those categories are not accepted.
  • Backward compatible — omit category for the previous behavior. The same field is available on the create_email_design MCP tool and as brew.emails.generate({ prompt, category }) in the SDK.
June 2026
API v1 — new POST /v1/sends/{sendId}/cancel

Public API v1 — cancel a send

New endpoint to pull back a send before it goes out.
  • POST /v1/sends/{sendId}/cancel (“Cancel a send”). Cancels a scheduled or queued send → 200 { sendId, status: 'canceled' }. Idempotent — an already-canceled send returns 200. Once the send is sending, sent, or failed it is 409 SEND_NOT_CANCELLABLE; an unknown / cross-brand id is 404 SEND_NOT_FOUND. sends scope. The SDK method is brew.sends.cancel(sendId).
June 2026
API v1 renames — /v1/account → /v1/usage, host-image → add-image

Public API v1 — two operation renames

Two endpoints (and their SDK methods) were renamed for clarity. The request and response shapes are unchanged.
  • GET /v1/accountGET /v1/usage (“Get usage”). The billing/quota surface — { plan, credits, emailSends, period } — keeps the same shape and the emails scope. The SDK method moves from brew.account.get() to brew.usage.get().
  • POST /v1/content/host-imagePOST /v1/content/add-image (“Add image”). Still optimizes the source image and saves it to the brand image library (fixed credit cost). The SDK method moves from brew.content.hostImage() to brew.content.addImage().
June 2026
API v1 read-collapse — flat reads, polymorphic send, email import

Public API v1 — flat reads + unified send

The v1 surface collapsed from 71 to 55 endpoints around one rule: one flat read per resource, identity in the query, ?include= opt-ins for the heavy detail. Plus a new way to bring existing designs into Brew.
  • Reads are flat. The per-resource get-one paths are gone — pass the id key to the list endpoint instead: emails GET /v1/emails?emailId= (?include=html,versions), domains ?domainId=, audiences ?audienceId= (?include=count), automations ?automationId= (?include=graph,versions), automation runs GET /v1/automations/runs?automationRunId= (?include=logs), triggers ?triggerEventId=, trigger instances ?triggerInstanceId=, and sends GET /v1/analytics/sends?sendId= (?include=events, also ?emailId=). The single-send detail row carries previewImage, so POST /v1/emails/{emailId}/preview, GET /v1/emails/{emailId}/versions, and GET /v1/emails/{emailId}/sends were removed (on-demand rendering is POST /v1/content/html-to-png).
  • One polymorphic send. POST /v1/sends/test folded into POST /v1/sends — pass { test: true } for the synchronous one-off QA send (200 { recipient }); omit it for the campaign send (202 { sendId }).
  • One contact read. GET /v1/contacts and GET /v1/contacts/{email} were replaced by POST /v1/contacts/search ({ filters, audienceId?, search?, sort, count?, cursor }); a by-email lookup is a { field: 'email', operator: 'equals' } filter.
  • New — POST /v1/emails/import. Bring existing html, mjml, or jsx into an editable Brew design (external images are re-hosted on the CDN). Usage-metered.
  • Semantic brand-image search. GET /v1/brand/images?q= runs a credit-metered vector search (plus ?type / ?aspectRatio); the no-q browse stays free.
  • Also removed: POST /v1/audiences/{audienceId}/duplicate.
The TypeScript SDK keeps its factory names: every read is one list() (id/include/filters in the args), send/sendTest merged into send(input) with test?, the contact read is search(), and emails.import() is new. See the updated API introduction, SDK overview, and the @brew.new/sdk changelog.
June 2026
API v1 restructure — decoupled sends, 3-domain surface, /v1/help

Public API v1 — decoupled-send restructure

A breaking restructure of the v1 surface around a single insight: emails are pure designs, and a send is the unit of delivery and analytics. A design now carries no type and no send state — it can be sent any number of times.
  • Sends, unified. Campaign sends and automation sends are one entity. A campaign records one send; an automation records one send per recipient. Every delivery event attaches to its sendId.
  • Three clear domains. automations owns /v1/automations/* plus /v1/automations/triggers(/{id}/fire) (renamed from /v1/triggers) and /v1/automations/runs(/{runId}) (moved from /v1/analytics/automations/runs). analytics owns all reporting, including /v1/analytics/sends(/{sendId}/events) (send reads, moved off GET /v1/sends) and /v1/analytics/trigger-instances (the fired-trigger log, moved off /v1/events). sends is the action only — POST /v1/sends and POST /v1/sends/test.
  • POST /v1/sends now takes either a saved audienceId or an inline to list (≤ 50) and returns a sendId you poll under /v1/analytics/sends.
  • GET /v1/help — a no-auth, structured-JSON catalog of the whole API (scopes, credits, rate limits, every endpoint) for MCP / agent discovery, alongside GET /v1/llms.txt.
  • No more dry_run. Credit-metered operations just charge on success (402 INSUFFICIENT_CREDITS when short); check your balance with GET /v1/account.
  • POST /v1/content/host-image is now credit-metered and saves the image into the brand image library.
  • Removed: /v1/me, /v1/usage (use GET /v1/account), /v1/integrations, the single-template GET /v1/templates/{emailId} (the list GET /v1/templates stays and now returns html + previewImage per row), and automation-run replay.
See the updated API introduction and the @brew.new/sdk changelog. The entries below describe earlier iterations of the v1 surface — paths noted there have since moved as summarized above.
June 2026
API v1 hardening — 7 new endpoints, pagination, scopes

Public API v1 — hardening pass

Seven new endpoints plus cross-cutting normalization across the whole API.
  • New observability + discovery endpoints: GET /v1/sends (campaign send list + stats), GET /v1/brand (the key’s brand + readiness), GET /v1/usage (API request volume + trend), GET /v1/analytics/events (unified event explorer — filter by recipientEmail for a contact’s full timeline), and GET /v1/integrations (triggerable integration-event catalog).
  • Test/preview sends: POST /v1/sends { mode: 'test' } sends a one-off preview to a single inbox — no verified domain or audience required, and it doesn’t consume the email’s live-send slot.
  • Automation run replay: POST /v1/automations/runs { automationRunId, mode: 'replay' } re-runs a prior run against the current saved draft.
  • Uniform cursor pagination: every list endpoint now accepts limit/cursor and returns a pagination envelope.
  • Lean lists + include=: GET /v1/templates and GET /v1/automations are lean by default — pass ?include=html / ?include=graph to opt into the heavy fields.
  • Granular scopes: new least-privilege domains, sends, and audiences scopes; the coarse scopes still satisfy them, so existing keys are unaffected.
New TypeScript SDK methods: brew.brand.get(), brew.usage.get(), brew.integrations.list(), brew.analytics.sends.{list,listAll,get}() + brew.emails.sendTest(), and brew.analytics.{events,eventsAll}(). See the updated API reference, the new API guides, and the @brew.new/sdk changelog.
June 2026
API v1 lifecycle expansion

Public API v1 — full lifecycle

The v1 API now covers the whole loop end-to-end for an org + brand API key.
  • Audiences are now full CRUD (POST/PATCH/DELETE + single fetch), and rows carry their filters, member count, and ISO timestamps.
  • Domains gained a full lifecycle: add → verify → set sender defaults → delete. GET /v1/domains now lists every domain (incl. pending rows + the DNS records to publish); ?sendableOnly=true returns just the send-ready set.
  • Analytics is now queryable: GET /v1/analytics/campaigns (lifetime per-campaign KPIs) and GET /v1/analytics/automations (windowed per-automation performance + totals).
  • Emails gained delete, version history (?include=versions), and non-destructive version restore.
Breaking: POST/PATCH /v1/triggers now return the uniform { triggers: [row] } envelope (was { trigger }); contact timestamps are ISO-8601 strings. See the updated API reference + the @brew.new/sdk changelog.
May 2026
Documentation refresh

Documentation refresh

Reorganized the docs to mirror the product. New top-level sections: Get started, Emails, Audience, Brand, Analytics, Reference. New keystone pages: How Brew works (chat, canvas, variants, imports, sending), Automations, and Multiple brands. The Automations page explains how marketing flows, transactional emails, and trigger events fit together.
April 2026
Multi-brand, AI agents, and Trigger events

Multi-brand

Run more than one brand from a single account. Each brand has its own audience, automations, sending domain, and analytics. Switch brands from the sidebar and the entire app re-scopes. Available on Pro and higher plans.

Use Brew with AI agents

Brew is now positioned as the first AI-native ESP. Any agent that can call an HTTP API can drive the product end-to-end. Already works with OpenClaw, Claude, Replit, Lovable, and Viktor. New “AI agents” group in Integrations.

Trigger events admin

New Settings → Triggers surface for defining custom events with payload schemas. Test events end-to-end before going live. Stripe events are auto-discovered from connected Stripe accounts.

Brand switcher in the sidebar

Active brand now lives at the top of the sidebar with a one-click switcher. Brand-scoped data updates everywhere as you switch.
March 2026
Five new ESP integrations and one-click OAuth

ESP integrations rollout

Five new export targets so you can keep sending where your team already works: Iterable, Postmark, OneSignal, Mailgun, and SendGrid. Each takes a single API key and exports Brew templates directly into your account.

OAuth for Mailchimp, Mailjet, and Stripe

Mailchimp connects with one-click OAuth. Mailjet and Stripe connections were updated for the new OAuth flow. No more manual API key copying for the providers that support it.

Canvas resize and version preview

You can now drag-resize any email on the canvas and preview previous versions inline without leaving the board. Layouts persist across reloads.
February 2026
Contact verification, sender health, and onboarding

Contact verification

Contacts added through any path (CSV, API, integrations, or manual entry) are now automatically verified. Invalid, spam trap, and risky addresses are suppressed before you ever send to them.

Sender health monitoring

New sender health dashboard tracks your bounce rate, complaint rate, and contact quality in real time. If thresholds are exceeded, sending pauses automatically to protect your reputation.

Onboarding improvements

Simplified onboarding flow with cleaner step-by-step guidance. The domain setup step now redirects to Settings instead of embedding the full configuration inline.
January 2026
HubSpot, automations, and visual editing

HubSpot Integration

Connect your HubSpot account via OAuth and export email templates directly to HubSpot Marketing Hub. Exported emails appear in a dedicated Brew folder, and re-exporting updates the existing version.

Custom Automation Events

Trigger automations via API with typed payloads. Define custom events with specific data schemas for precise control over your email workflows.

Visual Email Editor

Edit text, images, and links directly in the email preview. Click any element to modify it inline - no need to go back to the AI chat. Changes are saved as new versions.

Reference Emails

Set a design reference for your brand. Forward an email you like, browse templates from other brands, or upload HTML. Brew uses it as a design blueprint while applying your own brand identity.

Domain Settings Redesign

New stepper-based domain setup with live email preview, collapsible advanced options, grouped DNS records with color-coded verification status, and a “Powered by Resend” trust badge.

Billing Improvements

Credits and email sends now displayed as circles on the Billing page with inline sparkline charts. Usage tab removed from Settings and consolidated into the Billing page.

Agent V2

Reduced context window for faster, more focused AI responses. Rolling conversation context keeps recent messages relevant without hitting token limits.

Custom Brand Instructions

Add specific guidelines for how the AI should write for your brand - tone preferences, words to avoid, formatting rules, and more.

API Specification

Published OpenAPI 3.1 specification covering contacts, automations, triggers, automation runs, emails, sends, audiences, domains, fields, and templates. Official TypeScript SDK (@brew.new/sdk) is available; generate clients for other languages from the OpenAPI spec at https://brew.new/openapi/public-api-v1.yaml (see Generate your own SDK).
December 2025
GIF generation, analytics, and templates

GIF Generation

Generate animated GIFs for your emails using AI. Powered by Vercel Sandbox for reliable rendering.

Analytics Dashboard

Full analytics page with event tracking - delivered, opened, clicked, bounced, and complained. Includes geographic data visualization, recipient search, and time-range filtering from 1 hour to 1 year.

Visual Image Editing

Click any image in the email preview to replace, resize, or edit it. AI-powered image editing with link preservation.Browse and remix thousands of real email templates from leading brands. All template pages are statically generated for instant loading. Remix any template with your brand identity in one click.

Marketing Website

Launched the public marketing site with pricing page, company showcase, testimonials, blog, and FAQ section.

Brevo Integration

Export email templates to Brevo for email marketing and transactional emails.
November 2025
Sending, audience management, and the platform

Email Sending

Send campaigns and transactional emails directly from Brew. Full Resend integration for best-in-class deliverability with domain verification, DKIM, SPF, and DMARC support.

Audience Management

Import contacts via CSV upload. View contact details with activity timelines showing all email engagement events. Create dynamic audiences using AI-powered natural language filtering.

Automations

Build automated email sequences triggered by user actions or time delays. Visual flow editor with conditional branching and multiple email steps.

Brand Extraction

Enter any website URL and Brew extracts your logo, colors, fonts, and brand style in about 30 seconds. Every AI-generated email automatically matches your brand.

Transactional Emails

Send transactional emails via API - order confirmations, password resets, notifications. Each transactional email is AI-generated and on-brand.

Slack Integration

Create and iterate on emails directly from Slack. Mention @brew in any channel or thread to start a conversation with the AI email assistant.

API Keys

Create and manage API keys from Settings for programmatic access to contacts, automations, and transactional email endpoints.

Inbound Email Processing

Forward emails to your Brew agent address and they’re automatically converted from HTML to editable format, ready to remix with your brand.
October 2025
AI email creation and the foundation

AI Email Creation

Describe what you want in plain English and Brew generates a complete, responsive email with proper structure, styling, and content. Supports campaigns, automations, and transactional emails.

Multi-Model Support

Choose from Claude (Anthropic), GPT (OpenAI), and Gemini (Google) for email generation. Extended thinking mode available for deeper analysis and higher quality output.

AI Image Generation

Generate custom hero images, product photos, and illustrations directly in your emails using AI.

Email Remixing

Transform any email template with your brand identity while preserving the original layout and structure.

Version History

Every edit creates a new version. Browse previous versions and restore any earlier state of your email.

Reasoning Mode

Enable extended thinking for the AI to show its reasoning process, producing more thoughtful and strategic email content.