Sends an email design. Polymorphic on test: a campaign send mints a new Send (the unit of delivery and analytics) and delivers to a saved audience or an inline list through a verified domain; test: true delivers one synchronous QA copy to a single address and writes no send row.
Use when a design is ready to go out. For per-recipient event-driven delivery, publish an automation and fire its trigger (fireTrigger).
Input Campaign (test omitted or false): emailId (optionally pinned to emailVersionId), a verified domainId, subject, and exactly one of audienceId (a saved audience, or "all" for every contact in the brand) or to (one address or an array of up to 50). Optional from ({ email, name? }, an address on the send domain), previewText, replyTo, scheduledAt, one delivery mode (gradualSend, or smartSend: true for Intelligent Send: each recipient with past opens or clicks gets it at the upcoming hour, within 24 hours, their own history makes them most likely to open, and the rest right away; it composes with scheduledAt), and consent provenance (source, optional capturedAt, policyVersion, evidence) for inline recipients that are not yet contacts: each is created as a subscribed contact carrying that record. An existing opt-out is never re-subscribed. Inline recipients face the same unsubscribe and suppression gate and per-recipient quota as audience sends.
Test (test: true): emailId, subject, one to address, optional emailVersionId, previewText, replyTo, domainId (a verified org-owned domain; otherwise the Brew default sender, and an unverified or foreign domain is rejected, never downgraded), from ({ email, name? }, an address on that domain), variables (example values for {{ var | fallback }} merge tags; a value wins over the fallback) and payload (template data; nested JSON renders via Liquid as trigger.*); the subject carries a [TEST] prefix. A test reaches only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; anyone else is 422 TEST_RECIPIENT_NOT_ALLOWED (details.recipients). The same design can be sent unlimited times; every campaign call mints a new send.
Returns campaign 202 { status: 'queued' | 'scheduled', sendId, scheduledAt?, warnings? } (poll getSend; warnings[] carries one CONSENT_RECORD_MISSING per inline recipient that is a subscribed contact with no consent record, and one RECIPIENTS_EXCLUDED with the counts when unsubscribed, suppressed, undeliverable or permission-less recipients will be skipped); test 200 { status: 'completed', recipient }.
Errors400 INVALID_REQUEST (param: subject) when subject has a line break or runs over 1000 characters (993 on a test send, for the [TEST] prefix), judged on the text every recipient receives; 404 EMAIL_NOT_FOUND, DOMAIN_NOT_FOUND, AUDIENCE_NOT_FOUND (a resource in another brand also surfaces as 404); 422 EMAIL_NOT_READY, DOMAIN_NOT_READY, DOMAIN_PURPOSE_NOT_ALLOWED, LIQUID_RENDER_ERROR, TEST_RECIPIENT_NOT_ALLOWED; 422 CONSENT_REQUIRED when an inline marketing recipient has no contact record with marketing consent and no consent was supplied (details.recipients); 422 RECIPIENT_UNSUBSCRIBED when an inline recipient is an existing contact who opted out (details.recipients, never re-subscribed); 422 NO_ELIGIBLE_RECIPIENTS when an immediate send would reach nobody because every contact it targets is excluded (details.eligibility = { total, eligible, excluded: { unsubscribed, suppressed, invalidEmail, consentRequired? } }, each address counted once; no send is created, while a scheduled send is accepted instead); 422 EMAIL_IMAGES_MISSING when the email shows a cdn.brew.new image that does not exist (details.missingImages[]; a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access); 402 SEND_QUOTA_EXCEEDED when the plan’s monthly volume would be exceeded (no Retry-After).
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.
The one address that receives this test. It must be a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain.
OPTIONAL verified sending domain for this test. Omit for the Brew default sender (hello@email.brew.new). Must be a verified domain owned by this org/brand — an unverified or foreign domain is rejected (404/422), never silently downgraded to the Brew default.
Example values for {{ var | fallback }} merge tags in the subject, previewText, and body. A supplied value wins over contact fields and the declared fallback; undefined variables render their fallback (or empty). Max 25 entries; keys must match the merge-tag grammar (letter/_/$ start, then word chars/dots/$, max 64 chars); values max 256 chars.
Nested JSON template data, exposed to the ONE Liquid engine as trigger.* / payload.* and as top-level keys. Nested values are always legal and resolve via dotted access ({{ plan.name }}) and {% for %}. Flat variables resolve {{ tag | fallback }} merge tags at higher precedence; send both if a design mixes syntaxes.
Show child attributes
Response
The TEST send (test: true) was delivered synchronously to the single recipient.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Brew Help Docs","colors":{"primary":"#FF772D","light":"#FF772D","dark":"#FF772D"},"logo":{"light":"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/logo/lightmode.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=5e906ff65142dc905a773e7747b47816","dark":"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/logo/darkmode.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=d9aa0d94ceaaf92451334849952286c9","href":"https://brew.new/"},"favicon":"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/favicon.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=bb65587bb488372fc3a5faa7a6b4d2fe","appearance":{"default":"system","strict":false},"background":{"color":{"light":"#f7f7f7","dark":"#262624"}},"navbar":{"links":[{"href":"https://cal.com/team/brewdotnew/brew-demo","label":"Talk with founders"}],"primary":{"type":"button","label":"Log In","href":"https://brew.new/sign-in"}},"footer":{"socials":{"website":"https://www.brew.new","youtube":"https://www.youtube.com/@brewdotnew","twitter":"https://x.com/brewdotnew","linkedin":"https://www.linkedin.com/company/brewdotnew"}},"search":{"prompt":"Ask any question about Brew"},"seo":{"metatags":{"og:image":"https://docs.brew.new/images/og/default.png","description":"Brew is the AI-native email platform for modern teams and AI agents. Describe the email and Brew designs it on brand, builds the audience, and sends it.","keywords":"AI email marketing, Brew, AI-native email platform, on-brand email, email automations, email analytics, AI agents, MCP email server","robots":"index, follow"},"indexing":"all"},"fonts":{"family":"Inter"},"contextual":{"options":["copy","view","claude","chatgpt","grok","perplexity","mcp","cursor","vscode","download-spec"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"brew-796f053a","hasAudioNarration":false,"actualSubdomain":"brew-796f053a","customDomains":["docs.brew.new"],"gitSource":{"type":"github","owner":"getbrew","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aee1463523750835f01043f","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Developers","count":175},{"language":"default","tag":"Public API v1","count":126},{"language":"default","tag":"Changelog","count":86},{"language":"default","tag":"Docs","count":40},{"language":"default","tag":"2026","count":37},{"language":"default","tag":"Integrations","count":33},{"language":"default","tag":"Emails","count":30},{"language":"default","tag":"Automations","count":29},{"language":"default","tag":"Guides","count":27},{"language":"default","tag":"API Contracts","count":14}]},"assistantConfig":{"deflection":{"enabled":true,"email":"philip@brew.new","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/public-v1/emails/send-an-email","slug":"/api-reference/public-v1/emails/send-an-email","pageMetadata":{"title":"Send an email","description":"Sends an email design. Polymorphic on `test`: a campaign send mints a new `Send` (the unit of delivery and analytics) and delivers to a saved audience or an inline list through a verified domain; `test: true` delivers one synchronous QA copy to a single address and writes no send row.\n\n**Use when** a design is ready to go out. For per-recipient event-driven delivery, publish an automation and fire its trigger (`fireTrigger`).\n\n**Input** Campaign (`test` omitted or `false`): `emailId` (optionally pinned to `emailVersionId`), a verified `domainId`, `subject`, and exactly one of `audienceId` (a saved audience, or `\"all\"` for every contact in the brand) or `to` (one address or an array of up to 50). Optional `from` (`{ email, name? }`, an address on the send domain), `previewText`, `replyTo`, `scheduledAt`, one delivery mode (`gradualSend`, or `smartSend: true` for Intelligent Send: each recipient with past opens or clicks gets it at the upcoming hour, within 24 hours, their own history makes them most likely to open, and the rest right away; it composes with `scheduledAt`), and `consent` provenance (`source`, optional `capturedAt`, `policyVersion`, `evidence`) for inline recipients that are not yet contacts: each is created as a subscribed contact carrying that record. An existing opt-out is never re-subscribed. Inline recipients face the same unsubscribe and suppression gate and per-recipient quota as audience sends.\n\nTest (`test: true`): `emailId`, `subject`, one `to` address, optional `emailVersionId`, `previewText`, `replyTo`, `domainId` (a verified org-owned domain; otherwise the Brew default sender, and an unverified or foreign domain is rejected, never downgraded), `from` (`{ email, name? }`, an address on that domain), `variables` (example values for `{{ var | fallback }}` merge tags; a value wins over the fallback) and `payload` (template data; nested JSON renders via Liquid as `trigger.*`); the subject carries a `[TEST]` prefix. A test reaches only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; anyone else is `422 TEST_RECIPIENT_NOT_ALLOWED` (`details.recipients`). The same design can be sent unlimited times; every campaign call mints a new send.\n\n**Returns** campaign `202 { status: 'queued' | 'scheduled', sendId, scheduledAt?, warnings? }` (poll `getSend`; `warnings[]` carries one `CONSENT_RECORD_MISSING` per inline recipient that is a subscribed contact with no consent record, and one `RECIPIENTS_EXCLUDED` with the counts when unsubscribed, suppressed, undeliverable or permission-less recipients will be skipped); test `200 { status: 'completed', recipient }`.\n\n**Errors** `400 INVALID_REQUEST` (`param: subject`) when `subject` has a line break or runs over 1000 characters (993 on a test send, for the `[TEST]` prefix), judged on the text every recipient receives; `404 EMAIL_NOT_FOUND`, `DOMAIN_NOT_FOUND`, `AUDIENCE_NOT_FOUND` (a resource in another brand also surfaces as `404`); `422 EMAIL_NOT_READY`, `DOMAIN_NOT_READY`, `DOMAIN_PURPOSE_NOT_ALLOWED`, `LIQUID_RENDER_ERROR`, `TEST_RECIPIENT_NOT_ALLOWED`; `422 CONSENT_REQUIRED` when an inline marketing recipient has no contact record with marketing consent and no `consent` was supplied (`details.recipients`); `422 RECIPIENT_UNSUBSCRIBED` when an inline recipient is an existing contact who opted out (`details.recipients`, never re-subscribed); `422 NO_ELIGIBLE_RECIPIENTS` when an immediate send would reach nobody because every contact it targets is excluded (`details.eligibility` = `{ total, eligible, excluded: { unsubscribed, suppressed, invalidEmail, consentRequired? } }`, each address counted once; no send is created, while a scheduled send is accepted instead); `422 EMAIL_IMAGES_MISSING` when the email shows a cdn.brew.new image that does not exist (`details.missingImages[]`; a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has `emails` access); `402 SEND_QUOTA_EXCEEDED` when the plan's monthly volume would be exceeded (no `Retry-After`).\n\n**See also** `listSends`, `cancelSend`, `fireTrigger`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends","href":"/api-reference/public-v1/emails/send-an-email","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Sends an email design. Polymorphic on \", _jsx(_components.code, {\n children: \"test\"\n }), \": a campaign send mints a new \", _jsx(_components.code, {\n children: \"Send\"\n }), \" (the unit of delivery and analytics) and delivers to a saved audience or an inline list through a verified domain; \", _jsx(_components.code, {\n children: \"test: true\"\n }), \" delivers one synchronous QA copy to a single address and writes no send row.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Use when\"\n }), \" a design is ready to go out. For per-recipient event-driven delivery, publish an automation and fire its trigger (\", _jsx(_components.code, {\n children: \"fireTrigger\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Input\"\n }), \" Campaign (\", _jsx(_components.code, {\n children: \"test\"\n }), \" omitted or \", _jsx(_components.code, {\n children: \"false\"\n }), \"): \", _jsx(_components.code, {\n children: \"emailId\"\n }), \" (optionally pinned to \", _jsx(_components.code, {\n children: \"emailVersionId\"\n }), \"), a verified \", _jsx(_components.code, {\n children: \"domainId\"\n }), \", \", _jsx(_components.code, {\n children: \"subject\"\n }), \", and exactly one of \", _jsx(_components.code, {\n children: \"audienceId\"\n }), \" (a saved audience, or \", _jsx(_components.code, {\n children: \"\\\"all\\\"\"\n }), \" for every contact in the brand) or \", _jsx(_components.code, {\n children: \"to\"\n }), \" (one address or an array of up to 50). Optional \", _jsx(_components.code, {\n children: \"from\"\n }), \" (\", _jsx(_components.code, {\n children: \"{ email, name? }\"\n }), \", an address on the send domain), \", _jsx(_components.code, {\n children: \"previewText\"\n }), \", \", _jsx(_components.code, {\n children: \"replyTo\"\n }), \", \", _jsx(_components.code, {\n children: \"scheduledAt\"\n }), \", one delivery mode (\", _jsx(_components.code, {\n children: \"gradualSend\"\n }), \", or \", _jsx(_components.code, {\n children: \"smartSend: true\"\n }), \" for Intelligent Send: each recipient with past opens or clicks gets it at the upcoming hour, within 24 hours, their own history makes them most likely to open, and the rest right away; it composes with \", _jsx(_components.code, {\n children: \"scheduledAt\"\n }), \"), and \", _jsx(_components.code, {\n children: \"consent\"\n }), \" provenance (\", _jsx(_components.code, {\n children: \"source\"\n }), \", optional \", _jsx(_components.code, {\n children: \"capturedAt\"\n }), \", \", _jsx(_components.code, {\n children: \"policyVersion\"\n }), \", \", _jsx(_components.code, {\n children: \"evidence\"\n }), \") for inline recipients that are not yet contacts: each is created as a subscribed contact carrying that record. An existing opt-out is never re-subscribed. Inline recipients face the same unsubscribe and suppression gate and per-recipient quota as audience sends.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Test (\", _jsx(_components.code, {\n children: \"test: true\"\n }), \"): \", _jsx(_components.code, {\n children: \"emailId\"\n }), \", \", _jsx(_components.code, {\n children: \"subject\"\n }), \", one \", _jsx(_components.code, {\n children: \"to\"\n }), \" address, optional \", _jsx(_components.code, {\n children: \"emailVersionId\"\n }), \", \", _jsx(_components.code, {\n children: \"previewText\"\n }), \", \", _jsx(_components.code, {\n children: \"replyTo\"\n }), \", \", _jsx(_components.code, {\n children: \"domainId\"\n }), \" (a verified org-owned domain; otherwise the Brew default sender, and an unverified or foreign domain is rejected, never downgraded), \", _jsx(_components.code, {\n children: \"from\"\n }), \" (\", _jsx(_components.code, {\n children: \"{ email, name? }\"\n }), \", an address on that domain), \", _jsx(_components.code, {\n children: \"variables\"\n }), \" (example values for \", _jsx(_components.code, {\n children: \"{{ var | fallback }}\"\n }), \" merge tags; a value wins over the fallback) and \", _jsx(_components.code, {\n children: \"payload\"\n }), \" (template data; nested JSON renders via Liquid as \", _jsx(_components.code, {\n children: \"trigger.*\"\n }), \"); the subject carries a \", _jsx(_components.code, {\n children: \"[TEST]\"\n }), \" prefix. A test reaches only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; anyone else is \", _jsx(_components.code, {\n children: \"422 TEST_RECIPIENT_NOT_ALLOWED\"\n }), \" (\", _jsx(_components.code, {\n children: \"details.recipients\"\n }), \"). The same design can be sent unlimited times; every campaign call mints a new send.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Returns\"\n }), \" campaign \", _jsx(_components.code, {\n children: \"202 { status: 'queued' | 'scheduled', sendId, scheduledAt?, warnings? }\"\n }), \" (poll \", _jsx(_components.code, {\n children: \"getSend\"\n }), \"; \", _jsx(_components.code, {\n children: \"warnings[]\"\n }), \" carries one \", _jsx(_components.code, {\n children: \"CONSENT_RECORD_MISSING\"\n }), \" per inline recipient that is a subscribed contact with no consent record, and one \", _jsx(_components.code, {\n children: \"RECIPIENTS_EXCLUDED\"\n }), \" with the counts when unsubscribed, suppressed, undeliverable or permission-less recipients will be skipped); test \", _jsx(_components.code, {\n children: \"200 { status: 'completed', recipient }\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Errors\"\n }), \" \", _jsx(_components.code, {\n children: \"400 INVALID_REQUEST\"\n }), \" (\", _jsx(_components.code, {\n children: \"param: subject\"\n }), \") when \", _jsx(_components.code, {\n children: \"subject\"\n }), \" has a line break or runs over 1000 characters (993 on a test send, for the \", _jsx(_components.code, {\n children: \"[TEST]\"\n }), \" prefix), judged on the text every recipient receives; \", _jsx(_components.code, {\n children: \"404 EMAIL_NOT_FOUND\"\n }), \", \", _jsx(_components.code, {\n children: \"DOMAIN_NOT_FOUND\"\n }), \", \", _jsx(_components.code, {\n children: \"AUDIENCE_NOT_FOUND\"\n }), \" (a resource in another brand also surfaces as \", _jsx(_components.code, {\n children: \"404\"\n }), \"); \", _jsx(_components.code, {\n children: \"422 EMAIL_NOT_READY\"\n }), \", \", _jsx(_components.code, {\n children: \"DOMAIN_NOT_READY\"\n }), \", \", _jsx(_components.code, {\n children: \"DOMAIN_PURPOSE_NOT_ALLOWED\"\n }), \", \", _jsx(_components.code, {\n children: \"LIQUID_RENDER_ERROR\"\n }), \", \", _jsx(_components.code, {\n children: \"TEST_RECIPIENT_NOT_ALLOWED\"\n }), \"; \", _jsx(_components.code, {\n children: \"422 CONSENT_REQUIRED\"\n }), \" when an inline marketing recipient has no contact record with marketing consent and no \", _jsx(_components.code, {\n children: \"consent\"\n }), \" was supplied (\", _jsx(_components.code, {\n children: \"details.recipients\"\n }), \"); \", _jsx(_components.code, {\n children: \"422 RECIPIENT_UNSUBSCRIBED\"\n }), \" when an inline recipient is an existing contact who opted out (\", _jsx(_components.code, {\n children: \"details.recipients\"\n }), \", never re-subscribed); \", _jsx(_components.code, {\n children: \"422 NO_ELIGIBLE_RECIPIENTS\"\n }), \" when an immediate send would reach nobody because every contact it targets is excluded (\", _jsx(_components.code, {\n children: \"details.eligibility\"\n }), \" = \", _jsx(_components.code, {\n children: \"{ total, eligible, excluded: { unsubscribed, suppressed, invalidEmail, consentRequired? } }\"\n }), \", each address counted once; no send is created, while a scheduled send is accepted instead); \", _jsx(_components.code, {\n children: \"422 EMAIL_IMAGES_MISSING\"\n }), \" when the email shows a cdn.brew.new image that does not exist (\", _jsx(_components.code, {\n children: \"details.missingImages[]\"\n }), \"; a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has \", _jsx(_components.code, {\n children: \"emails\"\n }), \" access); \", _jsx(_components.code, {\n children: \"402 SEND_QUOTA_EXCEEDED\"\n }), \" when the plan’s monthly volume would be exceeded (no \", _jsx(_components.code, {\n children: \"Retry-After\"\n }), \").\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"See also\"\n }), \" \", _jsx(_components.code, {\n children: \"listSends\"\n }), \", \", _jsx(_components.code, {\n children: \"cancelSend\"\n }), \", \", _jsx(_components.code, {\n children: \"fireTrigger\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Send an email","description":"Sends an email design. Polymorphic on `test`: a campaign send mints a new `Send` (the unit of delivery and analytics) and delivers to a saved audience or an inline list through a verified domain; `test: true` delivers one synchronous QA copy to a single address and writes no send row.\n\n**Use when** a design is ready to go out. For per-recipient event-driven delivery, publish an automation and fire its trigger (`fireTrigger`).\n\n**Input** Campaign (`test` omitted or `false`): `emailId` (optionally pinned to `emailVersionId`), a verified `domainId`, `subject`, and exactly one of `audienceId` (a saved audience, or `\"all\"` for every contact in the brand) or `to` (one address or an array of up to 50). Optional `from` (`{ email, name? }`, an address on the send domain), `previewText`, `replyTo`, `scheduledAt`, one delivery mode (`gradualSend`, or `smartSend: true` for Intelligent Send: each recipient with past opens or clicks gets it at the upcoming hour, within 24 hours, their own history makes them most likely to open, and the rest right away; it composes with `scheduledAt`), and `consent` provenance (`source`, optional `capturedAt`, `policyVersion`, `evidence`) for inline recipients that are not yet contacts: each is created as a subscribed contact carrying that record. An existing opt-out is never re-subscribed. Inline recipients face the same unsubscribe and suppression gate and per-recipient quota as audience sends.\n\nTest (`test: true`): `emailId`, `subject`, one `to` address, optional `emailVersionId`, `previewText`, `replyTo`, `domainId` (a verified org-owned domain; otherwise the Brew default sender, and an unverified or foreign domain is rejected, never downgraded), `from` (`{ email, name? }`, an address on that domain), `variables` (example values for `{{ var | fallback }}` merge tags; a value wins over the fallback) and `payload` (template data; nested JSON renders via Liquid as `trigger.*`); the subject carries a `[TEST]` prefix. A test reaches only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; anyone else is `422 TEST_RECIPIENT_NOT_ALLOWED` (`details.recipients`). The same design can be sent unlimited times; every campaign call mints a new send.\n\n**Returns** campaign `202 { status: 'queued' | 'scheduled', sendId, scheduledAt?, warnings? }` (poll `getSend`; `warnings[]` carries one `CONSENT_RECORD_MISSING` per inline recipient that is a subscribed contact with no consent record, and one `RECIPIENTS_EXCLUDED` with the counts when unsubscribed, suppressed, undeliverable or permission-less recipients will be skipped); test `200 { status: 'completed', recipient }`.\n\n**Errors** `400 INVALID_REQUEST` (`param: subject`) when `subject` has a line break or runs over 1000 characters (993 on a test send, for the `[TEST]` prefix), judged on the text every recipient receives; `404 EMAIL_NOT_FOUND`, `DOMAIN_NOT_FOUND`, `AUDIENCE_NOT_FOUND` (a resource in another brand also surfaces as `404`); `422 EMAIL_NOT_READY`, `DOMAIN_NOT_READY`, `DOMAIN_PURPOSE_NOT_ALLOWED`, `LIQUID_RENDER_ERROR`, `TEST_RECIPIENT_NOT_ALLOWED`; `422 CONSENT_REQUIRED` when an inline marketing recipient has no contact record with marketing consent and no `consent` was supplied (`details.recipients`); `422 RECIPIENT_UNSUBSCRIBED` when an inline recipient is an existing contact who opted out (`details.recipients`, never re-subscribed); `422 NO_ELIGIBLE_RECIPIENTS` when an immediate send would reach nobody because every contact it targets is excluded (`details.eligibility` = `{ total, eligible, excluded: { unsubscribed, suppressed, invalidEmail, consentRequired? } }`, each address counted once; no send is created, while a scheduled send is accepted instead); `422 EMAIL_IMAGES_MISSING` when the email shows a cdn.brew.new image that does not exist (`details.missingImages[]`; a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has `emails` access); `402 SEND_QUOTA_EXCEEDED` when the plan's monthly volume would be exceeded (no `Retry-After`).\n\n**See also** `listSends`, `cancelSend`, `fireTrigger`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends","href":"/api-reference/public-v1/emails/send-an-email","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/brew-796f053a/b7b4876a6d26628c/ask-ai-menu.js"],"openApiReferenceData":{"operation":{"operationId":"createSend","tags":["Emails"],"summary":"Send an email","description":"Sends an email design. Polymorphic on `test`: a campaign send mints a new `Send` (the unit of delivery and analytics) and delivers to a saved audience or an inline list through a verified domain; `test: true` delivers one synchronous QA copy to a single address and writes no send row.\n\n**Use when** a design is ready to go out. For per-recipient event-driven delivery, publish an automation and fire its trigger (`fireTrigger`).\n\n**Input** Campaign (`test` omitted or `false`): `emailId` (optionally pinned to `emailVersionId`), a verified `domainId`, `subject`, and exactly one of `audienceId` (a saved audience, or `\"all\"` for every contact in the brand) or `to` (one address or an array of up to 50). Optional `from` (`{ email, name? }`, an address on the send domain), `previewText`, `replyTo`, `scheduledAt`, one delivery mode (`gradualSend`, or `smartSend: true` for Intelligent Send: each recipient with past opens or clicks gets it at the upcoming hour, within 24 hours, their own history makes them most likely to open, and the rest right away; it composes with `scheduledAt`), and `consent` provenance (`source`, optional `capturedAt`, `policyVersion`, `evidence`) for inline recipients that are not yet contacts: each is created as a subscribed contact carrying that record. An existing opt-out is never re-subscribed. Inline recipients face the same unsubscribe and suppression gate and per-recipient quota as audience sends.\n\nTest (`test: true`): `emailId`, `subject`, one `to` address, optional `emailVersionId`, `previewText`, `replyTo`, `domainId` (a verified org-owned domain; otherwise the Brew default sender, and an unverified or foreign domain is rejected, never downgraded), `from` (`{ email, name? }`, an address on that domain), `variables` (example values for `{{ var | fallback }}` merge tags; a value wins over the fallback) and `payload` (template data; nested JSON renders via Liquid as `trigger.*`); the subject carries a `[TEST]` prefix. A test reaches only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; anyone else is `422 TEST_RECIPIENT_NOT_ALLOWED` (`details.recipients`). The same design can be sent unlimited times; every campaign call mints a new send.\n\n**Returns** campaign `202 { status: 'queued' | 'scheduled', sendId, scheduledAt?, warnings? }` (poll `getSend`; `warnings[]` carries one `CONSENT_RECORD_MISSING` per inline recipient that is a subscribed contact with no consent record, and one `RECIPIENTS_EXCLUDED` with the counts when unsubscribed, suppressed, undeliverable or permission-less recipients will be skipped); test `200 { status: 'completed', recipient }`.\n\n**Errors** `400 INVALID_REQUEST` (`param: subject`) when `subject` has a line break or runs over 1000 characters (993 on a test send, for the `[TEST]` prefix), judged on the text every recipient receives; `404 EMAIL_NOT_FOUND`, `DOMAIN_NOT_FOUND`, `AUDIENCE_NOT_FOUND` (a resource in another brand also surfaces as `404`); `422 EMAIL_NOT_READY`, `DOMAIN_NOT_READY`, `DOMAIN_PURPOSE_NOT_ALLOWED`, `LIQUID_RENDER_ERROR`, `TEST_RECIPIENT_NOT_ALLOWED`; `422 CONSENT_REQUIRED` when an inline marketing recipient has no contact record with marketing consent and no `consent` was supplied (`details.recipients`); `422 RECIPIENT_UNSUBSCRIBED` when an inline recipient is an existing contact who opted out (`details.recipients`, never re-subscribed); `422 NO_ELIGIBLE_RECIPIENTS` when an immediate send would reach nobody because every contact it targets is excluded (`details.eligibility` = `{ total, eligible, excluded: { unsubscribed, suppressed, invalidEmail, consentRequired? } }`, each address counted once; no send is created, while a scheduled send is accepted instead); `422 EMAIL_IMAGES_MISSING` when the email shows a cdn.brew.new image that does not exist (`details.missingImages[]`; a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has `emails` access); `402 SEND_QUOTA_EXCEEDED` when the plan's monthly volume would be exceeded (no `Retry-After`).\n\n**See also** `listSends`, `cancelSend`, `fireTrigger`.","parameters":["863b54a2-b933-4481-a3be-b2cb23f7b766","c158f043-c830-494a-b82b-258ed799cf84"],"requestBody":"d662a383-4ab1-4d66-88e2-89611b2d9667","responses":{"200":"d61aca10-c8ab-4ada-a693-b3292ba86dc6","202":"240a8f20-8516-49b6-9e6d-570124a406d2","400":"0441b14a-ea5b-4561-9fae-82b45fed7cc0","401":"6125ca55-cb73-4170-9a65-020ae4feb193","402":"77d1d725-8f9c-4f3b-bc32-019fc75f1234","403":"7ae8fe86-5a05-45a0-b5bf-43237f77a218","404":"c080054f-5bca-4d30-b88e-8dd40c839790","409":"29bc989e-fb35-4267-a716-c46a96440973","413":"6aa636e7-5358-43e2-9a97-14865ea6adcc","422":"f995f4d2-f1b8-4ee3-a995-8bb7bb4c7221","429":"e343234f-2005-4507-a3a1-5456c5eaaa88","500":"e2ebaf8f-4507-44bf-bb81-698fc2f95df7","503":"40373277-be3e-4c3b-8e8d-83b5e004f38f"},"x-brew-scope":"sends","x-brew-brand-scope":"brand","x-brew-idempotency":"fail_closed","x-brew-credited":false,"x-brew-rate-policy":"sends.write","method":"post","type":"path","servers":["16779731-d97b-4178-b35d-ab9db802c966","d75b81f5-e341-4448-9191-a43a58d2508e"],"security":["3becd03d-c396-4bc3-84c1-231cdbf0a23e","a3a3e731-b20f-48f7-873a-3123be78670a"],"path":"/v1/sends","baseUrlOptions":["https://brew.new/api","http://localhost:3000/api"],"title":"Send an email","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"863b54a2-b933-4481-a3be-b2cb23f7b766":{"name":"Idempotency-Key","in":"header","required":false,"description":"Optional idempotency key for safe retries. Reusing the same key with the same request body returns the original response for 24 hours.","schema":{"type":"string","minLength":1,"maxLength":100,"isRequired":false,"description":"Optional idempotency key for safe retries. Reusing the same key with the same request body returns the original response for 24 hours.","uniqueKey":"","typeLabel":"string"},"example":"api-request-2026-04-08-001"},"c158f043-c830-494a-b82b-258ed799cf84":{"name":"X-Brand-Id","in":"header","required":false,"description":"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`.","schema":{"type":"string","minLength":1,"maxLength":64,"isRequired":false,"description":"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`.","uniqueKey":"","typeLabel":"string"},"example":"kx7b3s7fapqz8mjm12ekz1kxdx87yceg"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["test","emailId","subject","to"],"properties":{"test":{"type":"boolean","enum":[true],"isRequired":true,"uniqueKey":"oneOf.0.test","typeLabel":"enum\u003cboolean>"},"emailId":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.emailId","typeLabel":"string"},"subject":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.subject","typeLabel":"string"},"to":{"type":"string","maxLength":254,"pattern":"^[a-zA-Z0-9!#$%\u0026'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%\u0026'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$","description":"The one address that receives this test. It must be a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain.","isRequired":true,"uniqueKey":"oneOf.0.to","typeLabel":"string"},"emailVersionId":{"type":"string","minLength":1,"uniqueKey":"oneOf.0.emailVersionId","typeLabel":"string"},"previewText":{"type":"string","maxLength":200,"description":"Inbox preheader for this test send — overrides the design's JSX \u003cPreview>. Omit to deliver the design's own preview line.","uniqueKey":"oneOf.0.previewText","typeLabel":"string"},"replyTo":{"type":"string","maxLength":254,"pattern":"^[a-zA-Z0-9!#$%\u0026'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%\u0026'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$","uniqueKey":"oneOf.0.replyTo","typeLabel":"string"},"domainId":{"type":"string","minLength":1,"description":"OPTIONAL verified sending domain for this test. Omit for the Brew default sender (hello@email.brew.new). Must be a verified domain owned by this org/brand — an unverified or foreign domain is rejected (404/422), never silently downgraded to the Brew default.","uniqueKey":"oneOf.0.domainId","typeLabel":"string"},"from":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Full from address; its host must be the domain named by `domainId`.","isRequired":true,"uniqueKey":"oneOf.0.from.email","typeLabel":"string\u003cemail>"},"name":{"type":"string","minLength":1,"maxLength":128,"description":"Sender display name.","uniqueKey":"oneOf.0.from.name","typeLabel":"string"}},"required":["email"],"additionalProperties":false,"description":"Sender override `{ email, name? }`; the address must be on the send domain. Omit to use the domain defaults.","uniqueKey":"oneOf.0.from","typeLabel":"object"},"variables":{"type":"object","additionalProperties":{"type":"string","maxLength":256,"uniqueKey":"oneOf.0.variables.additionalProperties","typeLabel":"string"},"description":"Example values for {{ var | fallback }} merge tags in the subject, previewText, and body. A supplied value wins over contact fields and the declared fallback; undefined variables render their fallback (or empty). Max 25 entries; keys must match the merge-tag grammar (letter/_/$ start, then word chars/dots/$, max 64 chars); values max 256 chars.","uniqueKey":"oneOf.0.variables","typeLabel":"object"},"payload":{"type":"object","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.payload.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"number","uniqueKey":"oneOf.0.payload.additionalProperties.oneOf.1","typeLabel":"number"},{"type":"boolean","uniqueKey":"oneOf.0.payload.additionalProperties.oneOf.2","typeLabel":"boolean"},{"type":"null","uniqueKey":"oneOf.0.payload.additionalProperties.oneOf.3","typeLabel":"null"},{"type":"array","items":{"oneOf":[{},{"type":"null","uniqueKey":"oneOf.0.payload.additionalProperties.oneOf.4.items.[INDEX].oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.payload.additionalProperties.oneOf.4.items.[INDEX]","typeLabel":"null"},"maxItems":250,"uniqueKey":"oneOf.0.payload.additionalProperties.oneOf.4","typeLabel":"null[]"},{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"oneOf.0.payload.additionalProperties.oneOf.5.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.payload.additionalProperties.oneOf.5.additionalProperties","typeLabel":"null"},"uniqueKey":"oneOf.0.payload.additionalProperties.oneOf.5","typeLabel":"object"}],"uniqueKey":"oneOf.0.payload.additionalProperties","typeLabel":"string | number | boolean | null | null[] | object"},"description":"Nested JSON template data, exposed to the ONE Liquid engine as trigger.* / payload.* and as top-level keys. Nested values are always legal and resolve via dotted access ({{ plan.name }}) and {% for %}. Flat `variables` resolve {{ tag | fallback }} merge tags at higher precedence; send both if a design mixes syntaxes.","uniqueKey":"oneOf.0.payload","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["emailId","subject","domainId"],"properties":{"emailId":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.1.emailId","typeLabel":"string"},"subject":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.1.subject","typeLabel":"string"},"domainId":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.1.domainId","typeLabel":"string"},"test":{"type":"boolean","enum":[false],"uniqueKey":"oneOf.1.test","typeLabel":"enum\u003cboolean>"},"emailVersionId":{"type":"string","minLength":1,"uniqueKey":"oneOf.1.emailVersionId","typeLabel":"string"},"previewText":{"type":"string","maxLength":200,"description":"Inbox preheader for THIS send — overrides the design's JSX \u003cPreview>. Omit to deliver the design's own preview line (returned as `previewText` on `GET /v1/emails/{emailId}`).","uniqueKey":"oneOf.1.previewText","typeLabel":"string"},"replyTo":{"type":"string","description":"Reply-to address. Accepts a bare email (`a@b.com`) or the display-name form (`Name \u003ca@b.com>`).","uniqueKey":"oneOf.1.replyTo","typeLabel":"string"},"from":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Full from address; its host must be the domain named by `domainId`.","isRequired":true,"uniqueKey":"oneOf.1.from.email","typeLabel":"string\u003cemail>"},"name":{"type":"string","minLength":1,"maxLength":128,"description":"Sender display name.","uniqueKey":"oneOf.1.from.name","typeLabel":"string"}},"required":["email"],"additionalProperties":false,"description":"Sender override `{ email, name? }`; the address must be on the send domain. Omit to use the domain defaults.","uniqueKey":"oneOf.1.from","typeLabel":"object"},"consent":{"type":"object","properties":{"source":{"type":"string","enum":["api","form","import"],"description":"Who captured it: `api`, `form`, or `import`. (`app` is reserved for the in-app CSV wizard.)","isRequired":true,"uniqueKey":"oneOf.1.consent.source","typeLabel":"enum\u003cstring>"},"capturedAt":{"type":"string","format":"date-time","description":"ISO 8601; defaults to now.","uniqueKey":"oneOf.1.consent.capturedAt","typeLabel":"string\u003cdate-time>"},"policyVersion":{"type":"string","minLength":1,"maxLength":64,"uniqueKey":"oneOf.1.consent.policyVersion","typeLabel":"string"},"evidence":{"type":"string","minLength":1,"maxLength":500,"uniqueKey":"oneOf.1.consent.evidence","typeLabel":"string"}},"required":["source"],"additionalProperties":false,"description":"Consent provenance for inline recipients that are not yet contacts; each is created as a subscribed contact carrying this record. Never re-subscribes an existing opt-out.","uniqueKey":"oneOf.1.consent","typeLabel":"object"},"audienceId":{"type":"string","minLength":1,"description":"A saved audience id, or \"all\" to target EVERY contact in the brand.","uniqueKey":"oneOf.1.audienceId","typeLabel":"string"},"to":{"oneOf":[{"type":"string","description":"Inline recipient addresses (max 50). Mutually exclusive with `audienceId`.","maxLength":254,"pattern":"^[a-zA-Z0-9!#$%\u0026'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%\u0026'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$","uniqueKey":"oneOf.1.to.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","maxLength":254,"pattern":"^[a-zA-Z0-9!#$%\u0026'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%\u0026'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$","uniqueKey":"oneOf.1.to.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Inline recipient addresses (max 50). Mutually exclusive with `audienceId`.","maxItems":50,"minItems":1,"uniqueKey":"oneOf.1.to.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"oneOf.1.to","typeLabel":"string | string[]"},"scheduledAt":{"type":"string","format":"date-time","uniqueKey":"oneOf.1.scheduledAt","typeLabel":"string\u003cdate-time>"},"gradualSend":{"type":"object","properties":{"startingPercentage":{"type":"number","minimum":0.1,"maximum":100,"isRequired":true,"uniqueKey":"oneOf.1.gradualSend.startingPercentage","typeLabel":"number"},"incrementPercentage":{"type":"number","minimum":0,"maximum":100,"isRequired":true,"uniqueKey":"oneOf.1.gradualSend.incrementPercentage","typeLabel":"number"},"interval":{"oneOf":[{"type":"object","required":["value","unit"],"properties":{"value":{"type":"integer","minimum":1,"maximum":24,"isRequired":true,"uniqueKey":"oneOf.1.gradualSend.interval.oneOf.0.value","typeLabel":"integer"},"unit":{"type":"string","enum":["hour"],"isRequired":true,"uniqueKey":"oneOf.1.gradualSend.interval.oneOf.0.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.1.gradualSend.interval.oneOf.0","typeLabel":"object"},{"type":"object","required":["value","unit"],"properties":{"value":{"type":"integer","minimum":1,"maximum":30,"isRequired":true,"uniqueKey":"oneOf.1.gradualSend.interval.oneOf.1.value","typeLabel":"integer"},"unit":{"type":"string","enum":["day"],"isRequired":true,"uniqueKey":"oneOf.1.gradualSend.interval.oneOf.1.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.1.gradualSend.interval.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"oneOf.1.gradualSend.interval","typeLabel":"object"},"timeZone":{"type":"string","minLength":1,"description":"IANA timezone used to preserve local wall-clock time for day intervals.","isRequired":true,"uniqueKey":"oneOf.1.gradualSend.timeZone","typeLabel":"string"}},"required":["startingPercentage","incrementPercentage","interval","timeZone"],"additionalProperties":false,"uniqueKey":"oneOf.1.gradualSend","typeLabel":"object"},"smartSend":{"type":"boolean","description":"Intelligent Send: true sends each recipient with past opens or clicks at the upcoming hour (within 24 hours) their own history makes them most likely to open, and everyone else right away. Composes with scheduledAt; not with gradualSend.","uniqueKey":"oneOf.1.smartSend","typeLabel":"boolean"}},"additionalProperties":false,"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"test":{"title":"test","value":{"test":true,"emailId":"V1StGXR8_Z5jdHi6B-myT","subject":"Welcome to Brew","to":"qa@acme.com"}},"testVerifiedDomain":{"title":"testVerifiedDomain","value":{"test":true,"emailId":"V1StGXR8_Z5jdHi6B-myT","subject":"Welcome {{ firstName | there }}","to":"qa@acme.com","domainId":"kx7bkh53hasmfeh5kd7sqgykt187g8ww","from":{"email":"vanessa@acme.com","name":"Vanessa"},"variables":{"firstName":"Sarah"}}},"now":{"title":"now","value":{"emailId":"V1StGXR8_Z5jdHi6B-myT","domainId":"kx7bkh53hasmfeh5kd7sqgykt187g8ww","subject":"Welcome to Brew","audienceId":"jn79k2x4apqz8mjm12ekz1kxdx87yceg"}},"scheduledPinned":{"title":"scheduledPinned","value":{"emailId":"V1StGXR8_Z5jdHi6B-myT","emailVersionId":"Gm2Tq7Xp4Lw9Rn1Vc5KzS","domainId":"kx7bkh53hasmfeh5kd7sqgykt187g8ww","subject":"Welcome to Brew","previewText":"Get started in 2 minutes.","audienceId":"jn79k2x4apqz8mjm12ekz1kxdx87yceg","scheduledAt":"2099-01-01T00:00:00.000Z"}},"intelligent":{"title":"intelligent","value":{"emailId":"V1StGXR8_Z5jdHi6B-myT","domainId":"kx7bkh53hasmfeh5kd7sqgykt187g8ww","subject":"Welcome to Brew","audienceId":"jn79k2x4apqz8mjm12ekz1kxdx87yceg","smartSend":true}},"inline":{"title":"inline","value":{"emailId":"V1StGXR8_Z5jdHi6B-myT","domainId":"kx7bkh53hasmfeh5kd7sqgykt187g8ww","subject":"Welcome to Brew","to":["founder@acme.com","design@acme.com"]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"d61aca10-c8ab-4ada-a693-b3292ba86dc6":{"description":"The TEST send (`test: true`) was delivered synchronously to the single recipient.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."},"X-RateLimit-Limit":{"schema":{"type":"integer","description":"Requests allowed in the current rolling rate limit window.","example":100},"required":true,"description":"Requests allowed in the current rolling rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","description":"Requests remaining in the current rolling rate limit window.","example":99},"required":true,"description":"Requests remaining in the current rolling rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window.","example":1712592360},"required":true,"description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window."}},"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["completed"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"recipient":{"type":"string","isRequired":true,"uniqueKey":"recipient","typeLabel":"string"}},"required":["status","recipient"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"example":{"status":"completed","recipient":"qa@acme.com"},"examples":{"Example":{"title":"Example","value":{"status":"completed","recipient":"qa@acme.com"}}},"exampleType":"examples"}},"exampleType":"examples"},"240a8f20-8516-49b6-9e6d-570124a406d2":{"description":"The campaign send was accepted, queued or scheduled.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."},"X-RateLimit-Limit":{"schema":{"type":"integer","description":"Requests allowed in the current rolling rate limit window.","example":100},"required":true,"description":"Requests allowed in the current rolling rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","description":"Requests remaining in the current rolling rate limit window.","example":99},"required":true,"description":"Requests remaining in the current rolling rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window.","example":1712592360},"required":true,"description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window."}},"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["status","sendId"],"properties":{"status":{"type":"string","enum":["queued","scheduled"],"isRequired":true,"uniqueKey":"oneOf.0.status","typeLabel":"enum\u003cstring>"},"sendId":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.0.sendId","typeLabel":"string"},"scheduledAt":{"type":"string","format":"date-time","uniqueKey":"oneOf.0.scheduledAt","typeLabel":"string\u003cdate-time>"},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["DRAFT_SAVED_NOT_LIVE","NODE_ID_REPLACED","TRIGGER_EVENT_NOT_RECEIVED","ENFORCEMENT_LOOSENED_WHILE_PUBLISHED","REQUIRED_FIELD_SATISFIED_BY_FALLBACK","RESUBSCRIBE_SKIPPED","CORE_FIELD_IGNORED","DATE_ORDER_ASSUMED","FIELD_TYPE_COERCED","CSV_ROW_SKIPPED","CONTACT_EXISTS_SKIPPED","CSV_COLUMN_IGNORED","VALIDATION_SKIPPED","RECIPIENTS_EXCLUDED","CONSENT_RECORD_MISSING"],"isRequired":true,"uniqueKey":"oneOf.0.warnings.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.warnings.items.[INDEX].message","typeLabel":"string"},"field":{"type":"string","uniqueKey":"oneOf.0.warnings.items.[INDEX].field","typeLabel":"string"}},"required":["code","message"],"additionalProperties":false,"uniqueKey":"oneOf.0.warnings.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.warnings","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","required":["status","sendId"],"properties":{"status":{"type":"string","enum":["pending_approval"],"isRequired":true,"uniqueKey":"oneOf.1.status","typeLabel":"enum\u003cstring>"},"sendId":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"oneOf.1.sendId","typeLabel":"string"},"scheduledAt":{"type":"string","format":"date-time","uniqueKey":"oneOf.1.scheduledAt","typeLabel":"string\u003cdate-time>"},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["DRAFT_SAVED_NOT_LIVE","NODE_ID_REPLACED","TRIGGER_EVENT_NOT_RECEIVED","ENFORCEMENT_LOOSENED_WHILE_PUBLISHED","REQUIRED_FIELD_SATISFIED_BY_FALLBACK","RESUBSCRIBE_SKIPPED","CORE_FIELD_IGNORED","DATE_ORDER_ASSUMED","FIELD_TYPE_COERCED","CSV_ROW_SKIPPED","CONTACT_EXISTS_SKIPPED","CSV_COLUMN_IGNORED","VALIDATION_SKIPPED","RECIPIENTS_EXCLUDED","CONSENT_RECORD_MISSING"],"isRequired":true,"uniqueKey":"oneOf.1.warnings.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.warnings.items.[INDEX].message","typeLabel":"string"},"field":{"type":"string","uniqueKey":"oneOf.1.warnings.items.[INDEX].field","typeLabel":"string"}},"required":["code","message"],"additionalProperties":false,"uniqueKey":"oneOf.1.warnings.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.1.warnings","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"example":{"status":"queued","sendId":"r4Kq8ZxL2mW7nT1vPb9Yc"},"examples":{"Example":{"title":"Example","value":{"status":"queued","sendId":"r4Kq8ZxL2mW7nT1vPb9Yc"}}},"exampleType":"examples"}},"exampleType":"examples"},"0441b14a-ea5b-4561-9fae-82b45fed7cc0":{"description":"`BRAND_ID_REQUIRED`: An organization-scoped credential called a brand-scoped operation without naming the brand.\n\n`INVALID_REQUEST`: The body or query failed validation: an unknown key, a wrong type, or a missing required field. `param` names the first offender; with more than one problem, `details.issues[]` lists each one (`{ param?, message }`, at most 20).","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"brandIdRequired":{"title":"brandIdRequired","value":{"error":{"code":"BRAND_ID_REQUIRED","type":"invalid_request","message":"An organization-scoped credential called a brand-scoped operation without naming the brand.","suggestion":"List brands with GET /v1/brands, then name one with the X-Brand-Id header. There is no default brand.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"invalidRequest":{"title":"invalidRequest","value":{"error":{"code":"INVALID_REQUEST","type":"invalid_request","message":"The body or query failed validation: an unknown key, a wrong type, or a missing required field. `param` names the first offender; with more than one problem, `details.issues[]` lists each one (`{ param?, message }`, at most 20).","suggestion":"Fix the field reported in `param`, and every entry in `details.issues[]` when present, then retry.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"6125ca55-cb73-4170-9a65-020ae4feb193":{"description":"`API_KEY_REVOKED`: The API key was revoked.\n\n`AUTHENTICATION_REQUIRED`: No API key or session accompanied the request.\n\n`INVALID_API_KEY`: The API key is malformed or unknown.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"apiKeyRevoked":{"title":"apiKeyRevoked","value":{"error":{"code":"API_KEY_REVOKED","type":"authentication_error","message":"The API key was revoked.","suggestion":"Create a new active API key and retry.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"authenticationRequired":{"title":"authenticationRequired","value":{"error":{"code":"AUTHENTICATION_REQUIRED","type":"authentication_error","message":"No API key or session accompanied the request.","suggestion":"Provide a valid API key or sign in with an organization session.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"invalidApiKey":{"title":"invalidApiKey","value":{"error":{"code":"INVALID_API_KEY","type":"authentication_error","message":"The API key is malformed or unknown.","suggestion":"Check the API key format and retry with a valid active key.","docs":"https://docs.brew.new/api-reference/api/authentication"}}}},"exampleType":"examples"}},"exampleType":"examples"},"77d1d725-8f9c-4f3b-bc32-019fc75f1234":{"description":"`SEND_QUOTA_EXCEEDED`: The send or manual-audience run would exceed the plan’s monthly email volume. A send must fit at launch and draws from the allowance chunk by chunk as it delivers; `reserved` is only the batch going out right now (`details` carries `used`, `reserved`, `remaining`, `limit`, `planKey` and `requested`, and `periodEnd` when known). The window resets with the billing period.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"sendQuotaExceeded":{"title":"sendQuotaExceeded","value":{"error":{"code":"SEND_QUOTA_EXCEEDED","type":"payment_required","message":"The send or manual-audience run would exceed the plan’s monthly email volume. A send must fit at launch and draws from the allowance chunk by chunk as it delivers; `reserved` is only the batch going out right now (`details` carries `used`, `reserved`, `remaining`, `limit`, `planKey` and `requested`, and `periodEnd` when known). The window resets with the billing period.","suggestion":"Upgrade your plan for a higher monthly send volume, send to fewer recipients, or wait for the billing period to reset.","docs":"https://docs.brew.new/api-reference/api/credits"}}}},"exampleType":"examples"}},"exampleType":"examples"},"7ae8fe86-5a05-45a0-b5bf-43237f77a218":{"description":"`ACCOUNT_SUSPENDED`: The organization behind the credential is suspended.\n\n`BRAND_SCOPE_MISMATCH`: A brand-scoped credential named a brand other than the one it is bound to.\n\n`INSUFFICIENT_PERMISSIONS`: The credential lacks the permission scope the operation needs.\n\n`INSUFFICIENT_ROLE`: The caller lacks the access the operation needs: `param` names `member` (access to the brand) or `org_admin` (the organization role).","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"accountSuspended":{"title":"accountSuspended","value":{"error":{"code":"ACCOUNT_SUSPENDED","type":"authorization_error","message":"The organization behind the credential is suspended.","suggestion":"The organization behind this credential is suspended. Contact support@brew.new; do not retry.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"brandScopeMismatch":{"title":"brandScopeMismatch","value":{"error":{"code":"BRAND_SCOPE_MISMATCH","type":"authorization_error","message":"A brand-scoped credential named a brand other than the one it is bound to.","suggestion":"Omit the brand to use the one this credential is bound to, or use an organization-scoped credential to reach other brands.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"insufficientPermissions":{"title":"insufficientPermissions","value":{"error":{"code":"INSUFFICIENT_PERMISSIONS","type":"authorization_error","message":"The credential lacks the permission scope the operation needs.","suggestion":"Use an API key or session with the required permission.","docs":"https://docs.brew.new/api-reference/api/authentication"}}},"insufficientRole":{"title":"insufficientRole","value":{"error":{"code":"INSUFFICIENT_ROLE","type":"authorization_error","message":"The caller lacks the access the operation needs: `param` names `member` (access to the brand) or `org_admin` (the organization role).","suggestion":"Ask an organization admin to run this, to add you to the brand, or to make you an admin.","docs":"https://docs.brew.new/api-reference/api/authentication"}}}},"exampleType":"examples"}},"exampleType":"examples"},"c080054f-5bca-4d30-b88e-8dd40c839790":{"description":"`AUDIENCE_NOT_FOUND`: No audience with that id exists in the brand.\n\n`BRAND_NOT_FOUND`: The named or bound brand does not exist in this organization (unknown, deleting, or another organization).\n\n`DOMAIN_NOT_FOUND`: No domain with that id exists in the brand.\n\n`EMAIL_NOT_FOUND`: No email design with that id exists in the brand (cross-brand ids surface as 404).","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"audienceNotFound":{"title":"audienceNotFound","value":{"error":{"code":"AUDIENCE_NOT_FOUND","type":"not_found","message":"No audience with that id exists in the brand.","suggestion":"Use GET /v1/audiences to choose a saved audience, or send to explicit addresses.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"brandNotFound":{"title":"brandNotFound","value":{"error":{"code":"BRAND_NOT_FOUND","type":"not_found","message":"The named or bound brand does not exist in this organization (unknown, deleting, or another organization).","suggestion":"List the brands this credential can reach with GET /v1/brands.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"domainNotFound":{"title":"domainNotFound","value":{"error":{"code":"DOMAIN_NOT_FOUND","type":"not_found","message":"No domain with that id exists in the brand.","suggestion":"Use GET /v1/domains to choose a verified domain.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"emailNotFound":{"title":"emailNotFound","value":{"error":{"code":"EMAIL_NOT_FOUND","type":"not_found","message":"No email design with that id exists in the brand (cross-brand ids surface as 404).","suggestion":"List designs with GET /v1/emails.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"29bc989e-fb35-4267-a716-c46a96440973":{"description":"`IDEMPOTENCY_CONFLICT`: The same Idempotency-Key was reused with a different request body.\n\n`IDEMPOTENCY_IN_PROGRESS`: A request with this Idempotency-Key is still executing.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"idempotencyConflict":{"title":"idempotencyConflict","value":{"error":{"code":"IDEMPOTENCY_CONFLICT","type":"conflict","message":"The same Idempotency-Key was reused with a different request body.","suggestion":"Reuse the original payload or send a new idempotency key.","docs":"https://docs.brew.new/api-reference/api/idempotency"}}},"idempotencyInProgress":{"title":"idempotencyInProgress","value":{"error":{"code":"IDEMPOTENCY_IN_PROGRESS","type":"conflict","message":"A request with this Idempotency-Key is still executing.","suggestion":"Wait for the original request to finish, then retry the same key to replay its response.","docs":"https://docs.brew.new/api-reference/api/idempotency"}}}},"exampleType":"examples"}},"exampleType":"examples"},"6aa636e7-5358-43e2-9a97-14865ea6adcc":{"description":"`PAYLOAD_TOO_LARGE`: The request body exceeds the route cap.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"payloadTooLarge":{"title":"payloadTooLarge","value":{"error":{"code":"PAYLOAD_TOO_LARGE","type":"invalid_request","message":"The request body exceeds the route cap.","suggestion":"Reduce the payload size and retry.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"f995f4d2-f1b8-4ee3-a995-8bb7bb4c7221":{"description":"`CONSENT_REQUIRED`: An inline marketing recipient has no contact record with marketing consent and the send carried no consent provenance; details.recipients lists the addresses.\n\n`DOMAIN_NOT_READY`: The domain is not verified for sending.\n\n`DOMAIN_PURPOSE_NOT_ALLOWED`: The sending domain is admitted for a different purpose than this send (marketing vs transactional).\n\n`EMAIL_IMAGES_MISSING`: The email shows an image on cdn.brew.new that does not exist, so it was not sent; `details.missingImages[]` lists each URL and the email it is in.\n\n`EMAIL_NOT_READY`: The design is still generating or failed to generate, so it cannot be sent or cloned.\n\n`LIQUID_RENDER_ERROR`: A Liquid template failed to parse or render.\n\n`NO_ELIGIBLE_RECIPIENTS`: Every contact the send targets is unsubscribed, suppressed or undeliverable (or there are none), so an immediate send would deliver nothing; `details.eligibility` carries the counts.\n\n`RECIPIENT_UNSUBSCRIBED`: An inline recipient is an existing contact who unsubscribed from marketing email; details.recipients lists the addresses and Brew never re-subscribes an opt-out.\n\n`TEST_RECIPIENT_NOT_ALLOWED`: A test email can reach only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; details.recipients lists the refused addresses.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"consentRequired":{"title":"consentRequired","value":{"error":{"code":"CONSENT_REQUIRED","type":"invalid_request","message":"An inline marketing recipient has no contact record with marketing consent and the send carried no consent provenance; details.recipients lists the addresses.","suggestion":"Create the contacts first with POST /v1/contacts carrying a consent record, or include consent provenance on the send to create them as subscribed contacts.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"domainNotReady":{"title":"domainNotReady","value":{"error":{"code":"DOMAIN_NOT_READY","type":"invalid_request","message":"The domain is not verified for sending.","suggestion":"Use a verified domain, or finish domain verification before sending.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"domainPurposeNotAllowed":{"title":"domainPurposeNotAllowed","value":{"error":{"code":"DOMAIN_PURPOSE_NOT_ALLOWED","type":"invalid_request","message":"The sending domain is admitted for a different purpose than this send (marketing vs transactional).","suggestion":"Use a marketing domain for campaigns and audience sends. For transactional flows, wire the design into a published automation with a trigger and fire POST /v1/automations/triggers/{triggerEventId}/fire.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"emailImagesMissing":{"title":"emailImagesMissing","value":{"error":{"code":"EMAIL_IMAGES_MISSING","type":"invalid_request","message":"The email shows an image on cdn.brew.new that does not exist, so it was not sent; `details.missingImages[]` lists each URL and the email it is in.","suggestion":"Replace or remove each image listed in `details.missingImages` in the email, then send again.","docs":"https://docs.brew.new/api-reference/api/errors","details":{"missingImages":[{"emailId":"em_8b1f0c2a","url":"https://cdn.brew.new/generated/b1/hero-16x9.png"}]}}}},"emailNotReady":{"title":"emailNotReady","value":{"error":{"code":"EMAIL_NOT_READY","type":"invalid_request","message":"The design is still generating or failed to generate, so it cannot be sent or cloned.","suggestion":"Use a completed design, or wait for generation to finish.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"liquidRenderError":{"title":"liquidRenderError","value":{"error":{"code":"LIQUID_RENDER_ERROR","type":"invalid_request","message":"A Liquid template failed to parse or render.","suggestion":"Fix the template syntax, or supply the payload data the template references. Strict-mode fires fail on any unresolved variable; | default: is the sanctioned fallback.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"noEligibleRecipients":{"title":"noEligibleRecipients","value":{"error":{"code":"NO_ELIGIBLE_RECIPIENTS","type":"invalid_request","message":"Every contact the send targets is unsubscribed, suppressed or undeliverable (or there are none), so an immediate send would deliver nothing; `details.eligibility` carries the counts.","suggestion":"Target an audience with subscribed, deliverable contacts, or schedule the send for a time when the audience will have them.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"recipientUnsubscribed":{"title":"recipientUnsubscribed","value":{"error":{"code":"RECIPIENT_UNSUBSCRIBED","type":"invalid_request","message":"An inline recipient is an existing contact who unsubscribed from marketing email; details.recipients lists the addresses and Brew never re-subscribes an opt-out.","suggestion":"Remove the unsubscribed addresses from the recipients; a contact re-subscribes only through their own action.","docs":"https://docs.brew.new/api-reference/api/errors"}}},"testRecipientNotAllowed":{"title":"testRecipientNotAllowed","value":{"error":{"code":"TEST_RECIPIENT_NOT_ALLOWED","type":"invalid_request","message":"A test email can reach only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; details.recipients lists the refused addresses.","suggestion":"Send the test to a teammate on the brand (or yourself, when signed in), or verify the recipient’s domain under Domains. Use a campaign send for anyone else.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"e343234f-2005-4507-a3a1-5456c5eaaa88":{"description":"`RATE_LIMITED`: The credential exhausted the rolling window for this route policy; Retry-After is when the oldest recorded request leaves, and the refused request does not take a slot.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."},"X-RateLimit-Limit":{"schema":{"type":"integer","description":"Requests allowed in the current rolling rate limit window.","example":10},"required":true,"description":"Requests allowed in the current rolling rate limit window."},"X-RateLimit-Remaining":{"schema":{"type":"integer","description":"Requests remaining in the current rolling rate limit window.","example":0},"required":true,"description":"Requests remaining in the current rolling rate limit window."},"X-RateLimit-Reset":{"schema":{"type":"integer","description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window.","example":1712592360},"required":true,"description":"Unix timestamp in seconds when the oldest recorded request leaves the rolling window."},"Retry-After":{"schema":{"type":"integer","description":"Seconds to wait before retrying the request.","example":42},"required":true,"description":"Seconds to wait before retrying the request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"rateLimited":{"title":"rateLimited","value":{"error":{"code":"RATE_LIMITED","type":"rate_limit","message":"The credential exhausted the rolling window for this route policy; Retry-After is when the oldest recorded request leaves, and the refused request does not take a slot.","suggestion":"Wait the Retry-After time, then retry the same request.","docs":"https://docs.brew.new/api-reference/api/rate-limits","retryAfter":42,"details":{"scope":"credential","limit":10,"remaining":0,"reset":1712592360,"consumed":false}}}}},"exampleType":"examples"}},"exampleType":"examples"},"e2ebaf8f-4507-44bf-bb81-698fc2f95df7":{"description":"`INTERNAL_ERROR`: An unexpected failure; the x-request-id header identifies it.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"internalError":{"title":"internalError","value":{"error":{"code":"INTERNAL_ERROR","type":"internal_error","message":"An unexpected failure; the x-request-id header identifies it.","suggestion":"Retry the request. If it keeps failing, contact support with the x-request-id header.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"40373277-be3e-4c3b-8e8d-83b5e004f38f":{"description":"`SERVICE_UNAVAILABLE`: A dependency the operation must consult (billing, the idempotency store) is temporarily unavailable, so the request was refused rather than run unmetered.","headers":{"x-request-id":{"schema":{"type":"string","description":"Unique request identifier. Share this with support when debugging a request.","example":"req_8cac13fd94e6420cacdd75a1aa403a28"},"required":true,"description":"Unique request identifier. Share this with support when debugging a request."},"Retry-After":{"schema":{"type":"integer","description":"Seconds to wait before retrying the request.","example":42},"required":true,"description":"Seconds to wait before retrying the request."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["ACCOUNT_SUSPENDED","API_KEY_REVOKED","AUDIENCE_BUILD_ACTIVE","AUDIENCE_BUILD_ALREADY_ACTIVE","AUDIENCE_EDIT_CONFLICT","AUDIENCE_MEMBERSHIP_NOT_EXPRESSIBLE","AUDIENCE_NOT_FOUND","AUDIENCE_RUN_NOT_FOUND","AUDIT_NOT_FOUND","AUTHENTICATION_REQUIRED","AUTOMATION_GRAPH_INVALID","AUTOMATION_NOT_FOUND","AUTOMATION_NOT_PAUSABLE","AUTOMATION_NOT_PUBLISHED","AUTOMATION_RUN_NOT_FOUND","AUTOMATION_VERSION_CONFLICT","AUTOMATION_VERSION_NOT_FOUND","BATCH_TOO_LARGE","BRAND_DOMAIN_CONFLICT","BRAND_ID_REQUIRED","BRAND_LIMIT_REACHED","BRAND_NOT_FOUND","BRAND_NOT_READY","BRAND_SCOPE_MISMATCH","CHAT_NOT_FOUND","COMMENT_NOT_FOUND","CONSENT_REQUIRED","CONTACT_NOT_FOUND","CONTENT_OPERATION_FAILED","CONTRACT_LOCKED_BY_PUBLISHED_AUTOMATIONS","CORE_FIELD_IMMUTABLE","DOMAIN_ALREADY_EXISTS","DOMAIN_CLAIMED_ELSEWHERE","DOMAIN_NOT_FOUND","DOMAIN_NOT_READY","DOMAIN_OTHER_BRAND","DOMAIN_PROVIDER_ERROR","DOMAIN_PURPOSE_NOT_ALLOWED","DOMAIN_VERIFICATION_FAILED","DOMAIN_VERIFIED_ELSEWHERE","EMAIL_GENERATION_FAILED","EMAIL_GROUP_NAME_CONFLICT","EMAIL_GROUP_NOT_FOUND","EMAIL_IMAGES_MISSING","EMAIL_IMPORT_FAILED","EMAIL_IMPORT_PERSISTENCE_FAILED","EMAIL_IN_PROGRESS","EMAIL_IN_USE_BY_AUTOMATION","EMAIL_NOT_FOUND","EMAIL_NOT_READY","EMAIL_RESULT_UNAVAILABLE","EMAIL_RUN_AMBIGUOUS","EMAIL_TEMPLATE_INVALID","EMAIL_VERSION_NOT_FOUND","EXPORT_PROVIDER_ERROR","EXPORT_UNSUPPORTED","FIELD_NAME_COLLISION","FIELD_NOT_FOUND","FIELD_TYPE_MISMATCH","FIGMA_ACCESS_DENIED","FIGMA_CONVERSION_FAILED","FIGMA_FRAME_NOT_FOUND","FIGMA_NOT_CONNECTED","FIGMA_UNAVAILABLE","FIGMA_URL_INVALID","FLOW_NOT_FOUND","IDEMPOTENCY_CONFLICT","IDEMPOTENCY_IN_PROGRESS","INSIGHT_NOT_FOUND","INSUFFICIENT_CREDITS","INSUFFICIENT_PERMISSIONS","INSUFFICIENT_ROLE","INTEGRATION_NOT_CONNECTED","INTERNAL_ERROR","INVALID_API_KEY","INVALID_EMAIL","INVALID_PAYLOAD","INVALID_REQUEST","LIQUID_RENDER_ERROR","METHOD_NOT_ALLOWED","MISSING_EMAIL","NO_ELIGIBLE_RECIPIENTS","NO_PUBLISHED_AUTOMATION","NOT_FOUND","NOT_IMPLEMENTED","ORG_SCOPE_REQUIRED","PAYLOAD_SCHEMA_EMAIL_REQUIRED","PAYLOAD_TOO_LARGE","PREVIEW_NOT_FOUND","PUBLISH_VALIDATION_FAILED","RATE_LIMITED","RECIPIENT_UNSUBSCRIBED","REFERENCE_EMAIL_NOT_FOUND","RESUBSCRIBE_NOT_ALLOWED","RUN_IN_PROGRESS","RUN_NOT_CANCELLABLE","RUN_NOT_PAUSABLE","RUN_NOT_PAUSED","RUN_NOT_RESUMABLE","RUN_START_FAILED","RUN_STOP_FAILED","SEND_NOT_CANCELLABLE","SEND_NOT_FOUND","SEND_NOT_PAUSABLE","SEND_NOT_RESUMABLE","SEND_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","TEMPLATE_NOT_FOUND","TEST_RECIPIENT_NOT_ALLOWED","TRIGGER_ALREADY_EXISTS","TRIGGER_EVENT_NOT_FOUND","TRIGGER_HAS_DEPENDENT_AUTOMATIONS","TRIGGER_IMMUTABLE","TRIGGER_INSTANCE_NOT_FOUND","TRIGGER_LIMIT_REACHED","TRIGGER_NOT_FIREABLE","UPLOAD_IN_PROGRESS","UPLOAD_NOT_FOUND","UPLOAD_NOT_RECEIVED"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["authentication_error","authorization_error","invalid_request","not_found","not_implemented","conflict","rate_limit","payment_required","service_unavailable","internal_error"],"isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"suggestion":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"error.suggestion","typeLabel":"string"},"docs":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"error.docs","typeLabel":"string\u003curi>"},"param":{"type":"string","minLength":1,"uniqueKey":"error.param","typeLabel":"string"},"retryAfter":{"type":"integer","minimum":0,"uniqueKey":"error.retryAfter","typeLabel":"integer"},"details":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","type","message","suggestion","docs"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"serviceUnavailable":{"title":"serviceUnavailable","value":{"error":{"code":"SERVICE_UNAVAILABLE","type":"service_unavailable","message":"A dependency the operation must consult (billing, the idempotency store) is temporarily unavailable, so the request was refused rather than run unmetered.","suggestion":"Retry the request after a short delay.","docs":"https://docs.brew.new/api-reference/api/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"3becd03d-c396-4bc3-84c1-231cdbf0a23e":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Send your Brew API key as `Authorization: Bearer brew_xxx`.","x-default":"Bearer brew_your_api_key","scopes":[],"schemeName":"bearerAuth"}},"a3a3e731-b20f-48f7-873a-3123be78670a":{"apiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Send your Brew API key as `X-API-Key: brew_xxx`.","x-default":"brew_your_api_key","scopes":[],"schemeName":"apiKeyAuth"}}},"servers":{"16779731-d97b-4178-b35d-ab9db802c966":{"url":"https://brew.new/api","description":"Production"},"d75b81f5-e341-4448-9191-a43a58d2508e":{"url":"http://localhost:3000/api","description":"Local development"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Send your Brew API key as `Authorization: Bearer brew_xxx`.","x-default":"Bearer brew_your_api_key","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Send your Brew API key as `Authorization: Bearer brew_xxx`.","format":"bearer","default":"Bearer brew_your_api_key","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Send your Brew API key as `X-API-Key: brew_xxx`.","x-default":"brew_your_api_key","scopes":[],"schemeName":"apiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","description":"Send your Brew API key as `X-API-Key: brew_xxx`.","isRequired":true,"default":"brew_your_api_key","typeLabel":"string","deprecated":false},"schemeName":"apiKeyAuth","name":"X-API-Key"}],"title":"apiKeyAuth"}]},"originalFileLocation":"api-reference/openapi-public-v1.yaml"},"subdomain":"brew-796f053a","siteName":"Brew Help Docs","title":"Send an email - Brew Help Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T17:54:59.965Z","originalFileLocation":"api-reference/public-v1/emails/send-an-email.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Sends an email design. Polymorphic on test: a campaign send mints a new Send (the unit of delivery and analytics) and delivers to a saved audience or an inline list through a verified domain; test: true delivers one synchronous QA copy to a single address and writes no send row. Use when a design is ready to go out. For per-recipient event-driven delivery, publish an automation and fire its trigger (fireTrigger). Input Campaign (test omitted or false): emailId (optionally pinned to emailVersionId), a verified domainId, subject, and exactly one of audienceId (a saved audience, or \u0026quot;all\u0026quot; for every contact in the brand) or to (one address or an array of up to 50). Optional from ({ email, name? }, an address on the send domain), previewText, replyTo, scheduledAt, one delivery mode (gradualSend, or smartSend: true for Intelligent Send: each recipient with past opens or clicks gets it at the upcoming hour, within 24 hours, their own history makes them most likely to open, and the rest right away; it composes with scheduledAt), and consent provenance (source, optional capturedAt, policyVersion, evidence) for inline recipients that are not yet contacts: each is created as a subscribed contact carrying that record. An existing opt-out is never re-subscribed. Inline recipients face the same unsubscribe and suppression gate and per-recipient quota as audience sends. Test (test: true): emailId, subject, one to address, optional emailVersionId, previewText, replyTo, domainId (a verified org-owned domain; otherwise the Brew default sender, and an unverified or foreign domain is rejected, never downgraded), from ({ email, name? }, an address on that domain), variables (example values for {{ var | fallback }} merge tags; a value wins over the fallback) and payload (template data; nested JSON renders via Liquid as trigger.*); the subject carries a [TEST] prefix. A test reaches only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; anyone else is 422 TEST_RECIPIENT_NOT_ALLOWED (details.recipients). The same design can be sent unlimited times; every campaign call mints a new send. Returns campaign 202 { status: \u0026#x27;queued\u0026#x27; | \u0026#x27;scheduled\u0026#x27;, sendId, scheduledAt?, warnings? } (poll getSend; warnings[] carries one CONSENT_RECORD_MISSING per inline recipient that is a subscribed contact with no consent record, and one RECIPIENTS_EXCLUDED with the counts when unsubscribed, suppressed, undeliverable or permission-less recipients will be skipped); test 200 { status: \u0026#x27;completed\u0026#x27;, recipient }. Errors 400 INVALID_REQUEST (param: subject) when subject has a line break or runs over 1000 characters (993 on a test send, for the [TEST] prefix), judged on the text every recipient receives; 404 EMAIL_NOT_FOUND, DOMAIN_NOT_FOUND, AUDIENCE_NOT_FOUND (a resource in another brand also surfaces as 404); 422 EMAIL_NOT_READY, DOMAIN_NOT_READY, DOMAIN_PURPOSE_NOT_ALLOWED, LIQUID_RENDER_ERROR, TEST_RECIPIENT_NOT_ALLOWED; 422 CONSENT_REQUIRED when an inline marketing recipient has no contact record with marketing consent and no consent was supplied (details.recipients); 422 RECIPIENT_UNSUBSCRIBED when an inline recipient is an existing contact who opted out (details.recipients, never re-subscribed); 422 NO_ELIGIBLE_RECIPIENTS when an immediate send would reach nobody because every contact it targets is excluded (details.eligibility = { total, eligible, excluded: { unsubscribed, suppressed, invalidEmail, consentRequired? } }, each address counted once; no send is created, while a scheduled send is accepted instead); 422 EMAIL_IMAGES_MISSING when the email shows a cdn.brew.new image that does not exist (details.missingImages[]; a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access); 402 SEND_QUOTA_EXCEEDED when the plan\u0026#x27;s monthly volume would be exceeded (no Retry-After). See also listSends, cancelSend, fireTrigger.\">\u003cmeta data-mint-head name=\"keywords\" content=\"AI email marketing, Brew, AI-native email platform, on-brand email, email automations, email analytics, AI agents, MCP email server\">\u003cmeta data-mint-head name=\"application-name\" content=\"Brew Help Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Send an email - Brew Help Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Sends an email design. Polymorphic on test: a campaign send mints a new Send (the unit of delivery and analytics) and delivers to a saved audience or an inline list through a verified domain; test: true delivers one synchronous QA copy to a single address and writes no send row. Use when a design is ready to go out. For per-recipient event-driven delivery, publish an automation and fire its trigger (fireTrigger). Input Campaign (test omitted or false): emailId (optionally pinned to emailVersionId), a verified domainId, subject, and exactly one of audienceId (a saved audience, or \u0026quot;all\u0026quot; for every contact in the brand) or to (one address or an array of up to 50). Optional from ({ email, name? }, an address on the send domain), previewText, replyTo, scheduledAt, one delivery mode (gradualSend, or smartSend: true for Intelligent Send: each recipient with past opens or clicks gets it at the upcoming hour, within 24 hours, their own history makes them most likely to open, and the rest right away; it composes with scheduledAt), and consent provenance (source, optional capturedAt, policyVersion, evidence) for inline recipients that are not yet contacts: each is created as a subscribed contact carrying that record. An existing opt-out is never re-subscribed. Inline recipients face the same unsubscribe and suppression gate and per-recipient quota as audience sends. Test (test: true): emailId, subject, one to address, optional emailVersionId, previewText, replyTo, domainId (a verified org-owned domain; otherwise the Brew default sender, and an unverified or foreign domain is rejected, never downgraded), from ({ email, name? }, an address on that domain), variables (example values for {{ var | fallback }} merge tags; a value wins over the fallback) and payload (template data; nested JSON renders via Liquid as trigger.*); the subject carries a [TEST] prefix. A test reaches only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; anyone else is 422 TEST_RECIPIENT_NOT_ALLOWED (details.recipients). The same design can be sent unlimited times; every campaign call mints a new send. Returns campaign 202 { status: \u0026#x27;queued\u0026#x27; | \u0026#x27;scheduled\u0026#x27;, sendId, scheduledAt?, warnings? } (poll getSend; warnings[] carries one CONSENT_RECORD_MISSING per inline recipient that is a subscribed contact with no consent record, and one RECIPIENTS_EXCLUDED with the counts when unsubscribed, suppressed, undeliverable or permission-less recipients will be skipped); test 200 { status: \u0026#x27;completed\u0026#x27;, recipient }. Errors 400 INVALID_REQUEST (param: subject) when subject has a line break or runs over 1000 characters (993 on a test send, for the [TEST] prefix), judged on the text every recipient receives; 404 EMAIL_NOT_FOUND, DOMAIN_NOT_FOUND, AUDIENCE_NOT_FOUND (a resource in another brand also surfaces as 404); 422 EMAIL_NOT_READY, DOMAIN_NOT_READY, DOMAIN_PURPOSE_NOT_ALLOWED, LIQUID_RENDER_ERROR, TEST_RECIPIENT_NOT_ALLOWED; 422 CONSENT_REQUIRED when an inline marketing recipient has no contact record with marketing consent and no consent was supplied (details.recipients); 422 RECIPIENT_UNSUBSCRIBED when an inline recipient is an existing contact who opted out (details.recipients, never re-subscribed); 422 NO_ELIGIBLE_RECIPIENTS when an immediate send would reach nobody because every contact it targets is excluded (details.eligibility = { total, eligible, excluded: { unsubscribed, suppressed, invalidEmail, consentRequired? } }, each address counted once; no send is created, while a scheduled send is accepted instead); 422 EMAIL_IMAGES_MISSING when the email shows a cdn.brew.new image that does not exist (details.missingImages[]; a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access); 402 SEND_QUOTA_EXCEEDED when the plan\u0026#x27;s monthly volume would be exceeded (no Retry-After). See also listSends, cancelSend, fireTrigger.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Brew Help Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.brew.new/api-reference/public-v1/emails/send-an-email\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.brew.new/images/og/default.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Send an email - Brew Help Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sends an email design. Polymorphic on test: a campaign send mints a new Send (the unit of delivery and analytics) and delivers to a saved audience or an inline list through a verified domain; test: true delivers one synchronous QA copy to a single address and writes no send row. Use when a design is ready to go out. For per-recipient event-driven delivery, publish an automation and fire its trigger (fireTrigger). Input Campaign (test omitted or false): emailId (optionally pinned to emailVersionId), a verified domainId, subject, and exactly one of audienceId (a saved audience, or \u0026quot;all\u0026quot; for every contact in the brand) or to (one address or an array of up to 50). Optional from ({ email, name? }, an address on the send domain), previewText, replyTo, scheduledAt, one delivery mode (gradualSend, or smartSend: true for Intelligent Send: each recipient with past opens or clicks gets it at the upcoming hour, within 24 hours, their own history makes them most likely to open, and the rest right away; it composes with scheduledAt), and consent provenance (source, optional capturedAt, policyVersion, evidence) for inline recipients that are not yet contacts: each is created as a subscribed contact carrying that record. An existing opt-out is never re-subscribed. Inline recipients face the same unsubscribe and suppression gate and per-recipient quota as audience sends. Test (test: true): emailId, subject, one to address, optional emailVersionId, previewText, replyTo, domainId (a verified org-owned domain; otherwise the Brew default sender, and an unverified or foreign domain is rejected, never downgraded), from ({ email, name? }, an address on that domain), variables (example values for {{ var | fallback }} merge tags; a value wins over the fallback) and payload (template data; nested JSON renders via Liquid as trigger.*); the subject carries a [TEST] prefix. A test reaches only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; anyone else is 422 TEST_RECIPIENT_NOT_ALLOWED (details.recipients). The same design can be sent unlimited times; every campaign call mints a new send. Returns campaign 202 { status: \u0026#x27;queued\u0026#x27; | \u0026#x27;scheduled\u0026#x27;, sendId, scheduledAt?, warnings? } (poll getSend; warnings[] carries one CONSENT_RECORD_MISSING per inline recipient that is a subscribed contact with no consent record, and one RECIPIENTS_EXCLUDED with the counts when unsubscribed, suppressed, undeliverable or permission-less recipients will be skipped); test 200 { status: \u0026#x27;completed\u0026#x27;, recipient }. Errors 400 INVALID_REQUEST (param: subject) when subject has a line break or runs over 1000 characters (993 on a test send, for the [TEST] prefix), judged on the text every recipient receives; 404 EMAIL_NOT_FOUND, DOMAIN_NOT_FOUND, AUDIENCE_NOT_FOUND (a resource in another brand also surfaces as 404); 422 EMAIL_NOT_READY, DOMAIN_NOT_READY, DOMAIN_PURPOSE_NOT_ALLOWED, LIQUID_RENDER_ERROR, TEST_RECIPIENT_NOT_ALLOWED; 422 CONSENT_REQUIRED when an inline marketing recipient has no contact record with marketing consent and no consent was supplied (details.recipients); 422 RECIPIENT_UNSUBSCRIBED when an inline recipient is an existing contact who opted out (details.recipients, never re-subscribed); 422 NO_ELIGIBLE_RECIPIENTS when an immediate send would reach nobody because every contact it targets is excluded (details.eligibility = { total, eligible, excluded: { unsubscribed, suppressed, invalidEmail, consentRequired? } }, each address counted once; no send is created, while a scheduled send is accepted instead); 422 EMAIL_IMAGES_MISSING when the email shows a cdn.brew.new image that does not exist (details.missingImages[]; a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access); 402 SEND_QUOTA_EXCEEDED when the plan\u0026#x27;s monthly volume would be exceeded (no Retry-After). See also listSends, cancelSend, fireTrigger.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.brew.new/images/og/default.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/brew-796f053a/Sm1C1504JEJ_FZ8Q/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Brew Help Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF772D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.brew.new/api-reference/public-v1/emails/send-an-email\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/public-v1/emails/send-an-email.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.brew.new/#organization\",\"name\":\"Brew Help Docs\",\"url\":\"https://docs.brew.new\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/brew-796f053a/QjuRdMJynrgWDqeo/logo/lightmode.svg?fit=max\u0026auto=format\u0026n=QjuRdMJynrgWDqeo\u0026q=85\u0026s=5e906ff65142dc905a773e7747b47816\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.brew.new#website\",\"name\":\"Brew Help Docs\",\"url\":\"https://docs.brew.new\",\"publisher\":{\"@id\":\"https://docs.brew.new/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.brew.new/api-reference/public-v1/emails/send-an-email#webpage\",\"url\":\"https://docs.brew.new/api-reference/public-v1/emails/send-an-email\",\"name\":\"Send an email\",\"description\":\"Sends an email design. Polymorphic on test: a campaign send mints a new Send (the unit of delivery and analytics) and delivers to a saved audience or an inline list through a verified domain; test: true delivers one synchronous QA copy to a single address and writes no send row. Use when a design is ready to go out. For per-recipient event-driven delivery, publish an automation and fire its trigger (fireTrigger). Input Campaign (test omitted or false): emailId (optionally pinned to emailVersionId), a verified domainId, subject, and exactly one of audienceId (a saved audience, or \\\"all\\\" for every contact in the brand) or to (one address or an array of up to 50). Optional from ({ email, name? }, an address on the send domain), previewText, replyTo, scheduledAt, one delivery mode (gradualSend, or smartSend: true for Intelligent Send: each recipient with past opens or clicks gets it at the upcoming hour, within 24 hours, their own history makes them most likely to open, and the rest right away; it composes with scheduledAt), and consent provenance (source, optional capturedAt, policyVersion, evidence) for inline recipients that are not yet contacts: each is created as a subscribed contact carrying that record. An existing opt-out is never re-subscribed. Inline recipients face the same unsubscribe and suppression gate and per-recipient quota as audience sends. Test (test: true): emailId, subject, one to address, optional emailVersionId, previewText, replyTo, domainId (a verified org-owned domain; otherwise the Brew default sender, and an unverified or foreign domain is rejected, never downgraded), from ({ email, name? }, an address on that domain), variables (example values for {{ var | fallback }} merge tags; a value wins over the fallback) and payload (template data; nested JSON renders via Liquid as trigger.*); the subject carries a [TEST] prefix. A test reaches only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; anyone else is 422 TEST_RECIPIENT_NOT_ALLOWED (details.recipients). The same design can be sent unlimited times; every campaign call mints a new send. Returns campaign 202 { status: 'queued' | 'scheduled', sendId, scheduledAt?, warnings? } (poll getSend; warnings[] carries one CONSENT_RECORD_MISSING per inline recipient that is a subscribed contact with no consent record, and one RECIPIENTS_EXCLUDED with the counts when unsubscribed, suppressed, undeliverable or permission-less recipients will be skipped); test 200 { status: 'completed', recipient }. Errors 400 INVALID_REQUEST (param: subject) when subject has a line break or runs over 1000 characters (993 on a test send, for the [TEST] prefix), judged on the text every recipient receives; 404 EMAIL_NOT_FOUND, DOMAIN_NOT_FOUND, AUDIENCE_NOT_FOUND (a resource in another brand also surfaces as 404); 422 EMAIL_NOT_READY, DOMAIN_NOT_READY, DOMAIN_PURPOSE_NOT_ALLOWED, LIQUID_RENDER_ERROR, TEST_RECIPIENT_NOT_ALLOWED; 422 CONSENT_REQUIRED when an inline marketing recipient has no contact record with marketing consent and no consent was supplied (details.recipients); 422 RECIPIENT_UNSUBSCRIBED when an inline recipient is an existing contact who opted out (details.recipients, never re-subscribed); 422 NO_ELIGIBLE_RECIPIENTS when an immediate send would reach nobody because every contact it targets is excluded (details.eligibility = { total, eligible, excluded: { unsubscribed, suppressed, invalidEmail, consentRequired? } }, each address counted once; no send is created, while a scheduled send is accepted instead); 422 EMAIL_IMAGES_MISSING when the email shows a cdn.brew.new image that does not exist (details.missingImages[]; a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access); 402 SEND_QUOTA_EXCEEDED when the plan's monthly volume would be exceeded (no Retry-After). See also listSends, cancelSend, fireTrigger.\",\"dateModified\":\"2026-11-06T17:54:59.965Z\",\"isPartOf\":{\"@id\":\"https://docs.brew.new#website\"},\"breadcrumb\":{\"@id\":\"https://docs.brew.new/api-reference/public-v1/emails/send-an-email#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.brew.new/api-reference/public-v1/emails/send-an-email#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Public API v1\",\"item\":\"https://docs.brew.new/api-reference/public-v1/emails/list-email-designs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Emails\",\"item\":\"https://docs.brew.new/api-reference/public-v1/emails/list-email-designs\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Send an email\",\"item\":\"https://docs.brew.new/api-reference/public-v1/emails/send-an-email\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.brew.new/api-reference/public-v1/emails/send-an-email#apireference\",\"headline\":\"Send an email\",\"name\":\"Send an email\",\"description\":\"Sends an email design. Polymorphic on test: a campaign send mints a new Send (the unit of delivery and analytics) and delivers to a saved audience or an inline list through a verified domain; test: true delivers one synchronous QA copy to a single address and writes no send row. Use when a design is ready to go out. For per-recipient event-driven delivery, publish an automation and fire its trigger (fireTrigger). Input Campaign (test omitted or false): emailId (optionally pinned to emailVersionId), a verified domainId, subject, and exactly one of audienceId (a saved audience, or \\\"all\\\" for every contact in the brand) or to (one address or an array of up to 50). Optional from ({ email, name? }, an address on the send domain), previewText, replyTo, scheduledAt, one delivery mode (gradualSend, or smartSend: true for Intelligent Send: each recipient with past opens or clicks gets it at the upcoming hour, within 24 hours, their own history makes them most likely to open, and the rest right away; it composes with scheduledAt), and consent provenance (source, optional capturedAt, policyVersion, evidence) for inline recipients that are not yet contacts: each is created as a subscribed contact carrying that record. An existing opt-out is never re-subscribed. Inline recipients face the same unsubscribe and suppression gate and per-recipient quota as audience sends. Test (test: true): emailId, subject, one to address, optional emailVersionId, previewText, replyTo, domainId (a verified org-owned domain; otherwise the Brew default sender, and an unverified or foreign domain is rejected, never downgraded), from ({ email, name? }, an address on that domain), variables (example values for {{ var | fallback }} merge tags; a value wins over the fallback) and payload (template data; nested JSON renders via Liquid as trigger.*); the subject carries a [TEST] prefix. A test reaches only a teammate with access to the brand, an address on a verified sending domain of the brand, or, for a signed-in person (not an API key), their own address or one on their company domain; anyone else is 422 TEST_RECIPIENT_NOT_ALLOWED (details.recipients). The same design can be sent unlimited times; every campaign call mints a new send. Returns campaign 202 { status: 'queued' | 'scheduled', sendId, scheduledAt?, warnings? } (poll getSend; warnings[] carries one CONSENT_RECORD_MISSING per inline recipient that is a subscribed contact with no consent record, and one RECIPIENTS_EXCLUDED with the counts when unsubscribed, suppressed, undeliverable or permission-less recipients will be skipped); test 200 { status: 'completed', recipient }. Errors 400 INVALID_REQUEST (param: subject) when subject has a line break or runs over 1000 characters (993 on a test send, for the [TEST] prefix), judged on the text every recipient receives; 404 EMAIL_NOT_FOUND, DOMAIN_NOT_FOUND, AUDIENCE_NOT_FOUND (a resource in another brand also surfaces as 404); 422 EMAIL_NOT_READY, DOMAIN_NOT_READY, DOMAIN_PURPOSE_NOT_ALLOWED, LIQUID_RENDER_ERROR, TEST_RECIPIENT_NOT_ALLOWED; 422 CONSENT_REQUIRED when an inline marketing recipient has no contact record with marketing consent and no consent was supplied (details.recipients); 422 RECIPIENT_UNSUBSCRIBED when an inline recipient is an existing contact who opted out (details.recipients, never re-subscribed); 422 NO_ELIGIBLE_RECIPIENTS when an immediate send would reach nobody because every contact it targets is excluded (details.eligibility = { total, eligible, excluded: { unsubscribed, suppressed, invalidEmail, consentRequired? } }, each address counted once; no send is created, while a scheduled send is accepted instead); 422 EMAIL_IMAGES_MISSING when the email shows a cdn.brew.new image that does not exist (details.missingImages[]; a dead icon whose real file sits elsewhere in its pack is moved there instead when the key has emails access); 402 SEND_QUOTA_EXCEEDED when the plan's monthly volume would be exceeded (no Retry-After). See also listSends, cancelSend, fireTrigger.\",\"url\":\"https://docs.brew.new/api-reference/public-v1/emails/send-an-email\",\"mainEntityOfPage\":{\"@id\":\"https://docs.brew.new/api-reference/public-v1/emails/send-an-email#webpage\"},\"image\":\"https://docs.brew.new/images/og/default.png\",\"dateModified\":\"2026-11-06T17:54:59.965Z\",\"publisher\":{\"@id\":\"https://docs.brew.new/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.brew.new#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Brew Help Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Brew Help Docs","nav":{"global":{},"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":"/get-started/welcome"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/brew-university"}]},{"tab":"Integrations","pages":[{"title":"Integrations","href":"/integrations/integrations"}]},{"tab":"Developers","groups":[{"group":"Start Here","pages":[{"title":"Build with Brew","href":"/api-reference/overview"},{"title":"API Introduction","href":"/api-reference/api/api-introduction"},{"title":"Send Your First Email from Code","href":"/api-reference/guides/send-your-first-email-from-code"},{"title":"API Catalog","href":"/api-reference/api/api-catalog"}]},{"group":"Public API v1","pages":[{"group":"Emails","pages":[{"title":"List email designs","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails","href":"/api-reference/public-v1/emails/list-email-designs"},{"title":"Generate an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails","href":"/api-reference/public-v1/emails/generate-an-email-design"},{"title":"Get an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}","href":"/api-reference/public-v1/emails/get-an-email-design"},{"title":"Delete an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/emails/{emailId}","href":"/api-reference/public-v1/emails/delete-an-email-design"},{"title":"Edit an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/emails/{emailId}","href":"/api-reference/public-v1/emails/edit-an-email-design"},{"title":"Import an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/import","href":"/api-reference/public-v1/emails/import-an-email"},{"title":"Import a Figma frame","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/figma","href":"/api-reference/public-v1/emails/import-a-figma-frame"},{"title":"Clone an email design","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/clone","href":"/api-reference/public-v1/emails/clone-an-email-design"},{"title":"Restore a historical version","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/restore","href":"/api-reference/public-v1/emails/restore-a-historical-version"},{"title":"Export a design to an ESP","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/export","href":"/api-reference/public-v1/emails/export-a-design-to-an-esp"},{"title":"Audit an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/audit","href":"/api-reference/public-v1/emails/audit-an-email"},{"title":"Preview across clients \u0026 devices","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/client-previews","href":"/api-reference/public-v1/emails/preview-across-clients-\u0026-devices"},{"title":"List inbox placement tests","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}/inbox-placement-tests","href":"/api-reference/public-v1/emails/list-inbox-placement-tests"},{"title":"Run an inbox placement test","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/emails/{emailId}/inbox-placement-tests","href":"/api-reference/public-v1/emails/run-an-inbox-placement-test"},{"title":"Get inbox placement test results","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}/inbox-placement-tests/{testId}","href":"/api-reference/public-v1/emails/get-inbox-placement-test-results"},{"title":"Read a saved email audit","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/audits/{auditId}","href":"/api-reference/public-v1/emails/read-a-saved-email-audit"},{"title":"Read email rendering progress","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/client-previews/{previewId}","href":"/api-reference/public-v1/emails/read-email-rendering-progress"},{"title":"Create an authenticated email canvas embed session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/canvas/sessions","href":"/api-reference/public-v1/emails/create-an-authenticated-email-canvas-embed-session"},{"title":"Refresh a canvas session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/canvas/sessions/{sessionId}/refresh","href":"/api-reference/public-v1/emails/refresh-a-canvas-session"},{"title":"Revoke a canvas session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/canvas/sessions/{sessionId}","href":"/api-reference/public-v1/emails/revoke-a-canvas-session"},{"title":"List email groups","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/email-groups","href":"/api-reference/public-v1/emails/list-email-groups"},{"title":"Create an email group","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/email-groups","href":"/api-reference/public-v1/emails/create-an-email-group"},{"title":"Get an email group","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/email-groups/{groupId}","href":"/api-reference/public-v1/emails/get-an-email-group"},{"title":"Delete an email group","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/email-groups/{groupId}","href":"/api-reference/public-v1/emails/delete-an-email-group"},{"title":"Update an email group","description":"Renames a named folder (`name`), moves existing designs into it (`emailIds`, up to 50, one request against the rate limit), or both, in one transaction. A move adds `moved` and `notMoved` (`not_found`, `generating`, `not_movable`, `folder_full` or `retry`; resend `retry` ids) to the response. Ungrouped is not a target (`400`). Unknown / cross-brand ids are `404`. Duplicate names are `409 EMAIL_GROUP_NAME_CONFLICT`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/email-groups/{groupId}","href":"/api-reference/public-v1/emails/update-an-email-group"},{"title":"Send an email","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends","href":"/api-reference/public-v1/emails/send-an-email"},{"title":"Cancel a send","description":"Cancels a scheduled or queued send before it goes out, or STOPS any in-flight campaign send. A campaign that is `running` or `paused` is canceled the same way the in-app Stop button does it: the remaining recipients are never delivered while already-sent ones stay sent (every shape re-checks liveness at regular points mid-flight — smart per time bucket, gradual and plain blast at bounded chunk intervals — so a small tail may still deliver after the cancel lands). Idempotent — a send already `canceled` returns `200`. A send already `completed`, `partially_completed` or `failed`, or a non-campaign (automation) send, returns `409 SEND_NOT_CANCELLABLE`. Brand-scoped: an unknown / cross-brand `sendId` is `404`.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends/{sendId}/cancel","href":"/api-reference/public-v1/emails/cancel-a-send"},{"title":"Pause a gradual send","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends/{sendId}/pause","href":"/api-reference/public-v1/emails/pause-a-gradual-send"},{"title":"Resume a paused gradual send","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/sends/{sendId}/resume","href":"/api-reference/public-v1/emails/resume-a-paused-gradual-send"},{"title":"List email comments","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/emails/{emailId}/comments","href":"/api-reference/public-v1/emails/list-email-comments"}]},{"group":"Sends","pages":[{"title":"List sends","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/sends","href":"/api-reference/public-v1/sends/list-sends"},{"title":"Get a send","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/sends/{sendId}","href":"/api-reference/public-v1/sends/get-a-send"}]},{"group":"Analytics","pages":[{"title":"Brand overview (totals, rates, timeseries)","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/analytics/overview","href":"/api-reference/public-v1/analytics/brand-overview-totals-rates-timeseries"},{"title":"Automation performance","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/analytics/automations","href":"/api-reference/public-v1/analytics/automation-performance"},{"title":"Unified events feed","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/analytics/events","href":"/api-reference/public-v1/analytics/unified-events-feed"}]},{"group":"Automations","pages":[{"title":"List automations","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations","href":"/api-reference/public-v1/automations/list-automations"},{"title":"Create an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations","href":"/api-reference/public-v1/automations/create-an-automation"},{"title":"Get an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/{automationId}","href":"/api-reference/public-v1/automations/get-an-automation"},{"title":"Delete an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/automations/{automationId}","href":"/api-reference/public-v1/automations/delete-an-automation"},{"title":"Update or publish an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/automations/{automationId}","href":"/api-reference/public-v1/automations/update-or-publish-an-automation"},{"title":"Test an automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/{automationId}/test","href":"/api-reference/public-v1/automations/test-an-automation"},{"title":"Run a manual-audience automation","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/{automationId}/run","href":"/api-reference/public-v1/automations/run-a-manual-audience-automation"},{"title":"List manual-audience runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/audience-runs","href":"/api-reference/public-v1/automations/list-manual-audience-runs"},{"title":"Get a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/audience-runs/{audienceRunId}","href":"/api-reference/public-v1/automations/get-a-manual-audience-run"},{"title":"Pause a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/audience-runs/{audienceRunId}/pause","href":"/api-reference/public-v1/automations/pause-a-manual-audience-run"},{"title":"Resume a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/audience-runs/{audienceRunId}/resume","href":"/api-reference/public-v1/automations/resume-a-manual-audience-run"},{"title":"Cancel a manual-audience run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/audience-runs/{audienceRunId}/cancel","href":"/api-reference/public-v1/automations/cancel-a-manual-audience-run"},{"title":"List automation runs","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/runs","href":"/api-reference/public-v1/automations/list-automation-runs"},{"title":"Get an automation run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/runs/{automationRunId}","href":"/api-reference/public-v1/automations/get-an-automation-run"},{"title":"Cancel an automation run","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/runs/{automationRunId}/cancel","href":"/api-reference/public-v1/automations/cancel-an-automation-run"},{"title":"Get or create an unsubscribe trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers/brew-events","href":"/api-reference/public-v1/automations/get-or-create-an-unsubscribe-trigger"},{"title":"List triggers","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers","href":"/api-reference/public-v1/automations/list-triggers"},{"title":"Create a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers","href":"/api-reference/public-v1/automations/create-a-trigger"},{"title":"Get a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers/{triggerEventId}","href":"/api-reference/public-v1/automations/get-a-trigger"},{"title":"Delete a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/automations/triggers/{triggerEventId}","href":"/api-reference/public-v1/automations/delete-a-trigger"},{"title":"Update a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/automations/triggers/{triggerEventId}","href":"/api-reference/public-v1/automations/update-a-trigger"},{"title":"Check a trigger is ready to fire","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers/{triggerEventId}/readiness","href":"/api-reference/public-v1/automations/check-a-trigger-is-ready-to-fire"},{"title":"Fire a trigger","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers/{triggerEventId}/fire","href":"/api-reference/public-v1/automations/fire-a-trigger"},{"title":"Get a trigger payload contract","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/triggers/{triggerEventId}/contract","href":"/api-reference/public-v1/automations/get-a-trigger-payload-contract"},{"title":"Declare a trigger payload contract","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml put /v1/automations/triggers/{triggerEventId}/contract","href":"/api-reference/public-v1/automations/declare-a-trigger-payload-contract"},{"title":"Validate a trigger payload","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/automations/triggers/{triggerEventId}/contract/validate","href":"/api-reference/public-v1/automations/validate-a-trigger-payload"},{"title":"Infer a payload contract from an example","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/payload-contracts/infer","href":"/api-reference/public-v1/automations/infer-a-payload-contract-from-an-example"},{"title":"List trigger instances","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/trigger-instances","href":"/api-reference/public-v1/automations/list-trigger-instances"},{"title":"Get a trigger instance","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/automations/trigger-instances/{triggerInstanceId}","href":"/api-reference/public-v1/automations/get-a-trigger-instance"}]},{"group":"Contacts","pages":[{"title":"List contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/contacts","href":"/api-reference/public-v1/contacts/list-contacts"},{"title":"Create or update contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts","href":"/api-reference/public-v1/contacts/create-or-update-contacts"},{"title":"Get a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/contacts/{email}","href":"/api-reference/public-v1/contacts/get-a-contact"},{"title":"Delete a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/contacts/{email}","href":"/api-reference/public-v1/contacts/delete-a-contact"},{"title":"Update a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/contacts/{email}","href":"/api-reference/public-v1/contacts/update-a-contact"},{"title":"Get contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/search","href":"/api-reference/public-v1/contacts/get-contacts"},{"title":"Validate email deliverability","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/validate","href":"/api-reference/public-v1/contacts/validate-email-deliverability"},{"title":"Bulk-import contacts from CSV","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/import-csv","href":"/api-reference/public-v1/contacts/bulk-import-contacts-from-csv"},{"title":"Bulk-import contacts from JSON","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/import","href":"/api-reference/public-v1/contacts/bulk-import-contacts-from-json"},{"title":"Batch-delete contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/contacts/batch-delete","href":"/api-reference/public-v1/contacts/batch-delete-contacts"}]},{"group":"Contact Fields","pages":[{"title":"List contact fields","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/fields","href":"/api-reference/public-v1/contact-fields/list-contact-fields"},{"title":"Create a contact field","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/fields","href":"/api-reference/public-v1/contact-fields/create-a-contact-field"},{"title":"Get a contact field","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/fields/{fieldName}","href":"/api-reference/public-v1/contact-fields/get-a-contact-field"},{"title":"Delete a contact field","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/fields/{fieldName}","href":"/api-reference/public-v1/contact-fields/delete-a-contact-field"}]},{"group":"Audiences","pages":[{"title":"List audiences","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/audiences","href":"/api-reference/public-v1/audiences/list-audiences"},{"title":"Create an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/audiences","href":"/api-reference/public-v1/audiences/create-an-audience"},{"title":"Get an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/audiences/{audienceId}","href":"/api-reference/public-v1/audiences/get-an-audience"},{"title":"Delete an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/audiences/{audienceId}","href":"/api-reference/public-v1/audiences/delete-an-audience"},{"title":"Update an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/audiences/{audienceId}","href":"/api-reference/public-v1/audiences/update-an-audience"},{"title":"Create an audience from analytics events","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/audiences/from-events","href":"/api-reference/public-v1/audiences/create-an-audience-from-analytics-events"},{"title":"Duplicate an audience","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/audiences/{audienceId}/duplicate","href":"/api-reference/public-v1/audiences/duplicate-an-audience"}]},{"group":"Domains","pages":[{"title":"List domains","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains","href":"/api-reference/public-v1/domains/list-domains"},{"title":"Add a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains","href":"/api-reference/public-v1/domains/add-a-domain"},{"title":"Get a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}","href":"/api-reference/public-v1/domains/get-a-domain"},{"title":"Delete a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/domains/{domainId}","href":"/api-reference/public-v1/domains/delete-a-domain"},{"title":"Update domain settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/domains/{domainId}","href":"/api-reference/public-v1/domains/update-domain-settings"},{"title":"Verify a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains/{domainId}/verify","href":"/api-reference/public-v1/domains/verify-a-domain"},{"title":"List a domain's unsubscribes","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}/unsubscribes","href":"/api-reference/public-v1/domains/list-a-domains-unsubscribes"},{"title":"Add addresses to a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains/{domainId}/unsubscribes","href":"/api-reference/public-v1/domains/add-addresses-to-a-domains-unsubscribe-list"},{"title":"Remove an address from a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/domains/{domainId}/unsubscribes/{email}","href":"/api-reference/public-v1/domains/remove-an-address-from-a-domains-unsubscribe-list"},{"title":"Import a CSV into a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/domains/{domainId}/unsubscribes/import","href":"/api-reference/public-v1/domains/import-a-csv-into-a-domains-unsubscribe-list"},{"title":"Export a domain's unsubscribe list","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}/unsubscribes/export","href":"/api-reference/public-v1/domains/export-a-domains-unsubscribe-list"},{"title":"Get domain health","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/domains/{domainId}/health","href":"/api-reference/public-v1/domains/get-domain-health"}]},{"group":"Templates","pages":[{"title":"List templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/templates","href":"/api-reference/public-v1/templates/list-templates"},{"title":"Get a public template","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/templates/{templateId}","href":"/api-reference/public-v1/templates/get-a-public-template"},{"title":"List flows","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/flows","href":"/api-reference/public-v1/templates/list-flows"},{"title":"Get a flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/flows/{slug}","href":"/api-reference/public-v1/templates/get-a-flow"}]},{"group":"Brand","pages":[{"title":"Get the brand bound to this API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brand","href":"/api-reference/public-v1/brand/get-the-brand-bound-to-this-api-key"},{"title":"Update brand identity + design system","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml patch /v1/brand","href":"/api-reference/public-v1/brand/update-brand-identity-+-design-system"},{"title":"Get brand images","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brand/images","href":"/api-reference/public-v1/brand/get-brand-images"},{"title":"Delete a brand image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/brand/images/{assetId}","href":"/api-reference/public-v1/brand/delete-a-brand-image"}]},{"group":"Brands","pages":[{"title":"List the brands this credential can reach","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brands","href":"/api-reference/public-v1/brands/list-the-brands-this-credential-can-reach"},{"title":"Create a brand and start its extraction","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/brands","href":"/api-reference/public-v1/brands/create-a-brand-and-start-its-extraction"},{"title":"Get one brand’s lifecycle state","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/brands/{brandId}","href":"/api-reference/public-v1/brands/get-one-brand’s-lifecycle-state"}]},{"group":"Content","pages":[{"title":"Generate an image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/generate-image","href":"/api-reference/public-v1/content/generate-an-image"},{"title":"Generate a GIF","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/gif","href":"/api-reference/public-v1/content/generate-a-gif"},{"title":"Transform an image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/transform","href":"/api-reference/public-v1/content/transform-an-image"},{"title":"Render HTML to a PNG","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/html-to-png","href":"/api-reference/public-v1/content/render-html-to-a-png"},{"title":"Add image","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/add-image","href":"/api-reference/public-v1/content/add-image"},{"title":"Create an image upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/content/image-uploads","href":"/api-reference/public-v1/content/create-an-image-upload"}]},{"group":"Usage","pages":[{"title":"Get usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/usage","href":"/api-reference/public-v1/usage/get-usage"}]},{"group":"Integrations","pages":[{"title":"List integrations","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/integrations","href":"/api-reference/public-v1/integrations/list-integrations"}]},{"group":"API Keys","pages":[{"title":"List API keys","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/api-keys","href":"/api-reference/public-v1/api-keys/list-api-keys"},{"title":"Create an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml post /v1/api-keys","href":"/api-reference/public-v1/api-keys/create-an-api-key"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml delete /v1/api-keys/{keyId}","href":"/api-reference/public-v1/api-keys/revoke-an-api-key"}]},{"group":"Health","pages":[{"title":"Liveness probe","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/health","href":"/api-reference/public-v1/health/liveness-probe"}]},{"group":"Meta","pages":[{"title":"Machine-readable API catalog","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/help","href":"/api-reference/public-v1/meta/machine-readable-api-catalog"}]},{"group":"Chats","pages":[{"title":"List chats","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/chats","href":"/api-reference/public-v1/chats/list-chats"},{"title":"Get chat context","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/chats/{chatId}","href":"/api-reference/public-v1/chats/get-chat-context"}]},{"group":"Insights","pages":[{"title":"List insights","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/insights","href":"/api-reference/public-v1/insights/list-insights"},{"title":"Get an insight","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/insights/{insightId}","href":"/api-reference/public-v1/insights/get-an-insight"}]},{"group":"Notifications","pages":[{"title":"List notifications","deprecated":null,"version":null,"openapi":"/api-reference/openapi-public-v1.yaml get /v1/notifications","href":"/api-reference/public-v1/notifications/list-notifications"}]}]},{"group":"API Contracts","pages":[{"title":"Authentication and Security","href":"/api-reference/api/authentication"},{"title":"Organization and Brand Credentials","href":"/api-reference/api/organization-and-brand-scope"},{"title":"Data Model","href":"/api-reference/api/data-model"},{"title":"Rate Limits","href":"/api-reference/api/rate-limits"},{"title":"Idempotency","href":"/api-reference/api/idempotency"},{"title":"Pagination","href":"/api-reference/api/pagination"},{"title":"Batch Operations","href":"/api-reference/api/batch-operations"},{"title":"Async Jobs and Polling","href":"/api-reference/api/async-jobs"},{"title":"API Credits","sidebarTitle":"Credits","href":"/api-reference/api/credits"},{"title":"Events and Webhooks","href":"/api-reference/api/events-and-webhooks"},{"title":"API Errors","sidebarTitle":"Errors","href":"/api-reference/api/errors"},{"title":"Response Headers","href":"/api-reference/api/response-headers"},{"title":"API Design Notes","href":"/api-reference/api/design-notes"},{"title":"Migrate to the New v1 Surface","href":"/api-reference/api/v1-migration"}]},{"group":"API Guides","pages":[{"title":"Check Brand Readiness Before Generating","href":"/api-reference/guides/check-brand-readiness"},{"title":"Upload a Local Image","href":"/api-reference/guides/upload-a-local-image"},{"title":"Monitor Email Sends","href":"/api-reference/guides/monitor-campaign-sends"},{"title":"Explore Per-Contact Engagement","href":"/api-reference/guides/per-contact-engagement"},{"title":"Read Brew Insights","href":"/api-reference/guides/read-brew-insights"},{"title":"Typed Payload Contracts","href":"/api-reference/guides/typed-payload-contracts"}]},{"group":"MCP Server","pages":[{"title":"Brew MCP Server","href":"/api-reference/mcp/overview"},{"title":"MCP Quickstart","href":"/api-reference/mcp/quickstart"},{"title":"Connect Your MCP Client","sidebarTitle":"Connect Your Client","href":"/api-reference/mcp/connect-your-client"},{"title":"MCP Tools","href":"/api-reference/mcp/tools"},{"title":"MCP Workflows","href":"/api-reference/mcp/workflows"},{"title":"Sync a CRM into Brew over MCP","href":"/api-reference/mcp/sync-a-crm"},{"title":"Sync Brew and Attio over MCP","href":"/api-reference/mcp/attio"},{"title":"MCP Authentication and Scoping","href":"/api-reference/mcp/authentication-and-scoping"}]},{"group":"CLI","pages":[{"title":"Brew CLI","href":"/api-reference/cli/overview"},{"title":"CLI Quickstart","href":"/api-reference/cli/quickstart"},{"title":"CLI Installation","sidebarTitle":"Installation","href":"/api-reference/cli/installation"},{"title":"CLI Authentication","sidebarTitle":"Authentication","href":"/api-reference/cli/authentication"},{"title":"CLI Commands","sidebarTitle":"Commands","href":"/api-reference/cli/commands"},{"title":"CLI Common Flows","sidebarTitle":"Common Flows","href":"/api-reference/cli/common-flows"},{"title":"Use the CLI from AI Agents","sidebarTitle":"Use from AI Agents","href":"/api-reference/cli/agents"}]},{"group":"SDKs","pages":[{"title":"SDK Overview","href":"/sdks/overview"},{"title":"SDK Authentication","sidebarTitle":"Authentication","href":"/sdks/authentication"},{"title":"Generate Your Own SDK","href":"/sdks/openapi-codegen"},{"title":"TypeScript Installation","href":"/sdks/typescript/installation"},{"title":"TypeScript Quickstart","href":"/sdks/typescript/quickstart"},{"title":"TypeScript Resource Surface","href":"/sdks/typescript/resources"},{"title":"Build a White-Label Email Editor","sidebarTitle":"White-Label Integration","href":"/sdks/typescript/white-label-email-editor"},{"title":"Embed the Email Canvas","href":"/sdks/typescript/embedded-email-canvas"},{"title":"TypeScript Error Handling","href":"/sdks/typescript/error-handling"},{"title":"Agentic Cookbook","href":"/sdks/typescript/agentic-cookbook"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]},{"tab":"Legal","pages":[{"title":"Legal","href":"/legal/terms-of-service"}]}]},"basePath":"","title":"Send an email - Brew Help Docs","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CBsVopKK.js","utils-DZAk68jJ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D32AYZrP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D_A5_cny.js","snippetPresets-xNRfS9th.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BIB25-tq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CydJ4w4j.js","shallow-CYPBeQSG.js","getApiPlaygroundDisplay-A5xJVBOu.js","CodeSnippet-BVRTgi3m.js","CodeSnippets-DjD6BSlt.js","Page-Dr40SSJq.js","getPastedJson-D4V4JyrR.js","icon-uhcnG22T.js","MethodPill-CM-ZQdGH.js","DuplicateIcon-B_WnOiNf.js","createIcon-CJsb8utt.js","DynamicMarkdown-D-2HDKEp.js","SectionHeading-KP5xmMgQ.js","axios-vUo_bRtp.js","Markdown-D_k0dg6k.js","clsx-DK3K4Z1S.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DE3EVdvd.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-fN9H9n9g.js"]}