curl --request POST \
--url https://brew.new/api/v1/emails/{emailId}/client-previews \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'{
"previewId": "<string>",
"emailId": "<string>",
"status": "queued",
"previews": [
{
"id": "<string>",
"label": "<string>",
"category": "gmail",
"os": "<string>",
"dark": true,
"status": "running",
"imageUrl": "<string>",
"retryable": true,
"reason": "pending"
}
],
"pending": [
"<string>"
],
"createdAt": "2023-11-07T05:31:56Z",
"expiresAt": "2023-11-07T05:31:56Z",
"nextPollAfterMs": 1,
"credits": {
"cost": 123,
"status": "reserved"
},
"emailVersionId": "<string>"
}Preview across clients & devices
Starts a durable rendering job for the selected email version across real email clients, including Gmail, Outlook, Apple Mail, iOS, and dark-mode variants. Omit emailVersionId to pin the current version at admission.
Pass supported client IDs or send for the default spread. Returns previewId and per-client progress immediately. Read GET /v1/emails/client-previews/ to resume; polling never creates another provider test.
Reserves 10 credits at admission and settles once when useful output exists. If the job produces no usable image, the reservation is released. Failed clients include individual reasons and retryability; a partial result retains all successful full-size links.
curl --request POST \
--url https://brew.new/api/v1/emails/{emailId}/client-previews \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'{
"previewId": "<string>",
"emailId": "<string>",
"status": "queued",
"previews": [
{
"id": "<string>",
"label": "<string>",
"category": "gmail",
"os": "<string>",
"dark": true,
"status": "running",
"imageUrl": "<string>",
"retryable": true,
"reason": "pending"
}
],
"pending": [
"<string>"
],
"createdAt": "2023-11-07T05:31:56Z",
"expiresAt": "2023-11-07T05:31:56Z",
"nextPollAfterMs": 1,
"credits": {
"cost": 123,
"status": "reserved"
},
"emailVersionId": "<string>"
}Authorizations
Send your Brew API key as Authorization: Bearer brew_xxx.
Headers
Optional idempotency key for safe retries. Reusing the same key with the same request body returns the original response for 24 hours.
1 - 100The 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 - 64Path Parameters
Design id returned by POST /v1/emails and listed by GET /v1/emails.
1 - 64"2SmZOWV3ZQ7W5x6g3m4pA"
Body
Exact email version to render; omit for latest.
1 - 100Client ids to render. Omit for popular Gmail, Outlook, Apple Mail and iOS clients. Supported: gmailcom-lm_chrcurrent_win10 = Gmail (Web); gmailcom-dm_chrcurrent_win10 = Gmail (Web, Dark); android16_gmailapp_pixel10_lm = Gmail (Android); android16_gmailapp_pixel10_dm = Gmail (Android, Dark); iphone16gmail_18 = Gmail (iOS); outlook2021_win11_lm_dt = Outlook 2021 (Windows); outlook2021_win11_dm_dt = Outlook 2021 (Windows, Dark); o365_w10_lm_dt = Outlook 365 (Windows); outlookcom-lm_chrcurrent_win10 = Outlook.com (Web); applemail16 = Apple Mail (macOS); applemail16_dm = Apple Mail (macOS, Dark); iphone16_18 = Apple Mail (iOS); iphone16_18_dm = Apple Mail (iOS, Dark); yahoocom-lm_chrcurrent_win10 = Yahoo Mail (Web).
1 - 12 elements1 - 80Response
An existing matching rendering job, including terminal results when already complete.
The job: queued or running until every client settles, then completed, partially_completed (some screenshots failed) or failed.
queued, running, completed, partially_completed, failed Show child attributes
Show child attributes
x >= 0Show child attributes
Show child attributes
Portable version ID when present. previewId pins the saved snapshot.
Was this page helpful?