Clients should authenticate by passing the token key in the Authorization HTTP header, prepended with the string Token (note the trailing space!).
For example, if your token was 401f7ac837da42b97f613d789819ff93537bee6a, your headers may look like this.
You can manage your API keys at API → Keys.
You can create as many API keys as you need. This is useful when you have different integrations that need different levels of access:
Each key can have its own label (like "Zapier - new subscribers" or "Internal dashboard") so you can keep track of what each one is for. If one integration is compromised or you stop using it, you can delete or regenerate just that key without affecting your other integrations.
Each API key can be configured with independent permissions for different parts of the API:
| Permission | Controls |
|---|---|
subscriber_access | Managing subscribers |
email_access | Managing emails and drafts |
sending_access | Sending emails |
administrivia_access | Newsletter settings |
automations_access | Managing automations |
forms_access | Managing forms |
styling_access | Design settings |
surveys_access | Managing surveys |
Each permission can be set to:
If you attempt an operation that your API key doesn't have permission for, you'll receive a 403 Forbidden response.
If you're using the API to manage multiple newsletters, you can pass the Buttondown-Context header to specify the newsletter you want to access.
Consider the following example, in which a single platform account manages multiple newsletters. Each newsletter has its own API key in addition to the platform account's API key:
The platform could programmatically access each newsletter's API key and pass it through, but this is clumsy and onerous. Instead, you can pass the Buttondown-Context header to specify the newsletter you want to access: