Newsletter API version 1

UPDATE. The new Newsletter API version 2 are available.

Newsletter provides an extensive set of functions to interface your custom code with the plugin core features. The API can be accessed programmatically as static methods of the class TNP or via REST calls.

REST API are available installing the free Newsletter API addon (find it on Newsletter addons panel in yout blog or get it on your account page) while the TNP class is always available in the plugin core.

General usage notes

Most API functions require a single parameter, an associative array, with required and optional values. For example to create a new subscription you’ll write:


If you need to pass on the name:

TNP::subscribe(['email'=>'', 'name'=>'The name']);

When a call generates an error, in most cases a WP_Error object is returned with an error code and explanation. The returned values of a function should always checked in this way:

$result = TNP::something(...);
if (is_wp_error($result)) {
  // manage the error

When using the REST API, the parameters are regular HTTP POST key-value pairs or as a JSON object in the request raw body.

REST API calls require a key (with exceptions) which you can set on API configuration panel.

REST API responses

REST API always respond with HTTP 200 on success. The response can include data as specified for each calls. If something went wrong, you’ll get back a 4xx error. They are:

404Object not found
403Not allowed (when the API key is missing or wrong)
400Bad request, when the parameters are not correct or required parameters are missing

Other than 4xx HTTP status codes, errors are explained in more details decoding the JSON in the response body.

Subscription process

Subscription related functions are used to start a subscription process. That means not only the subscriber’s data is added to the database, but the full subscription process starts with activation and/or welcome emails, administrator notifications and so on. If you need to manage the subscribers’ database directly, you can use the subscriber management functions (see below).


Starts the subscription process. If the passed email already exists the process can take different paths discussed below.

When called as REST API it can be invoked without the secret key: in this case more strict contraints are applied to the parameters (like for subscriptions coming from a public subscription form). For example if the plugin is configured to make the first name “required” calling the API without a key and without the first name will result in a error. More, for calls without an API key, private lists possibly specified will be ignored or will throw an error.

emailx a valid email addressstring
name  subscriber namestring
surname  subscriber surnamestring
gender  subscriber genderstring
(since version 5.5.0)
  user listsarray
profile_x  additional profile field valuestring
send_emails trueSend activation and welcome emails – true or falseboolean

Note: if you use the subscribe endpoint as action for an HTML form, the lists parameter must be written as lists[].

HTTP Request

POST /wp-json/newsletter/v1/subscribe

$ curl -X POST -H "Content-Type: application/json" http://<your-site>/wp-json/newsletter/v1/subscribe
-d '{"email":"", "name":"My name", "gender":"f"}'



TNP::subscribe(['email'=>'', 'name'=>'My name', 'gender'=>'f', 'lists' => [2,12]]);

Lists parameter

You have to send an array of numbers with the list ids to be assigned to the subscriber. Pre-assigned lists will be added as well.

$ curl -X POST -H "Content-Type: application/json" http://<your-site>/wp-json/newsletter/v1/subscribe
-d '{"email":"", "name":"My name", "gender":"f", "lists": [1,2,12]}'
TNP::subscribe(['email'=>'', 'name'=>'My name', 'gender'=>'f', 'lists' => [2,12]]);


Unsubscribe the passed email address.

emailx a valid email address
api_keyx the string set on the API configuration panel

HTTP Request

POST /wp-json/newsletter/v1/unsubscribe

$ curl -X POST -H "Content-Type: application/json" http://<your-site>/wp-json/newsletter/v1/unsubscribe -d '{"email":"", "api_key":"..."}'




Subscribers management

This set of functions manipulates directly the subscribers database. Subscribers have an internal numeric ID which can be used to identify them and which is stable over time. But even the email address identifies uniquely a subscriber, so it can be used when updating the subscriber data. Usually, when interaction with external system is in place, the email address is used.

Add a subscriber

emailx a valid email address
api_keyx the string set on the API configuration panel
name  subscriber name
surname  subscriber surname
gender  subscriber gender
profile_x  additional profile field value
status Csubscription status S = Not Confirmed C = Confirmed

HTTP Request

POST /wp-json/newsletter/v1/subscribers/add

$ curl -X POST -H "Content-Type: application/json" http://<your-site>/wp-json/newsletter/v1/subscribers/add -d '{"email":"", "api_key":"..."}'




Delete a subscriber

Removes a subscriber from the database identifying it by email. The deletion is definitive.

  • Endpoint: POST /wp-json/newsletter/v1/subscribers/delete
  • Function: TNP::delete_subscriber()
emailx a subscriber email address
api_keyx the string set on the API configuration panel


$ curl -X POST -H "Content-Type: application/json" http://<your-site>/wp-json/newsletter/v1/subscribers/delete -d '{"email":"", "api_key":"..."}'

Subscribers list (last 20)

api_keyx the string set on the API configuration panel

HTTP Request

POST /wp-json/newsletter/v1/subscribers

$ curl -X POST -H "Content-Type: application/json" http://<your-site>/wp-json/newsletter/v1/subscribers -d '{"api_key":"..."}'



Newsletters management

Newsletters list (last 10)


HTTP Request

GET /wp-json/newsletter/v1/newsletters

$ curl http://<your-site>/wp-json/newsletter/v1/newsletters