{"schemaVersion":"1.0.0","kind":"brandiseer.use-case","id":"emailoctopus-newsletter-automation","canonicalUrl":"https://blog.brandiseer.com/use-cases/emailoctopus-newsletter-automation","contentHash":"65ec9925bfa0b2010c9334594355f5b7e88c40d9c117ea3069309a69f6184f60","metadata":{"title":"EmailOctopus newsletter automation","outcome":"An agent generates on-brand newsletter heroes and promo stills with Brandiseer, and optionally drafts subject line, body copy, and paste-ready HTML; a person places the assets in EmailOctopus and sends. Brandiseer does not create or send EmailOctopus campaigns.","category":"email","featured":true,"timeEstimate":"~25 to 40 min setup","methods":["MCP","REST"],"hosts":["Cursor","Cowork"],"image":"https://blog.brandiseer.com/use-case-assets/emailoctopus-newsletter-automation/cover-emailoctopus-newsletter-automation.png","updated":"2026-09-24"},"stack":[{"name":"Brandiseer","role":"Brand memory and on-brand stills via MCP or REST","logo":"/logo-b.png","href":"https://brandiseer.com"},{"name":"EmailOctopus","role":"Campaign editor and send. A person places the still and HTML, then sends.","href":"https://emailoctopus.com"},{"name":"Cursor","role":"Agent host for Brandiseer MCP or REST and optional copy draft"},{"name":"Claude Cowork","role":"Agent host for Brandiseer MCP or REST, optional recurring newsletter package"}],"workflow":{"audience":"- Marketers and founders who already send newsletters in EmailOctopus and need on-brand heroes without opening a separate design tool for every send\n- Teams that want Claude (Cursor or Cowork) to draft subject, body, and HTML while Brandiseer keeps the visuals on-brand\n- Agencies that keep one Brandiseer Brand ID per client and one EmailOctopus account per client\n- Operators who can paste an `imageUrl` or upload a file into an EmailOctopus campaign, then hit send themselves\n\n**Ideal customer profile:** a team whose list and sends already live in EmailOctopus, whose brand already lives in Brandiseer, and whose missing piece is a brand-safe still (and optionally copy) plus a clear handoff into the campaign editor.","rationale":"EmailOctopus is where the list lives and the campaign is sent. Cursor or Cowork is the agent that turns a brief into a layout and optional copy. Brandiseer stores the logo and visual identity once, then applies that memory on every still. The image prompt carries subject, layout, composition, and on-image text. It does not restate colours, fonts, mood, or visual style.\n\nA newsletter programme drifts when every hero is a one-off export from a general image tool. Brandiseer keeps the still on the same brand as the rest of the programme. EmailOctopus still decides which list receives the send, and a person decides when that campaign goes out.\n\nThis is a different job from the sibling guides:\n\n- [Slack creative desk](/use-cases/slack-creative-desk) is a request-and-return desk in Slack.\n- [Social media automation](/use-cases/social-media-automation) writes captions and schedules posts with Buffer.\n- [Always-on creative automation](/use-cases/always-on-creative-automation) is the HTTP step in Zapier, Make, or n8n.\n- [Klaviyo email heroes](/use-cases/klaviyo-email-heroes) hands `imageUrl` into Klaviyo image blocks.\n- [HubSpot campaign creatives](/use-cases/hubspot-campaign-creatives) hands `imageUrl` into HubSpot.\n- This guide generates newsletter heroes and optional paste-ready packages for EmailOctopus. Brandiseer does not push into EmailOctopus and does not send campaigns.\n\n![Example strip: newsletter hero, promo square, section still, and footer banner](https://blog.brandiseer.com/use-case-assets/emailoctopus-newsletter-automation/example-strip.png)","architecture":"1. You store the brand once in Brandiseer (logo and reference visuals teach the look).\n2. The agent host (Cursor or Cowork) has Brandiseer MCP or REST, the Brand ID (`bds_c_...`), and the standing instructions in this guide.\n3. You name the slot: newsletter hero or header, promo still, section still, or a short footer banner. Optionally you also ask for subject, preview text, and body copy.\n4. Brandiseer returns `imageUrl`. The agent reports the URL, crop, mode, suggested alt text, and a placement note. If copy was requested, it returns subject, preview text, body, and optional HTML that embeds `imageUrl`.\n5. A person places the assets in EmailOctopus, previews on mobile and desktop, then sends. Optional API steps are limited to what EmailOctopus documents (lists, contacts, tags, starting an existing automation, reading campaign reports). They never create the campaign in this guide.\n\n![Workflow: brief, Brandiseer still, optional copy and HTML, person places in EmailOctopus, send](https://blog.brandiseer.com/use-case-assets/emailoctopus-newsletter-automation/workflow-infographic.png)","prerequisites":"- Company website URL, if the brand is not in Brandiseer yet\n- Brandiseer account with at least one finished brand profile\n- API key (`bds_...`) from [Settings → API](https://brandiseer.com/settings/api) or [Developers](https://brandiseer.com/developers)\n- Brand ID (`bds_c_...`) for every brand the agent may call\n- Credits for the stills you actually generate\n- Cursor or Claude Cowork, with Brandiseer MCP or a way to call REST\n- An EmailOctopus account you can edit, with at least one list and permission to create campaigns in the UI\n- Optional, only for contact or report scripts: an EmailOctopus API key from account settings. This key is not the Brandiseer key. It does not unlock campaign create or send in the public API","setup":"### Stage 1: Add your brand on Brandiseer\n\n1. Go to [brandiseer.com](https://brandiseer.com). In the homepage input, enter your company website URL and click **Try My Brand**.\n2. Wait about one minute while Brandiseer analyses the site and picks a logo and visuals.\n3. Review those visuals carefully. They teach Brandiseer your look. Every later newsletter still is influenced by what you leave here.\n4. Remove anything off-brand (partner logos, stock, irrelevant screenshots). Add campaign creatives or product photography that match the look you want.\n5. Click **Add Brand**, sign up if prompted, then wait about 30 seconds for the brand profile to finish.\n\nAgencies repeat this once per client. Do not point two EmailOctopus accounts at one Brand ID.\n\n### Stage 2: API key and Brand ID\n\n1. Open [brandiseer.com/developers](https://brandiseer.com/developers) or [Settings → API](https://brandiseer.com/settings/api).\n2. Create an API key (`bds_...`). Put it in the agent host's secret store. Do not paste it into an EmailOctopus campaign, Slack, or a git repo.\n3. Copy the Brand ID (`bds_c_...`).\n4. Confirm the key with `GET https://brandiseer.com/api/v1/credits` and `GET https://brandiseer.com/api/v1/brands`, header `X-API-Key`. The credits JSON includes `credits`. The brands list includes each brand `id`.\n5. Optional reachability check, no key required: `GET https://brandiseer.com/api/v1/health` returns `{ \"status\": \"ok\" }`.\n\nRead [guide/docs](https://brandiseer.com/guide/docs) and [guide/image](https://brandiseer.com/guide/image) once while you write the standing instructions.\n\n### Stage 3: Connect Brandiseer to the agent host\n\nUse Cursor or Cowork. One host is enough.\n\n1. Connect Brandiseer MCP at `https://brandiseer.com/api/mcp` with `Authorization: Bearer <api-key>`, **or** keep the REST key in the host secret store and call v2 generate endpoints.\n2. Paste the **System prompt** from this guide into the standing instructions for newsletter work.\n3. Fill in Brand ID defaults and any multi-brand map before the first generate.\n\n### Stage 4: Smoke-test one still\n\n1. Ask the agent for a 16:9 newsletter hero for a fictional promo. Require layout-only prompt language (no colours or fonts in the prompt).\n2. Confirm you get a public `imageUrl`, aspect ratio, mode, and a placement note.\n3. Open EmailOctopus, create a draft campaign, add an image, and confirm the still displays. Do not send the smoke test.\n\n### Stage 5: Optional copy and HTML package\n\nWhen you want more than a still:\n\n1. Ask the agent for subject (about 50 characters or fewer when possible), preview text, body paragraphs, CTA label, and a minimal HTML body that includes `<img src=\"{{imageUrl}}\" alt=\"...\" width=\"600\">` (or the live URL once generation finishes).\n2. Paste subject, preview text, and HTML into EmailOctopus. Preview on mobile. Keep legal footers, unsubscribe, and address blocks as EmailOctopus provides them. Do not strip required compliance elements.\n3. A person sends. The agent does not call a send API.\n\n### Stage 6: Optional recurring Cowork task\n\nAfter the smoke test works, you can create a Cowork scheduled task that, on newsletter days:\n\n1. Reads a short brief (product, offer, theme).\n2. Generates the Brandiseer still.\n3. Drafts subject, preview text, body, and HTML.\n4. Writes the package to a file or returns it in chat for a person to paste into EmailOctopus.\n\nThe task must not claim the campaign was created or sent. EmailOctopus campaign create and send are out of scope for the public API used in this guide.","promptingRules":"When the agent builds `prompt`:\n\n- Keep subject, layout, composition, and on-image text (what the words say and where they sit).\n- Never send brand colours, fonts, mood, or visual style. Brand memory already applies those.\n- Put crop in `aspectRatio`, quality in `mode`, pixel size in `resolution`, and logo on/off in `useLogo`. Those are body fields, not prompt prose.\n- Map the EmailOctopus slot to a documented ratio. Newsletter hero and header: `16:9`. Promo square: `1:1`. In-email card: `4:3`. Footer banner: `16:9` with a shorter display height set in the editor.\n- Prefer `design` for finished newsletter stills. Fall back to `fast` if design fails once.\n- Prefer `1K` or `2K`. Email clients punish huge files. Keep on-image text sparse; put long headlines in EmailOctopus text blocks when you can.\n- Set `useLogo` true only when the brief asked for a logo.\n- Full rules: [Prompt compatibility](https://brandiseer.com/guide/image).","systemPrompts":"Paste this into Cursor or Cowork as the standing instructions for EmailOctopus newsletter work. Replace the placeholders before the first generate.\n\n```text\nYou produce on-brand newsletter heroes and optional paste-ready email\npackages for EmailOctopus. Brandiseer returns an image URL. You do not\ncreate EmailOctopus campaigns and you do not send.\n\nBrandiseer:\n- MCP: https://brandiseer.com/api/mcp with Authorization: Bearer.\n  Tools you may call: brandiseer_list_brands, brandiseer_check_credits,\n  brandiseer_generate_image. Do not invent tool names.\n- REST: X-API-Key: bds_... (secret store only).\n  Prefer POST https://brandiseer.com/api/v2/generate\n  or POST https://brandiseer.com/api/v2/generate/async\n  then poll GET https://brandiseer.com/api/v2/jobs/:jobId every 3 to 5 seconds\n  until data.status is done or failed, or about 10 minutes have passed.\n- Live contract: https://brandiseer.com/guide/docs and\n  https://brandiseer.com/guide/image\n\nDefaults for this account (fill in once):\n- Brand ID: bds_c_...\n- Newsletter hero / header aspectRatio: 16:9\n- Promo square aspectRatio: 1:1\n- mode: design\n- resolution: 2K (use 1K if the inbox weight must stay light)\n- useLogo when the brief is silent: false\n- Multi-brand map, if any: brand name to bds_c_...\n\nOn every request:\n1. Resolve brandId from the brief or the default. If more than one brand\n   exists and the brief does not name one, ask. Never fall through to\n   another client's Brand ID.\n2. Check credits before a batch. On 402, stop.\n3. Rewrite the image brief into subject, layout, composition, and\n   on-image text. Strip colours, fonts, mood, and visual style. If\n   stripping leaves no physical subject, ask what is in the frame.\n4. Choose aspectRatio from the slot. Put resolution, mode, and useLogo in\n   API fields, not in the prompt.\n5. Generate one still. Return imageUrl, aspectRatio, mode, resolution,\n   useLogo, a one-line alt text suggestion, and a placement note\n   (hero, header, promo, section, or footer).\n6. If the human asked for a full package, also return:\n   - subject (short)\n   - preview text\n   - body copy (plain text paragraphs)\n   - CTA label and destination URL if provided\n   - minimal HTML that embeds the live imageUrl in an img tag (width 600),\n     with the body copy and CTA. Do not invent unsubscribe or address\n     blocks; remind the human that EmailOctopus supplies compliance\n     footers.\n7. Do not tell the user an EmailOctopus campaign was created or sent\n   unless they confirm they pasted and sent it themselves.\n\nEmailOctopus API (optional, only when the human supplied an API key and\nasked for contacts or reports):\n- Base: https://api.emailoctopus.com\n- Auth: Authorization: Bearer and the EmailOctopus key. Never the\n  Brandiseer key.\n- Follow https://emailoctopus.com/api-documentation/v2\n- Allowed in this guide: lists, contacts, and tags on that page;\n  POST https://api.emailoctopus.com/automations/{automation_id}/queue\n  for an existing automation that already uses the Started via API\n  trigger; GET https://api.emailoctopus.com/campaigns and the GET\n  campaign report paths on the same page.\n- Forbidden in this guide: inventing a create-campaign, schedule, or\n  send endpoint. Public v2 campaign operations are GET only.\n- A queue call starts an existing automation. It does not create the\n  newsletter campaign. Do not use it as a substitute for send.\n- Never mix the EmailOctopus key with the Brandiseer key.\n\nOut of scope:\n- Slack replies, Buffer scheduling, Klaviyo or HubSpot placement.\n- Zapier / Make / n8n recipes (see Always-on creative automation).\n- Legal approval of claims, prices, or offers printed on the image.\n```","addOns":"### Recurring newsletter day (Cowork)\n\nAfter the base flow works, create a scheduled Cowork task for your newsletter cadence (for example weekly). Each run reads a brief file, generates the Brandiseer still, drafts the package, and drops the result in chat or a known folder for a person to paste into EmailOctopus. Keep human preview and send.\n\n### Product-from-URL stills\n\nWhen the brief names a product page, the agent may fetch public page context for the copy brief, then generate a still that features that product. Brandiseer still applies brand memory. Do not scrape behind logins.\n\n### Multi-variant heroes\n\nAsk for two or three layout variants (product-left, product-centred, lifestyle) with the same offer. A person picks one in EmailOctopus.\n\n### Report pull after send\n\nAfter a human sends, an agent with an EmailOctopus API key may read the campaign report GET endpoints documented in API v2 (summary, links, and contact rows). Use that for a short post-send note. It does not change how creatives are made, and it does not send.","limitsAndFaq":"### Can the agent create and send the EmailOctopus campaign by API?\n\nNot in this guide. EmailOctopus's public v2 reference documents lists, contacts, tags, automations, and campaign reads and reports. Campaign operations on that page are GET only. Campaign create, schedule, and send are not part of this workflow. A person places assets in the UI and sends.\n\n### Does Brandiseer upload into EmailOctopus?\n\nNo. Brandiseer returns `imageUrl`. A person downloads or pastes that URL (or HTML that references it) into EmailOctopus.\n\n### How is this different from Klaviyo email heroes?\n\nSame Brandiseer contract and placement philosophy. The ESP is EmailOctopus instead of Klaviyo. This guide also documents an optional subject, body, and HTML package because EmailOctopus teams often want a full paste-ready draft, not only a still.\n\n### How is this different from Social media automation?\n\nBuffer can schedule posts through its agent and MCP path. EmailOctopus newsletter send stays with a person in this guide.\n\n### Off-brand images\n\nAlmost always caused by style, colour, or font language in the image prompt. Strip those and regenerate.\n\n### Credits and file weight\n\nImage generation spends Brandiseer credits by mode and resolution. Prefer `2K` or `1K` for email. Huge `4K` files slow the inbox and are rarely worth it for a 600px-wide column.","demo":"**Motion brief only. This is not an embed, and there is no walkthrough URL yet.**\n\n**Working title:** EmailOctopus newsletter creatives in under 40 minutes\n**Length:** 45 to 75 seconds\n\n**Story beats:**\n\n1. Brand uploaded on Brandiseer\n2. API key and Brand ID in Cursor or Cowork\n3. Agent returns `imageUrl` (and optional subject and HTML)\n4. Person pastes into an EmailOctopus campaign\n5. Preview, then send (human)\n\n**On screen:** Developers page, Cowork or Cursor chat, the EmailOctopus campaign editor, and a sample Brandiseer hero on a 600px email crop. Blur the Brandiseer API key and any EmailOctopus API key. Do not show a campaign created or sent by the agent."},"sections":[{"id":"overview","heading":"Overview","markdown":"**Brandiseer + EmailOctopus (+ Cursor or Claude Cowork)**\n\n![Cover: an on-brand newsletter hero ready to place in an EmailOctopus campaign](https://blog.brandiseer.com/use-case-assets/emailoctopus-newsletter-automation/cover-emailoctopus-newsletter-automation.png)\n\nBy the end of this guide you will have a repeatable way to produce on-brand newsletter creatives for EmailOctopus. An agent in Cursor or Claude Cowork calls Brandiseer, returns an `imageUrl` for a hero, header, or promo still, and can optionally draft subject line, preview text, body copy, and a simple HTML body that embeds that `imageUrl`. A person pastes or uploads those assets into EmailOctopus and sends the campaign.\n\nBrandiseer owns brand memory and the still. EmailOctopus owns lists, campaigns, and delivery. Brandiseer does not open EmailOctopus, does not create a campaign, and does not send. EmailOctopus's public API is strong on lists, contacts, tags, automations, and campaign **reports**. The public v2 reference lists campaign operations as GET only. It does not create, schedule, or send campaigns. The handoff is always a person (or a separate ops step you own) placing assets in the EmailOctopus editor.\n\n> People who brief stills inside Slack should use [Slack creative desk](/use-cases/slack-creative-desk). Recurring social captions and Buffer scheduling should use [Social media automation](/use-cases/social-media-automation). Klaviyo email placement should use [Klaviyo email heroes](/use-cases/klaviyo-email-heroes). HubSpot emails and ads should use [HubSpot campaign creatives](/use-cases/hubspot-campaign-creatives). Schedules in Zapier, Make, or n8n should use [Always-on creative automation](/use-cases/always-on-creative-automation). This guide is EmailOctopus newsletter creatives and paste-ready packages only."},{"id":"audience","heading":"Who it's for","markdown":"- Marketers and founders who already send newsletters in EmailOctopus and need on-brand heroes without opening a separate design tool for every send\n- Teams that want Claude (Cursor or Cowork) to draft subject, body, and HTML while Brandiseer keeps the visuals on-brand\n- Agencies that keep one Brandiseer Brand ID per client and one EmailOctopus account per client\n- Operators who can paste an `imageUrl` or upload a file into an EmailOctopus campaign, then hit send themselves\n\n**Ideal customer profile:** a team whose list and sends already live in EmailOctopus, whose brand already lives in Brandiseer, and whose missing piece is a brand-safe still (and optionally copy) plus a clear handoff into the campaign editor."},{"id":"why-brandiseer","heading":"Why Brandiseer in this stack","markdown":"EmailOctopus is where the list lives and the campaign is sent. Cursor or Cowork is the agent that turns a brief into a layout and optional copy. Brandiseer stores the logo and visual identity once, then applies that memory on every still. The image prompt carries subject, layout, composition, and on-image text. It does not restate colours, fonts, mood, or visual style.\n\nA newsletter programme drifts when every hero is a one-off export from a general image tool. Brandiseer keeps the still on the same brand as the rest of the programme. EmailOctopus still decides which list receives the send, and a person decides when that campaign goes out.\n\nThis is a different job from the sibling guides:\n\n- [Slack creative desk](/use-cases/slack-creative-desk) is a request-and-return desk in Slack.\n- [Social media automation](/use-cases/social-media-automation) writes captions and schedules posts with Buffer.\n- [Always-on creative automation](/use-cases/always-on-creative-automation) is the HTTP step in Zapier, Make, or n8n.\n- [Klaviyo email heroes](/use-cases/klaviyo-email-heroes) hands `imageUrl` into Klaviyo image blocks.\n- [HubSpot campaign creatives](/use-cases/hubspot-campaign-creatives) hands `imageUrl` into HubSpot.\n- This guide generates newsletter heroes and optional paste-ready packages for EmailOctopus. Brandiseer does not push into EmailOctopus and does not send campaigns.\n\n![Example strip: newsletter hero, promo square, section still, and footer banner](https://blog.brandiseer.com/use-case-assets/emailoctopus-newsletter-automation/example-strip.png)"},{"id":"stack","heading":"Stack","markdown":"| Layer | Tool | Role |\n| --- | --- | --- |\n| Brand visuals | Brandiseer MCP and/or REST v2 | Generate on-brand stills. MCP uses `Authorization: Bearer`. REST uses `X-API-Key: bds_...` |\n| Agent host (pick one) | Cursor | Read the newsletter brief, call Brandiseer, return `imageUrl` and optional copy/HTML |\n| Agent host (pick one) | Claude Cowork | Same contract; optional recurring scheduled package |\n| Email home | EmailOctopus | Campaign editor and send. A person places the still and HTML. |\n\n![Stack diagram: Cursor or Cowork, Brandiseer, and EmailOctopus](https://blog.brandiseer.com/use-case-assets/emailoctopus-newsletter-automation/stack-diagram.png)\n\nYou only need one agent host. The Brandiseer contract is the same on both. EmailOctopus has no Brandiseer app that drops a still into a campaign. The handoff is an image URL, a download, and optionally a draft HTML body. A person places it and sends.\n\n**Brandiseer docs:** [Developers](https://brandiseer.com/developers) · [guide/docs](https://brandiseer.com/guide/docs) · [guide/image](https://brandiseer.com/guide/image) · [Settings → API](https://brandiseer.com/settings/api)\n\n**EmailOctopus docs:** [EmailOctopus](https://emailoctopus.com) · [API documentation](https://emailoctopus.com/api-documentation) · [API v2](https://emailoctopus.com/api-documentation/v2)\n\nEndpoint tables and HTTP contracts for Brandiseer are in API reference at the end of this guide. EmailOctopus API notes for agents (contacts, reports, and the campaign create gap) are there too.\n\n### EmailOctopus (placement, not generation)\n\nTwo practical paths. Use the first one for almost every send.\n\n1. **Campaign editor (default).** Download the still or copy `imageUrl`. In EmailOctopus, create or open a draft campaign, add an image block (or paste HTML that references the hosted `imageUrl`), set subject and preview text, pick the list, preview, then send. Brandiseer stops at the URL and optional draft copy.\n2. **HTML paste.** When the agent returns a simple HTML body with the Brandiseer `imageUrl` already in an `<img src=\"...\">`, paste that HTML into EmailOctopus's HTML or custom template path in the product. A person still reviews and sends. Do not invent an API create-campaign call.\n\nThis guide does not create campaigns, schedule sends, or call a send endpoint. EmailOctopus's public campaign surface is read and report oriented. A person places the still and sends later, outside this workflow."},{"id":"architecture","heading":"How it works","markdown":"1. You store the brand once in Brandiseer (logo and reference visuals teach the look).\n2. The agent host (Cursor or Cowork) has Brandiseer MCP or REST, the Brand ID (`bds_c_...`), and the standing instructions in this guide.\n3. You name the slot: newsletter hero or header, promo still, section still, or a short footer banner. Optionally you also ask for subject, preview text, and body copy.\n4. Brandiseer returns `imageUrl`. The agent reports the URL, crop, mode, suggested alt text, and a placement note. If copy was requested, it returns subject, preview text, body, and optional HTML that embeds `imageUrl`.\n5. A person places the assets in EmailOctopus, previews on mobile and desktop, then sends. Optional API steps are limited to what EmailOctopus documents (lists, contacts, tags, starting an existing automation, reading campaign reports). They never create the campaign in this guide.\n\n![Workflow: brief, Brandiseer still, optional copy and HTML, person places in EmailOctopus, send](https://blog.brandiseer.com/use-case-assets/emailoctopus-newsletter-automation/workflow-infographic.png)"},{"id":"prerequisites","heading":"What you need","markdown":"- Company website URL, if the brand is not in Brandiseer yet\n- Brandiseer account with at least one finished brand profile\n- API key (`bds_...`) from [Settings → API](https://brandiseer.com/settings/api) or [Developers](https://brandiseer.com/developers)\n- Brand ID (`bds_c_...`) for every brand the agent may call\n- Credits for the stills you actually generate\n- Cursor or Claude Cowork, with Brandiseer MCP or a way to call REST\n- An EmailOctopus account you can edit, with at least one list and permission to create campaigns in the UI\n- Optional, only for contact or report scripts: an EmailOctopus API key from account settings. This key is not the Brandiseer key. It does not unlock campaign create or send in the public API"},{"id":"setup","heading":"Setup","markdown":"### Stage 1: Add your brand on Brandiseer\n\n1. Go to [brandiseer.com](https://brandiseer.com). In the homepage input, enter your company website URL and click **Try My Brand**.\n2. Wait about one minute while Brandiseer analyses the site and picks a logo and visuals.\n3. Review those visuals carefully. They teach Brandiseer your look. Every later newsletter still is influenced by what you leave here.\n4. Remove anything off-brand (partner logos, stock, irrelevant screenshots). Add campaign creatives or product photography that match the look you want.\n5. Click **Add Brand**, sign up if prompted, then wait about 30 seconds for the brand profile to finish.\n\nAgencies repeat this once per client. Do not point two EmailOctopus accounts at one Brand ID.\n\n### Stage 2: API key and Brand ID\n\n1. Open [brandiseer.com/developers](https://brandiseer.com/developers) or [Settings → API](https://brandiseer.com/settings/api).\n2. Create an API key (`bds_...`). Put it in the agent host's secret store. Do not paste it into an EmailOctopus campaign, Slack, or a git repo.\n3. Copy the Brand ID (`bds_c_...`).\n4. Confirm the key with `GET https://brandiseer.com/api/v1/credits` and `GET https://brandiseer.com/api/v1/brands`, header `X-API-Key`. The credits JSON includes `credits`. The brands list includes each brand `id`.\n5. Optional reachability check, no key required: `GET https://brandiseer.com/api/v1/health` returns `{ \"status\": \"ok\" }`.\n\nRead [guide/docs](https://brandiseer.com/guide/docs) and [guide/image](https://brandiseer.com/guide/image) once while you write the standing instructions.\n\n### Stage 3: Connect Brandiseer to the agent host\n\nUse Cursor or Cowork. One host is enough.\n\n1. Connect Brandiseer MCP at `https://brandiseer.com/api/mcp` with `Authorization: Bearer <api-key>`, **or** keep the REST key in the host secret store and call v2 generate endpoints.\n2. Paste the **System prompt** from this guide into the standing instructions for newsletter work.\n3. Fill in Brand ID defaults and any multi-brand map before the first generate.\n\n### Stage 4: Smoke-test one still\n\n1. Ask the agent for a 16:9 newsletter hero for a fictional promo. Require layout-only prompt language (no colours or fonts in the prompt).\n2. Confirm you get a public `imageUrl`, aspect ratio, mode, and a placement note.\n3. Open EmailOctopus, create a draft campaign, add an image, and confirm the still displays. Do not send the smoke test.\n\n### Stage 5: Optional copy and HTML package\n\nWhen you want more than a still:\n\n1. Ask the agent for subject (about 50 characters or fewer when possible), preview text, body paragraphs, CTA label, and a minimal HTML body that includes `<img src=\"{{imageUrl}}\" alt=\"...\" width=\"600\">` (or the live URL once generation finishes).\n2. Paste subject, preview text, and HTML into EmailOctopus. Preview on mobile. Keep legal footers, unsubscribe, and address blocks as EmailOctopus provides them. Do not strip required compliance elements.\n3. A person sends. The agent does not call a send API.\n\n### Stage 6: Optional recurring Cowork task\n\nAfter the smoke test works, you can create a Cowork scheduled task that, on newsletter days:\n\n1. Reads a short brief (product, offer, theme).\n2. Generates the Brandiseer still.\n3. Drafts subject, preview text, body, and HTML.\n4. Writes the package to a file or returns it in chat for a person to paste into EmailOctopus.\n\nThe task must not claim the campaign was created or sent. EmailOctopus campaign create and send are out of scope for the public API used in this guide."},{"id":"prompting-rules","heading":"Prompting rules for Brandiseer images","markdown":"When the agent builds `prompt`:\n\n- Keep subject, layout, composition, and on-image text (what the words say and where they sit).\n- Never send brand colours, fonts, mood, or visual style. Brand memory already applies those.\n- Put crop in `aspectRatio`, quality in `mode`, pixel size in `resolution`, and logo on/off in `useLogo`. Those are body fields, not prompt prose.\n- Map the EmailOctopus slot to a documented ratio. Newsletter hero and header: `16:9`. Promo square: `1:1`. In-email card: `4:3`. Footer banner: `16:9` with a shorter display height set in the editor.\n- Prefer `design` for finished newsletter stills. Fall back to `fast` if design fails once.\n- Prefer `1K` or `2K`. Email clients punish huge files. Keep on-image text sparse; put long headlines in EmailOctopus text blocks when you can.\n- Set `useLogo` true only when the brief asked for a logo.\n- Full rules: [Prompt compatibility](https://brandiseer.com/guide/image)."},{"id":"system-prompts","heading":"System prompt","markdown":"Paste this into Cursor or Cowork as the standing instructions for EmailOctopus newsletter work. Replace the placeholders before the first generate.\n\n```text\nYou produce on-brand newsletter heroes and optional paste-ready email\npackages for EmailOctopus. Brandiseer returns an image URL. You do not\ncreate EmailOctopus campaigns and you do not send.\n\nBrandiseer:\n- MCP: https://brandiseer.com/api/mcp with Authorization: Bearer.\n  Tools you may call: brandiseer_list_brands, brandiseer_check_credits,\n  brandiseer_generate_image. Do not invent tool names.\n- REST: X-API-Key: bds_... (secret store only).\n  Prefer POST https://brandiseer.com/api/v2/generate\n  or POST https://brandiseer.com/api/v2/generate/async\n  then poll GET https://brandiseer.com/api/v2/jobs/:jobId every 3 to 5 seconds\n  until data.status is done or failed, or about 10 minutes have passed.\n- Live contract: https://brandiseer.com/guide/docs and\n  https://brandiseer.com/guide/image\n\nDefaults for this account (fill in once):\n- Brand ID: bds_c_...\n- Newsletter hero / header aspectRatio: 16:9\n- Promo square aspectRatio: 1:1\n- mode: design\n- resolution: 2K (use 1K if the inbox weight must stay light)\n- useLogo when the brief is silent: false\n- Multi-brand map, if any: brand name to bds_c_...\n\nOn every request:\n1. Resolve brandId from the brief or the default. If more than one brand\n   exists and the brief does not name one, ask. Never fall through to\n   another client's Brand ID.\n2. Check credits before a batch. On 402, stop.\n3. Rewrite the image brief into subject, layout, composition, and\n   on-image text. Strip colours, fonts, mood, and visual style. If\n   stripping leaves no physical subject, ask what is in the frame.\n4. Choose aspectRatio from the slot. Put resolution, mode, and useLogo in\n   API fields, not in the prompt.\n5. Generate one still. Return imageUrl, aspectRatio, mode, resolution,\n   useLogo, a one-line alt text suggestion, and a placement note\n   (hero, header, promo, section, or footer).\n6. If the human asked for a full package, also return:\n   - subject (short)\n   - preview text\n   - body copy (plain text paragraphs)\n   - CTA label and destination URL if provided\n   - minimal HTML that embeds the live imageUrl in an img tag (width 600),\n     with the body copy and CTA. Do not invent unsubscribe or address\n     blocks; remind the human that EmailOctopus supplies compliance\n     footers.\n7. Do not tell the user an EmailOctopus campaign was created or sent\n   unless they confirm they pasted and sent it themselves.\n\nEmailOctopus API (optional, only when the human supplied an API key and\nasked for contacts or reports):\n- Base: https://api.emailoctopus.com\n- Auth: Authorization: Bearer and the EmailOctopus key. Never the\n  Brandiseer key.\n- Follow https://emailoctopus.com/api-documentation/v2\n- Allowed in this guide: lists, contacts, and tags on that page;\n  POST https://api.emailoctopus.com/automations/{automation_id}/queue\n  for an existing automation that already uses the Started via API\n  trigger; GET https://api.emailoctopus.com/campaigns and the GET\n  campaign report paths on the same page.\n- Forbidden in this guide: inventing a create-campaign, schedule, or\n  send endpoint. Public v2 campaign operations are GET only.\n- A queue call starts an existing automation. It does not create the\n  newsletter campaign. Do not use it as a substitute for send.\n- Never mix the EmailOctopus key with the Brandiseer key.\n\nOut of scope:\n- Slack replies, Buffer scheduling, Klaviyo or HubSpot placement.\n- Zapier / Make / n8n recipes (see Always-on creative automation).\n- Legal approval of claims, prices, or offers printed on the image.\n```"},{"id":"add-ons","heading":"Add-ons","markdown":"### Recurring newsletter day (Cowork)\n\nAfter the base flow works, create a scheduled Cowork task for your newsletter cadence (for example weekly). Each run reads a brief file, generates the Brandiseer still, drafts the package, and drops the result in chat or a known folder for a person to paste into EmailOctopus. Keep human preview and send.\n\n### Product-from-URL stills\n\nWhen the brief names a product page, the agent may fetch public page context for the copy brief, then generate a still that features that product. Brandiseer still applies brand memory. Do not scrape behind logins.\n\n### Multi-variant heroes\n\nAsk for two or three layout variants (product-left, product-centred, lifestyle) with the same offer. A person picks one in EmailOctopus.\n\n### Report pull after send\n\nAfter a human sends, an agent with an EmailOctopus API key may read the campaign report GET endpoints documented in API v2 (summary, links, and contact rows). Use that for a short post-send note. It does not change how creatives are made, and it does not send."},{"id":"limits-and-faq","heading":"Limits & FAQ","markdown":"### Can the agent create and send the EmailOctopus campaign by API?\n\nNot in this guide. EmailOctopus's public v2 reference documents lists, contacts, tags, automations, and campaign reads and reports. Campaign operations on that page are GET only. Campaign create, schedule, and send are not part of this workflow. A person places assets in the UI and sends.\n\n### Does Brandiseer upload into EmailOctopus?\n\nNo. Brandiseer returns `imageUrl`. A person downloads or pastes that URL (or HTML that references it) into EmailOctopus.\n\n### How is this different from Klaviyo email heroes?\n\nSame Brandiseer contract and placement philosophy. The ESP is EmailOctopus instead of Klaviyo. This guide also documents an optional subject, body, and HTML package because EmailOctopus teams often want a full paste-ready draft, not only a still.\n\n### How is this different from Social media automation?\n\nBuffer can schedule posts through its agent and MCP path. EmailOctopus newsletter send stays with a person in this guide.\n\n### Off-brand images\n\nAlmost always caused by style, colour, or font language in the image prompt. Strip those and regenerate.\n\n### Credits and file weight\n\nImage generation spends Brandiseer credits by mode and resolution. Prefer `2K` or `1K` for email. Huge `4K` files slow the inbox and are rarely worth it for a 600px-wide column."},{"id":"demo","heading":"Demo / motion","markdown":"**Motion brief only. This is not an embed, and there is no walkthrough URL yet.**\n\n**Working title:** EmailOctopus newsletter creatives in under 40 minutes\n**Length:** 45 to 75 seconds\n\n**Story beats:**\n\n1. Brand uploaded on Brandiseer\n2. API key and Brand ID in Cursor or Cowork\n3. Agent returns `imageUrl` (and optional subject and HTML)\n4. Person pastes into an EmailOctopus campaign\n5. Preview, then send (human)\n\n**On screen:** Developers page, Cowork or Cursor chat, the EmailOctopus campaign editor, and a sample Brandiseer hero on a 600px email crop. Blur the Brandiseer API key and any EmailOctopus API key. Do not show a campaign created or sent by the agent."},{"id":"additional-1-related-use-cases","heading":"Related use cases","markdown":"- [Klaviyo email heroes](/use-cases/klaviyo-email-heroes): on-brand stills placed in Klaviyo by a person\n- [HubSpot campaign creatives](/use-cases/hubspot-campaign-creatives): on-brand stills placed in HubSpot emails, landing pages, and ads\n- [Social media automation](/use-cases/social-media-automation): on-brand images, captions, and Buffer scheduling\n- [Always-on creative automation](/use-cases/always-on-creative-automation): Zapier, Make, or n8n calls Brandiseer REST and delivers `imageUrl` downstream\n- [Slack creative desk](/use-cases/slack-creative-desk): people request stills in Slack and get them back in-thread"},{"id":"additional-2-links","heading":"Links","markdown":"| Resource | URL |\n| --- | --- |\n| Brandiseer | https://brandiseer.com |\n| Developers | https://brandiseer.com/developers |\n| API reference (guide/docs) | https://brandiseer.com/guide/docs |\n| Image prompt compatibility | https://brandiseer.com/guide/image |\n| MCP endpoint (agent hosts) | https://brandiseer.com/api/mcp |\n| API keys | https://brandiseer.com/settings/api |\n| EmailOctopus | https://emailoctopus.com |\n| EmailOctopus API documentation | https://emailoctopus.com/api-documentation |\n| EmailOctopus API v2 | https://emailoctopus.com/api-documentation/v2 |\n| Visual pack manifest | `assets/MANIFEST.md` |\n| Sibling: Klaviyo email heroes | https://blog.brandiseer.com/use-cases/klaviyo-email-heroes |\n| Sibling: HubSpot campaign creatives | https://blog.brandiseer.com/use-cases/hubspot-campaign-creatives |\n| Sibling: Social media automation | https://blog.brandiseer.com/use-cases/social-media-automation |\n| Sibling: Always-on creative automation | https://blog.brandiseer.com/use-cases/always-on-creative-automation |\n| Sibling: Slack creative desk | https://blog.brandiseer.com/use-cases/slack-creative-desk |"},{"id":"additional-3-source","heading":"Source","markdown":"Public Use case README for EmailOctopus newsletter automation. Brandiseer MCP and REST v2 image generation from Cursor or Claude Cowork, optional Claude copy and HTML package, then a person places assets in EmailOctopus and sends. Aligned with [guide/docs](https://brandiseer.com/guide/docs) and [guide/image](https://brandiseer.com/guide/image) (24 September 2026). EmailOctopus API notes follow the public v2 documentation: campaign calls there are GET only, and this workflow does not create or send campaigns. Distinct from Klaviyo email heroes, HubSpot campaign creatives, Buffer social scheduling, and Slack creative desk."},{"id":"api-reference","heading":"API reference","markdown":"Wiring reference for agents. The sections above are the human path.\n\n### Brandiseer MCP\n\nConnect `https://brandiseer.com/api/mcp` with `Authorization: Bearer` and the API key. Tools this guide uses:\n\n- `brandiseer_list_brands`\n- `brandiseer_check_credits`\n- `brandiseer_generate_image`\n\nDo not invent extra Brandiseer tool names. Brandiseer MCP does not edit EmailOctopus.\n\n### Brandiseer REST (prefer v2 images)\n\nSend `X-API-Key: bds_...` on every authenticated Brandiseer call.\n\n| Call | What you get |\n| --- | --- |\n| `POST https://brandiseer.com/api/v2/generate` | Sync still. `200` body `{ \"imageUrl\", \"creditsUsed\" }`. |\n| `POST https://brandiseer.com/api/v2/generate/async` | `202` body `{ \"data\": { \"jobId\" } }`. |\n| `GET https://brandiseer.com/api/v2/jobs/:jobId` | Poll every 3 to 5 seconds until `done` or `failed`. |\n| `GET https://brandiseer.com/api/v1/credits` | Current balance. |\n| `GET https://brandiseer.com/api/v1/brands` | Brands for the key (`bds_c_...`). |\n| `GET https://brandiseer.com/api/v1/health` | `{ \"status\": \"ok\" }`. No API key. |\n\nImage body fields: `brandId`, `prompt`, optional `aspectRatio` (`1:1`, `16:9`, `9:16`, `4:3`), `resolution` (`1K`, `2K`, `4K`), `mode` (`fast`, `design`, or `pro`), `useLogo`.\n\n### Field mapping\n\n| Incoming field | API | Rule |\n| --- | --- | --- |\n| Slot (hero, header, promo, section, footer) | `aspectRatio` | Hero, header, section, footer: `16:9`. Promo square: `1:1`. In-email card: `4:3`. |\n| headline | inside `prompt` only | On-image text. Prefer EmailOctopus text blocks for long headlines. |\n| brandId | `brandId` | `bds_c_...`. Required. |\n| mode | `mode` | Prefer `design` for newsletter stills. |\n| useLogo | `useLogo` | `true` or `false`. |\n| subject or brief | `prompt` | After stripping style words. |\n\n### Example JSON\n\n```json\n{\n  \"brandId\": \"bds_c_...\",\n  \"prompt\": \"Wide newsletter hero. Product centred on the left third. Empty right half for a headline the email will set in a text block. No on-image text.\",\n  \"aspectRatio\": \"16:9\",\n  \"resolution\": \"2K\",\n  \"mode\": \"design\",\n  \"useLogo\": false\n}\n```\n\n### EmailOctopus API (agents)\n\nBase URL: `https://api.emailoctopus.com`. Authenticate with `Authorization: Bearer` and the EmailOctopus API key from account settings, as on [API v2](https://emailoctopus.com/api-documentation/v2). That key is not the Brandiseer key.\n\nCampaign operations on that page are GET only:\n\n| Call | What you get |\n| --- | --- |\n| `GET https://api.emailoctopus.com/campaigns` | Campaigns already in the account. |\n| `GET https://api.emailoctopus.com/campaigns/{campaign_id}` | One campaign, including status and content a person already saved. |\n| `GET https://api.emailoctopus.com/campaigns/{campaign_id}/reports/summary` | Summary report after a human has sent. |\n| `GET https://api.emailoctopus.com/campaigns/{campaign_id}/reports` | Contact-level report rows. |\n| `GET https://api.emailoctopus.com/campaigns/{campaign_id}/reports/links` | Link report. |\n| `POST https://api.emailoctopus.com/automations/{automation_id}/queue` | Start an existing automation for one contact. Body is `{ \"contact_id\" }`. The automation must already use the Started via API trigger. `204` means queued. It does not create a campaign. |\n\nLists, contacts, and tags are also on that v2 reference. Use those pages when the human asked for list work. They do not place a still and they do not send a newsletter.\n\nThe v2 reference does not publish a create, schedule, or send method for campaigns. Do not invent `POST /campaigns`, a schedule body, or a send call. Reading `content.html` on a campaign does not mean the API accepts a new HTML body. A person pastes assets in the EmailOctopus editor and sends.\n\n### Slot prompts that stay layout-only\n\n| Slot | aspectRatio | Prompt |\n| --- | --- | --- |\n| Newsletter hero or header | `16:9` | Wide newsletter hero. Product centred on the left third. Empty right half for a headline the email will set in a text block. No on-image text. |\n| Promo square | `1:1` | Square promo. Single product in the centre. On-image text: \"20% off\" along the bottom edge. Open space above the product. |\n| Section still | `16:9` | Section still. Product cluster along the bottom edge. Upper two thirds empty for a heading and button. No on-image text. |\n| Footer banner | `16:9` | Short landscape banner. Product left of centre. On-image text: \"New arrivals\" in the right third. |"}],"actions":{"tryBrandiseer":"https://brandiseer.com","createApiKey":"https://brandiseer.com/settings/api","developerDocs":"https://brandiseer.com/developers","mcpEndpoint":"https://brandiseer.com/api/mcp"},"representations":{"html":"https://blog.brandiseer.com/use-cases/emailoctopus-newsletter-automation","markdown":"https://blog.brandiseer.com/use-cases/emailoctopus-newsletter-automation/agent.md","json":"https://blog.brandiseer.com/use-cases/emailoctopus-newsletter-automation/guide.json"}}