API

Buttondown has a pleasant REST API to let you supercharge your newsletter.

Everything you can do in Buttondown, you can do with the API. Manage subscribers, send emails, create automations — all from your own code.

Here are some common operations to get you started.

import requests

url = "https://api.buttondown.com/v1/emails"
headers = {
    "Authorization": "Token $BUTTONDOWN_API_KEY",
    "Content-Type": "application/json"
}
data = {
    "subject": "Weekly Newsletter - Product Updates",
    "body": """# Product Updates This Week

Hey everyone! Here's what's new:

## New Features
- **Advanced Analytics**: Track subscriber engagement like never before
- **Custom Templates**: Create your own email designs
- **API Improvements**: Faster response times and better error handling

## Coming Soon
- Mobile app for iOS and Android
- Advanced automation workflows
- Integration with 50+ popular tools

Thanks for being part of our community!

Best,
The Team""",
    "status": "sent"
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

Build whatever you need.

The interface and integrations like Zapier handle most use cases. But when you need something custom, the API is there:

  • Power your SaaS. Programmatically send emails, manage subscribers, and handle paid subscriptions from your own application.
  • Integrate with your stack. Connect Buttondown to your analytics, CRM, or any internal tool.
  • Automate everything. Sync subscriber data, trigger emails from external events, or build your own dashboard.

API-first by design.

We didn't bolt on an API after the fact. Every feature in Buttondown is built API-first — we use the same API to power our own app. Open your browser's network tab and see for yourself.

That means no second-class endpoints, no missing functionality, and no surprises. If you can click it, you can script it.

Frequently asked questions

Yes. The API is available on all plans, including free. Learn more about getting started with the API.

Yes. The API is rate-limited to prevent abuse, but the limits are generous enough for most use cases. Learn more about rate limits.

In your Buttondown settings under the API section. You can also create multiple API keys with different permissions.

No, and that's deliberate. We'd rather invest in making our OpenAPI spec as good as humanly possible — which benefits every caller regardless of language or framework — than maintain a fleet of SDKs that inevitably lag behind the API itself. Every SDK encodes a pile of subjective decisions (error handling, pagination ergonomics, retry semantics, naming conventions) that we'd rather leave to you. If you want a typed client, generators like openapi-typescript or openapi-python-client will give you one in seconds.

No, for essentially the same reasons we don't ship official SDKs: an MCP server is a thin, opinionated wrapper around our API, and we'd rather keep refining the OpenAPI spec underneath so every caller benefits. If you want one, point Claude (or your LLM of choice) at our API spec and ask it to build an MCP server tailored to your workflow — you'll end up with something better-fit than anything we could ship generically.

Buttondown is the lastemail platform you’ll switch to.