{"id":1269,"date":"2026-11-04T16:34:14","date_gmt":"2026-11-04T11:34:14","guid":{"rendered":"https:\/\/www.bulkresponse.com\/blog\/?p=1269"},"modified":"2026-11-04T22:07:34","modified_gmt":"2026-11-04T17:07:34","slug":"bulkresponse-email-marketing-api","status":"publish","type":"post","link":"https:\/\/www.bulkresponse.com\/blog\/general\/bulkresponse-email-marketing-api\/","title":{"rendered":"BulkResponse API: Email Marketing API for Python &amp; Claude"},"content":{"rendered":"<style>\n.bulkresponse-api-post{max-width:100%;overflow-wrap:break-word;word-wrap:break-word;}\n.bulkresponse-api-post img{max-width:100%;height:auto;display:block;}\n.bulkresponse-api-post figure{margin:1.5em 0;max-width:100%;}\n.bulkresponse-api-post .br-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;margin:1em 0;}\n.bulkresponse-api-post table{width:100%;border-collapse:collapse;}\n.bulkresponse-api-post th,.bulkresponse-api-post td{padding:8px 10px;border:1px solid #e2e2e2;vertical-align:top;text-align:left;}\n.bulkresponse-api-post pre{overflow-x:auto;white-space:pre-wrap;word-break:break-word;background:#f5f7fa;border:1px solid #e2e6ea;border-radius:6px;padding:12px 14px;font-size:14px;line-height:1.5;max-width:100%;}\n.bulkresponse-api-post code{font-family:Menlo,Consolas,monospace;word-break:break-word;}\n.bulkresponse-api-post .br-box{background:#f5f8ff;border-left:4px solid #3b6fd8;border-radius:6px;padding:12px 16px;margin:1.25em 0;}\n.bulkresponse-api-post .br-stats{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:10px;}\n.bulkresponse-api-post .br-stats li{flex:1 1 140px;background:#f5f8ff;border-radius:6px;padding:10px;text-align:center;}\n.bulkresponse-api-post .br-step{background:#f9fafb;border:1px solid #e2e6ea;border-radius:6px;padding:12px 16px;margin:0 0 12px;}\n.bulkresponse-api-post a{word-break:break-word;}\n<\/style>\n<div class=\"bulkresponse-api-post\">\n<p><strong>PRODUCT LAUNCH \u00b7 NOVEMBER 2026<\/strong><\/p>\n<h1>Introducing the BulkResponse API: An Email Marketing API for Python and Claude<\/h1>\n<p>Automate bulk email, list sync and campaigns with a REST API, a Python client, or a Claude skill<\/p>\n<p>By the BulkResponse Team \u00b7 8 minute read \u00b7 Docs: <a href=\"https:\/\/app.bulkresponse.com\/web\/api\/docs\">app.bulkresponse.com\/web\/api\/docs<\/a><\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\" src=\"https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-api-docs-portal.png\" alt=\"The BulkResponse API documentation portal, showing every endpoint grouped by area.\" class=\"wp-image-1264\" style=\"max-width:100%;height:auto\" srcset=\"https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-api-docs-portal.png 1600w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-api-docs-portal-300x169.png 300w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-api-docs-portal-768x432.png 768w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-api-docs-portal-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">The new API docs portal: every endpoint, every field, and a copy-ready example for each.<\/figcaption><\/figure>\n<p>Your email marketing shouldn&#8217;t stop at the edge of the BulkResponse dashboard. Today we&#8217;re launching the <strong>BulkResponse Web Account API<\/strong>, a JSON REST <strong>email marketing API<\/strong> that gives your apps, scripts and integrations full access to your lists, subscribers, campaigns, autoresponders and stats. Sync contacts the moment they sign up, send personalised campaigns with spintax, and run email automations from your own code, all on top of the same <a href=\"https:\/\/www.bulkresponse.com\/bulk-email-marketing-features\"><u>bulk email features<\/u><\/a> you already use. We&#8217;re also releasing two ready-made clients: a free <strong>Python client<\/strong>, and a <strong>Claude skill<\/strong> that lets you run your BulkResponse account just by asking Claude.<\/p>\n<div class=\"br-box\">\n<p>\u26a1 <strong>Key highlights<\/strong><\/p>\n<ul>\n<li><strong>Full account access<\/strong>: lists, subscribers, suppressions, campaigns, jobs, stats and autoresponders.<\/li>\n<li><strong>Bulk import<\/strong>: add up to <strong>100 contacts in one request<\/strong>, with a result for each one.<\/li>\n<li><strong>Personalisation everywhere<\/strong>: 13 built-in tags plus your custom fields, in subjects and bodies.<\/li>\n<li><strong>Spintax<\/strong>: a different variation for every recipient, chosen when the email is sent.<\/li>\n<li><strong>Send, schedule, pause and resume<\/strong> through BulkResponse delivery, your SMTP or a connected mailbox.<\/li>\n<li><strong>Two free clients<\/strong>: a Python client with no dependencies, and a Claude skill for plain-language control.<\/li>\n<\/ul>\n<\/div>\n<ul class=\"br-stats\">\n<li><strong>30+<\/strong><br \/>endpoints<\/li>\n<li><strong>100<\/strong><br \/>contacts per bulk call<\/li>\n<li><strong>13<\/strong><br \/>personalisation tags<\/li>\n<li><strong>0<\/strong><br \/>dependencies in the Python client<\/li>\n<\/ul>\n<div class=\"br-box\">\n<p>\ud83d\udcd1 <strong>In this article<\/strong><\/p>\n<ol>\n<li><a href=\"#why-use-an-email-marketing-api\">Why use an email marketing API?<\/a><\/li>\n<li><a href=\"#what-the-bulk-email-api-can-do\">What the bulk email API can do<\/a><\/li>\n<li><a href=\"#personalisation-placeholders-and-spintax\">Personalisation placeholders and spintax<\/a><\/li>\n<li><a href=\"#getting-started-with-the-api-in-three-steps\">Getting started with the API in three steps<\/a><\/li>\n<li><a href=\"#choose-your-way-in-rest-api-python-or-claude\">Choose your way in: REST API, Python or Claude<\/a><\/li>\n<li><a href=\"#the-python-client-for-the-bulkresponse-api\">The Python client<\/a><\/li>\n<li><a href=\"#the-claude-skill-run-bulkresponse-email-marketing-by-asking-claude\">The Claude skill: run BulkResponse by asking Claude<\/a><\/li>\n<li><a href=\"#good-to-know-api-limits-and-rules\">Good to know: limits and rules<\/a><\/li>\n<li><a href=\"#faq\">FAQ<\/a><\/li>\n<li><a href=\"#start-building-today\">Start building today<\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"why-use-an-email-marketing-api\">1. Why use an email marketing API?<\/h2>\n<p>Most of our customers don&#8217;t collect contacts in one place. Leads arrive from website forms, checkout pages, CRMs, webinars and spreadsheets. Copying them into BulkResponse by hand is slow and error-prone, and it means your welcome emails go out late or not at all. An API closes that gap: every new contact lands on the right list automatically.<\/p>\n<p>With the API you can:<\/p>\n<ul>\n<li><strong>Sync subscribers automatically<\/strong> from your website, CRM or store the moment someone signs up.<\/li>\n<li><strong>Create and send campaigns from your own systems<\/strong>, for example a weekly newsletter generated from your blog.<\/li>\n<li><strong>Start autoresponder series<\/strong> the moment a new customer joins a list.<\/li>\n<li><strong>Pull stats into your own dashboards<\/strong>: opens, clicks, bounces and unsubscribes for every send.<\/li>\n<li><strong>Keep your lists clean<\/strong> by managing suppressions and unsubscribes in code, alongside our <a href=\"https:\/\/www.bulkresponse.com\/email-list-cleaning-service\"><u>email list cleaning service<\/u><\/a>.<\/li>\n<\/ul>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"700\" src=\"https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-api-flow-diagram.png\" alt=\"Diagram showing how websites, CRMs, Python scripts and Claude connect to the BulkResponse email marketing API to send campaigns and return stats.\" class=\"wp-image-1265\" style=\"max-width:100%;height:auto\" srcset=\"https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-api-flow-diagram.png 1600w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-api-flow-diagram-300x131.png 300w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-api-flow-diagram-768x336.png 768w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-api-flow-diagram-1536x672.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/figure>\n<p><em>Your tools talk to the API. BulkResponse handles the sending.<\/em><\/p>\n<h2 id=\"what-the-bulk-email-api-can-do\">2. What the bulk email API can do<\/h2>\n<p>The API is a simple JSON REST API. Every request is authenticated with your personal API key, and every response has the same shape, <code>{\"status\": \"success\", \"message\": \"...\", \"data\": {...}}<\/code>, so it&#8217;s easy to use from any language. Campaigns can go out through BulkResponse delivery, your own <a href=\"https:\/\/www.bulkresponse.com\/smtp-relay-service\"><u>SMTP relay<\/u><\/a>, or a <a href=\"https:\/\/www.bulkresponse.com\/mailbox-smtp-integrations\"><u>connected mailbox or SMTP integration<\/u><\/a>.<\/p>\n<div class=\"br-table-wrap\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%\">\n<table style=\"width:100%\">\n<thead>\n<tr>\n<th>Area<\/th>\n<th>What you can do<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\ud83d\udccb Lists &amp; categories<\/td>\n<td>Create and update lists (from name, reply-to, bounce address, single or double opt-in) and organise them into categories.<\/td>\n<\/tr>\n<tr>\n<td>\ud83d\udc65 Subscribers<\/td>\n<td>Add, update, move, unsubscribe and delete subscribers, with name, address, phone numbers and custom fields. Bulk add imports up to 100 contacts per request, with a result for each one.<\/td>\n<\/tr>\n<tr>\n<td>\ud83d\udeab Suppressions<\/td>\n<td>Block emails or whole domains on one list or across your whole account, up to 1,000 entries per request.<\/td>\n<\/tr>\n<tr>\n<td>\u2709\ufe0f Campaigns<\/td>\n<td>Create HTML and plain-text campaigns, then send now or schedule, and pause or resume a send. You can choose BulkResponse delivery, your own SMTP, or a connected mailbox.<\/td>\n<\/tr>\n<tr>\n<td>\u2699\ufe0f Jobs<\/td>\n<td>See every queued, running, scheduled, paused and completed send, with progress counts.<\/td>\n<\/tr>\n<tr>\n<td>\ud83d\udcca Stats<\/td>\n<td>Account totals, results for each campaign send, live subscriber counts per list, and autoresponder stats (sent, opens, clicks, bounces, unsubscribes and rates).<\/td>\n<\/tr>\n<tr>\n<td>\ud83d\udd01 Autoresponders<\/td>\n<td>Build follow-up series that go out a set number of hours or days after someone subscribes. Activate, pause, edit or delete them at any time.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"br-box\">\n<p>\ud83d\udca1 <strong>Tip: duplicates and bad addresses are handled for you<\/strong><\/p>\n<p>Adding someone who is already on a list returns their existing record instead of creating a copy. Bounced, suppressed and invalid addresses are blocked automatically, exactly as they are in a normal import.<\/p>\n<\/div>\n<h2 id=\"personalisation-placeholders-and-spintax\">3. Personalisation placeholders and spintax<\/h2>\n<h3>Placeholders: every email feels personal<\/h3>\n<p>Campaigns and autoresponders support personalisation tags in the <strong>subject line, HTML and plain text<\/strong>. Each subscriber sees their own details:<\/p>\n<pre style=\"overflow-x:auto;white-space:pre-wrap\"><code>%%first_name%% %%last_name%% %%email%% %%city%%\n%%state%% %%zip%% %%country%% %%address1%%\n%%address2%% %%cellphone%% %%cellcountrycode%%\n%%homephone%% %%workphone%%<\/code><\/pre>\n<p>Custom fields defined on your list work too. A field named <em>Company<\/em> becomes %%Company%%.<\/p>\n<h3>Spintax: a different version for every recipient<\/h3>\n<p>Sending the exact same text to thousands of people is a weak spot for deliverability. With spintax, BulkResponse picks <strong>one option per recipient<\/strong> when the email is sent: Want help writing variations? Our <a href=\"https:\/\/www.bulkresponse.com\/blog\/email-marketing-tips\/boost-your-email-open-rates-with-bulkresponses-new-ai-spintax-generator\/\"><u>AI Spintax Generator<\/u><\/a> creates them for you.<\/p>\n<pre style=\"overflow-x:auto;white-space:pre-wrap\"><code>Subject: {{RANDOM |Quick question|A short note|Following up}}, %%first_name%%\n\n{{RANDOM |Hi|Hello|Hey}} %%first_name%%,\n\n{{RANDOM |We put together|Here is}} an update for %%city%%.<\/code><\/pre>\n<div class=\"br-step\">\n<p>Ayesha \u00b7 Lahore<\/p>\n<p><strong>Quick question, Ayesha<\/strong><\/p>\n<p>Hi Ayesha, we put together an update for Lahore.<\/p>\n<\/div>\n<div class=\"br-step\">\n<p>Bilal \u00b7 Karachi<\/p>\n<p><strong>Following up, Bilal<\/strong><\/p>\n<p>Hey Bilal, here is an update for Karachi.<\/p>\n<\/div>\n<div class=\"br-step\">\n<p>Sara \u00b7 Islamabad<\/p>\n<p><strong>A short note, Sara<\/strong><\/p>\n<p>Hello Sara, we put together an update for Islamabad.<\/p>\n<\/div>\n<p><em>One template, three different inboxes: spintax and placeholders working together.<\/em><\/p>\n<div class=\"br-box\">\n<p>\u270f\ufe0f <strong>Spintax rules of thumb<\/strong><\/p>\n<ul>\n<li>A block starts with <code>{{RANDOM |<\/code>. Note the space before the first bar.<\/li>\n<li>Placeholders inside an option are filled after the option is chosen.<\/li>\n<li>Put blocks next to each other. Don&#8217;t nest one block inside another.<\/li>\n<\/ul>\n<\/div>\n<h2 id=\"getting-started-with-the-api-in-three-steps\">4. Getting started with the API in three steps<\/h2>\n<ol class=\"br-steps\">\n<li class=\"br-step\">\n<p><strong>Get your API key<\/strong><\/p>\n<p>Account Settings \u2192 API \u2192 <strong>Generate API key<\/strong> (or <strong>Copy<\/strong>).<\/p>\n<\/li>\n<li class=\"br-step\">\n<p><strong>Note the base URL<\/strong><\/p>\n<p><code>https:\/\/app.bulkresponse.com\/web\/api\/v1<\/code><\/p>\n<\/li>\n<li class=\"br-step\">\n<p><strong>Make your first call<\/strong><\/p>\n<p>Send the key in the X-Auth-Token header. That&#8217;s it.<\/p>\n<\/li>\n<\/ol>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1400\" height=\"700\" src=\"https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-account-settings-api-key.png\" alt=\"BulkResponse Account Settings API tab with Generate, Copy and Regenerate API key buttons.\" class=\"wp-image-1266\" style=\"max-width:100%;height:auto\" srcset=\"https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-account-settings-api-key.png 1400w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-account-settings-api-key-300x150.png 300w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-account-settings-api-key-768x384.png 768w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><\/figure>\n<p><em>Your API key lives under Account Settings \u2192 API.<\/em><\/p>\n<p>Your first call fetches your account summary:<\/p>\n<pre style=\"overflow-x:auto;white-space:pre-wrap\"><code>curl -s \"https:\/\/app.bulkresponse.com\/web\/api\/v1\/stats\/account\" \\\n  -H \"X-Auth-Token: YOUR_API_KEY\"<\/code><\/pre>\n<p>Adding a subscriber is just as easy:<\/p>\n<pre style=\"overflow-x:auto;white-space:pre-wrap\"><code>curl -s -X POST \"https:\/\/app.bulkresponse.com\/web\/api\/v1\/subscribers\" \\\n  -H \"X-Auth-Token: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\"list_id\": 123, \"email\": \"ayesha@example.com\",\n       \"first_name\": \"Ayesha\", \"city\": \"Lahore\"}'<\/code><\/pre>\n<p>Full reference, with every endpoint, every field and a copy-ready example for each: <a href=\"https:\/\/app.bulkresponse.com\/web\/api\/docs\"><strong>https:\/\/app.bulkresponse.com\/web\/api\/docs<\/strong><\/a><\/p>\n<div class=\"br-box\">\n<p>\ud83d\udd12 <strong>Keep your key secret<\/strong><\/p>\n<p>Anyone with your API key can manage your lists and send email from your account. Never put it in a web page, in browser JavaScript, or in code you share. If it ever leaks, click <strong>Regenerate API key<\/strong> and the old key stops working immediately.<\/p>\n<\/div>\n<h2 id=\"choose-your-way-in-rest-api-python-or-claude\">5. Choose your way in: REST API, Python or Claude<\/h2>\n<div class=\"br-table-wrap\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%\">\n<table style=\"width:100%\">\n<thead>\n<tr>\n<th><\/th>\n<th>Direct API<\/th>\n<th>Python client<\/th>\n<th>Claude skill<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Best for<\/td>\n<td>Developers using any language<\/td>\n<td>Scripts, cron jobs, data teams<\/td>\n<td>Marketers and anyone who&#8217;d rather ask than code<\/td>\n<\/tr>\n<tr>\n<td>You write<\/td>\n<td>HTTP requests<\/td>\n<td>A few lines of Python<\/td>\n<td>Plain-language requests<\/td>\n<\/tr>\n<tr>\n<td>Setup time<\/td>\n<td>Minutes<\/td>\n<td>2 minutes (unzip, set key)<\/td>\n<td>3 minutes (install skill, set key)<\/td>\n<\/tr>\n<tr>\n<td>Handles paging, retries, errors<\/td>\n<td>You do<\/td>\n<td>\u2705 Built in<\/td>\n<td>\u2705 Built in<\/td>\n<\/tr>\n<tr>\n<td>Writes campaign copy for you<\/td>\n<td>\u2014<\/td>\n<td>\u2014<\/td>\n<td>\u2705 With placeholders and spintax<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Both clients can be downloaded from the <strong>API clients<\/strong> section of the <a href=\"https:\/\/app.bulkresponse.com\/web\/api\/docs\">API docs portal<\/a>.<\/p>\n<h2 id=\"the-python-client-for-the-bulkresponse-api\">6. The Python client for the BulkResponse API<\/h2>\n<p>A single file, <code>bulkresponse_api.py<\/code>, covering <strong>every endpoint<\/strong>. It uses only Python&#8217;s standard library, so there&#8217;s nothing to pip install (Python 3.8 or newer). It handles authentication, pagination and errors, and if you reach the hourly limit it waits and retries automatically.<\/p>\n<h3>Set it up<\/h3>\n<ol>\n<li>Download <em>bulkresponse-python-client.zip<\/em> from the <a href=\"https:\/\/app.bulkresponse.com\/web\/api\/docs\">API docs portal<\/a> and unzip it.<\/li>\n<li>Store your key and base URL as environment variables. On macOS or Linux:<\/li>\n<\/ol>\n<pre style=\"overflow-x:auto;white-space:pre-wrap\"><code>export BULKRESPONSE_API_KEY=\"paste-your-key-here\"\nexport BULKRESPONSE_API_URL=\"https:\/\/app.bulkresponse.com\/web\/api\/v1\"<\/code><\/pre>\n<p>On Windows PowerShell, use <code>setx BULKRESPONSE_API_KEY \"...\"<\/code> and <code>setx BULKRESPONSE_API_URL \"...\"<\/code>, then open a new window. To check it works, run <code>python3 bulkresponse_api.py account<\/code>.<\/p>\n<h3>Use it<\/h3>\n<pre style=\"overflow-x:auto;white-space:pre-wrap\"><code>from bulkresponse_api import BulkResponseClient, spintax\n\nbr = BulkResponseClient()  # reads your key and URL\n\n# Import contacts, 100 per request\nbr.add_subscribers_bulk(123, [\n    {\"email\": \"bilal@example.com\", \"first_name\": \"Bilal\"},\n    {\"email\": \"sara@example.com\", \"first_name\": \"Sara\"},\n])\n\n# Personalised campaign with spintax, sent and tracked\ncamp = br.create_campaign(\n    name=\"Winter sale\",\n    subject=spintax(\"Quick question\", \"A short note\") + \", %%first_name%%\",\n    html=\"&lt;p&gt;{{RANDOM |Hi|Hello}} %%first_name%%, our winter sale is live.&lt;\/p&gt;\")\njob = br.send_campaign(camp[\"campaignid\"], [123], from_name=\"Acme Team\")\nprint(br.wait_for_send(job[\"jobid\"]))\n\n# A three-step welcome series: now, after 1 day, after 3 days\nbr.create_autoresponder_series(123, [\n    {\"subject\": \"Welcome, %%first_name%%\", \"html\": welcome,\n     \"hours_after_subscription\": 0},\n    {\"subject\": \"A quick tip\", \"html\": tip,\n     \"hours_after_subscription\": 24},\n    {\"subject\": \"Still with us?\", \"html\": last,\n     \"hours_after_subscription\": 72},\n], name_prefix=\"Welcome\")<\/code><\/pre>\n<p>It also includes a command-line tool for everyday jobs, such as importing a CSV in one line:<\/p>\n<pre style=\"overflow-x:auto;white-space:pre-wrap\"><code>python3 bulkresponse_api.py import-csv 123 contacts.csv<\/code><\/pre>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1400\" height=\"800\" src=\"https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-python-client-terminal.png\" alt=\"Python client for the BulkResponse API running in a terminal.\" class=\"wp-image-1267\" style=\"max-width:100%;height:auto\" srcset=\"https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-python-client-terminal.png 1400w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-python-client-terminal-300x171.png 300w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-python-client-terminal-768x439.png 768w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><\/figure>\n<p><em>Import a CSV and check results from the command line.<\/em><\/p>\n<h2 id=\"the-claude-skill-run-bulkresponse-email-marketing-by-asking-claude\">7. The Claude skill: run BulkResponse email marketing by asking Claude<\/h2>\n<p>This is the part we&#8217;re most excited about. The <strong>BulkResponse Claude skill<\/strong> teaches Claude, Anthropic&#8217;s AI assistant, how to use your BulkResponse account through the API. Instead of writing code, you describe what you want in plain language, and Claude does the work and reports back.<\/p>\n<div class=\"br-box\">\n<p><em>&#8220;Import contacts.csv into my November Leads list, then write a personalised campaign announcing our winter sale with spintax in the subject, and show me how it looks before sending.&#8221;<\/em><\/p>\n<p>A single request is all it takes. Claude imports, writes, previews and waits for your go-ahead.<\/p>\n<\/div>\n<p>The skill includes the Python client, a full API reference, and the rules for using the API correctly: how placeholders and spintax work, how to stay within your rate limit, how autoresponder timing works, and more.<\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1400\" height=\"900\" src=\"https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-claude-skill-chat.png\" alt=\"Claude using the BulkResponse skill to manage an email marketing account.\" class=\"wp-image-1268\" style=\"max-width:100%;height:auto\" srcset=\"https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-claude-skill-chat.png 1400w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-claude-skill-chat-300x193.png 300w, https:\/\/www.bulkresponse.com\/blog\/wp-content\/uploads\/2026\/11\/bulkresponse-claude-skill-chat-768x494.png 768w\" sizes=\"auto, (max-width: 1400px) 100vw, 1400px\" \/><\/figure>\n<p><em>Ask in plain language, and get answers and actions from your real account.<\/em><\/p>\n<h3>Option A: Claude Code (recommended)<\/h3>\n<ol>\n<li>Download <em>bulkresponse-api-claude-skill.zip<\/em> from the <a href=\"https:\/\/app.bulkresponse.com\/web\/api\/docs\">API docs portal<\/a>.<\/li>\n<li>Unzip it into your skills folder:\n<pre style=\"overflow-x:auto;white-space:pre-wrap\"><code>mkdir -p ~\/.claude\/skills &amp;&amp; unzip bulkresponse-api-claude-skill.zip -d ~\/.claude\/skills\/<\/code><\/pre>\n<\/li>\n<li>Add your key and base URL to <code>~\/.claude\/settings.json<\/code>:\n<pre style=\"overflow-x:auto;white-space:pre-wrap\"><code>{\n  \"env\": {\n    \"BULKRESPONSE_API_KEY\": \"paste-your-key-here\",\n    \"BULKRESPONSE_API_URL\": \"https:\/\/app.bulkresponse.com\/web\/api\/v1\"\n  }\n}<\/code><\/pre>\n<\/li>\n<li>Restart Claude Code and ask: <em>&#8220;Show my BulkResponse account stats.&#8221;<\/em> Your key stays in your own settings file. It&#8217;s never typed into a chat.<\/li>\n<\/ol>\n<h3>Option B: Claude.ai or the Claude desktop app<\/h3>\n<ol>\n<li>Go to <strong>Settings \u2192 Capabilities<\/strong> and make sure code execution is turned on.<\/li>\n<li>Under <strong>Skills<\/strong>, click <strong>Upload skill<\/strong> and choose the zip file, without unzipping it.<\/li>\n<li>Start a chat and ask Claude to do something in BulkResponse. Claude will ask for your API key and base URL. A key pasted into a chat is stored with that chat, so many customers create a key for this purpose and regenerate it afterwards.<\/li>\n<\/ol>\n<h3>What you can ask Claude<\/h3>\n<p>\ud83d\udc65 <strong>Lists &amp; contacts<\/strong><\/p>\n<ul>\n<li>&#8220;List my lists with their real subscriber counts.&#8221;<\/li>\n<li>&#8220;Import contacts.csv into list 123 and tell me which rows were skipped and why.&#8221;<\/li>\n<li>&#8220;Move everyone on Trial who isn&#8217;t from acme.com to Prospects.&#8221;<\/li>\n<li>&#8220;Add these domains to my global suppression list.&#8221;<\/li>\n<\/ul>\n<p>\u2709\ufe0f <strong>Campaigns<\/strong><\/p>\n<ul>\n<li>&#8220;Write a welcome email personalised with first name and city, with three spintax greetings.&#8221;<\/li>\n<li>&#8220;Send campaign 226 to Customers through my SMTP channel.&#8221;<\/li>\n<li>&#8220;Schedule the newsletter for tomorrow at 9 am.&#8221;<\/li>\n<li>&#8220;Pause that send.&#8221; \/ &#8220;Resume it.&#8221;<\/li>\n<\/ul>\n<p>\ud83d\udd01 <strong>Autoresponders<\/strong><\/p>\n<ul>\n<li>&#8220;Create a three-step welcome series on Customers: now, after one day, after three days.&#8221;<\/li>\n<li>&#8220;Pause my onboarding series.&#8221;<\/li>\n<\/ul>\n<p>\ud83d\udcca <strong>Reporting<\/strong><\/p>\n<ul>\n<li>&#8220;How did my last five campaigns perform?&#8221;<\/li>\n<li>&#8220;How are my autoresponders doing?&#8221;<\/li>\n<li>&#8220;How many API calls do I have left this hour?&#8221;<\/li>\n<\/ul>\n<div class=\"br-box\">\n<p>\ud83d\udee1\ufe0f <strong>You stay in control<\/strong><\/p>\n<p>Claude always shows you what it&#8217;s about to do, including the campaign, the lists and the number of recipients, and asks for your confirmation before it sends or schedules email, resumes a paused send, turns on autoresponders, or deletes anything. To try it safely, ask Claude to set up a small test list containing only your own addresses first.<\/p>\n<\/div>\n<h2 id=\"good-to-know-api-limits-and-rules\">8. Good to know: API limits and rules<\/h2>\n<div class=\"br-table-wrap\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%\">\n<table style=\"width:100%\">\n<thead>\n<tr>\n<th>Topic<\/th>\n<th>Details<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Hourly API calls<\/td>\n<td>Every call counts toward an hourly allowance per account: 100 on Small Business plans and 2,000 on High Volume. Contact us if you need more. Every response tells you how many calls you have left.<\/td>\n<\/tr>\n<tr>\n<td>Bulk import<\/td>\n<td>Up to 100 contacts per request, and each request counts as one call.<\/td>\n<\/tr>\n<tr>\n<td>Scheduling<\/td>\n<td>Up to 5 scheduled campaigns per account per day through the API. Sending immediately doesn&#8217;t count toward this.<\/td>\n<\/tr>\n<tr>\n<td>Autoresponders<\/td>\n<td>Timed in hours after subscribing. They go to people who join the list after the autoresponder is created.<\/td>\n<\/tr>\n<tr>\n<td>Sender name<\/td>\n<td>Use your own brand. A from name can&#8217;t contain &#8220;BulkResponse&#8221;.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2 id=\"faq\">9. FAQ<\/h2>\n<p><strong>Is the API included in my plan?<\/strong><br \/>\nYes. The API is available on every BulkResponse web account. Generate your key under Account Settings \u2192 API. See <a href=\"https:\/\/www.bulkresponse.com\/bulk-email-marketing-service-pricing\"><u>BulkResponse pricing<\/u><\/a> for plan details and hourly API allowances.<\/p>\n<p><strong>Which programming languages can I use?<\/strong><br \/>\nAny language that can make HTTPS requests and read JSON. We provide a ready-made Python client, and every endpoint on the <a href=\"https:\/\/app.bulkresponse.com\/web\/api\/docs\">docs portal<\/a> has a copy-ready curl example.<\/p>\n<p><strong>Do I need to know how to code to use the Claude skill?<\/strong><br \/>\nNo. Install the skill, add your key, and ask Claude in plain language. Claude writes and runs the code for you.<\/p>\n<p><strong>Can Claude send email without my permission?<\/strong><br \/>\nNo. Claude asks for your confirmation before anything that sends email or deletes data, and shows you exactly who will receive it.<\/p>\n<p><strong>What happens if my key leaks?<\/strong><br \/>\nClick <strong>Regenerate API key<\/strong> in Account Settings \u2192 API. The old key stops working immediately.<\/p>\n<p><strong>Can I use my own SMTP server?<\/strong><br \/>\nYes. Campaign sends can go through BulkResponse delivery, one of your SMTP channels, or a connected mailbox.<\/p>\n<p><strong>Does the API help with deliverability?<\/strong><br \/>\nThe API uses the same sending, suppression and bounce handling as the dashboard, so the same rules apply. For best results, follow our <a href=\"https:\/\/www.bulkresponse.com\/blog\/general\/cold-email-deliverability-guide-2026\/\"><u>cold email deliverability guide<\/u><\/a>.<\/p>\n<h2 id=\"start-building-today\">10. Start building today<\/h2>\n<div class=\"br-box\" style=\"text-align:center\">\n<p><strong>Your account is API-ready.<\/strong><\/p>\n<p>Generate your key under <strong>Account Settings \u2192 API<\/strong>, read the docs, and download the Python client or the Claude skill.<\/p>\n<p><a href=\"https:\/\/app.bulkresponse.com\/web\/api\/docs\">\ud83d\udcd8 <strong>Open the API docs \u2192 app.bulkresponse.com\/web\/api\/docs<\/strong><\/a><\/p>\n<\/div>\n<p>We&#8217;d love to see what you build. If you have questions, ideas for new endpoints or feedback on the clients, <a href=\"https:\/\/www.bulkresponse.com\/contact\"><u>contact our support team<\/u><\/a>. Your feedback shapes the next version of the API.<\/p>\n<p><strong>Happy sending!<\/strong><br \/>\nThe BulkResponse Team<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>PRODUCT LAUNCH \u00b7 NOVEMBER 2026 Introducing the BulkResponse API: An Email Marketing API for Python and Claude Automate bulk email, list sync and campaigns with a REST API, a Python client, or a Claude skill By the BulkResponse Team \u00b7 8 minute read \u00b7 Docs: app.bulkresponse.com\/web\/api\/docs The new API docs portal: every endpoint, every field, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1264,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1269","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/www.bulkresponse.com\/blog\/wp-json\/wp\/v2\/posts\/1269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bulkresponse.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bulkresponse.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bulkresponse.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bulkresponse.com\/blog\/wp-json\/wp\/v2\/comments?post=1269"}],"version-history":[{"count":2,"href":"https:\/\/www.bulkresponse.com\/blog\/wp-json\/wp\/v2\/posts\/1269\/revisions"}],"predecessor-version":[{"id":1271,"href":"https:\/\/www.bulkresponse.com\/blog\/wp-json\/wp\/v2\/posts\/1269\/revisions\/1271"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bulkresponse.com\/blog\/wp-json\/wp\/v2\/media\/1264"}],"wp:attachment":[{"href":"https:\/\/www.bulkresponse.com\/blog\/wp-json\/wp\/v2\/media?parent=1269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bulkresponse.com\/blog\/wp-json\/wp\/v2\/categories?post=1269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bulkresponse.com\/blog\/wp-json\/wp\/v2\/tags?post=1269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}