Buttondown is a tool that's unabashedly proud of being technical — without demanding a technical user.
Part of being technical means having a great, ergonomic API.
Now, you shouldn't have to use the API. The interface and integrations like Zapier should get the job done for the vast majority of use cases.
But if you've got a special connection you have in mind (like wanting to programmatically build and deliver emails for your SaaS, or to integrate with your own analytics stack) — or, hell, because you're just a nerd and prefer sending your newsletter from the comfort of emacs rather than Chrome or Safari, Buttondown is the tool for you.
Buttondown makes it as easy as possible to tailor your newsletter to your specific needs, with endpoints for the following resources:
Some of examples of what you can do with just a few lines of code:
1import requests23headers = {4 "Authorization": f"Token {BUTTONDOWN_API_KEY}"5}6BASE_URL = "https://api.buttondown.email"7ENDPOINT = "/v1/subscribers"89# Pull your subscribers to sync them with your database!1011requests.get(BASE_URL + ENDPOINT, headers=headers).json()
Want to sync your subscribers with Buttondown's database or run your own custom analyses, or to sync with your app's database? That takes five lines of Python.
1import requests23headers = {4 "Authorization": f"Token {BUTTONDOWN_API_KEY}"5}6base_url = "https://api.buttondown.email"7endpoint = "/v1/emails"8data = {9 "subject": "We've published a new dataset!",10 "body": "..."11}1213requests.post(14 base_url + endpoint,15 headers=headers,16 data=data17).json()
What if you wanted to create new emails and send them (or schedule them) every day, or in response to certain events? Write nine lines of Python.
1import requests23headers = {4 "Authorization": f"Token {BUTTONDOWN_API_KEY}"5}6base_url = "https://api.buttondown.email"7endpoint = "/v1/newsletters"8data = {9 "username": "amandagreen02",10 "name": "Amanda Green",11 "description": "Newsletter for updates from Amanda's Ghost blog"12}1314requests.post(15 base_url + endpoint,16 headers=headers,17 data=data18).json()
If you're building a service like a job board or a changelog, you might want to be able to manage and operate newsletters for each user on your service. That is a whopping eleven lines of Python.
The whole process was really smooth and I got the APIs hooked up for subscribing as well as viewing subscriber counts on my dashboard.
I must say that using Buttondown has been a joy. Such a nice email newsletter service with a super easy API.