REST Email Marketing API Documentation

Recipients — AddOne

Add or update one recipient, optionally providing demographic fields. Existing recipients will have their demographics undated, but their unsubscribe status will not be changed so you don't need to fear re-subscribing someone based on this import. Empty demographic values do not override existing data. Recipients cannot be added or updated when using a Foreign Members table. Provide the topics that the person should be subscribed to. If the recipient already exists, they will not be unsubscribed from topics that are not listed.






topics (Optional) An array of the topics that this recipients should be marked as subscribed to
emailAddress The email address of the new or updated recipient.
demographics (optional) A dictionary of keys and values to be imported. The key is the demographic name, the value is the data to add or replace.

Required permission



No Permission
Using a foreign members table
Email address is banned.
Invalid email address
Topic: is not valid
Demographic: is not a valid demographic
Too many API calls
Database error
Unknown error


Recipient added or Recipient updated


Add a new recipient.

string message = "{'accountName':'acme','login':'ApiUser', 'password':'sdve4t3gfd', 'topics':['Daily','Weekly'], 'emailAddress':'', 'demographics':{'firstname':'Fred', 'lastName':'Smith'}}";
string url = "";
	System.Net.HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
	request.Method = "POST";
	request.ContentType = "application/json";
	request.ContentLength = message.Length;
	using (Stream webStream = request.GetRequestStream())
		using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII))
	System.Net.WebResponse webResponse = request.GetResponse();
	using (Stream webStream = webResponse.GetResponseStream())
		using (StreamReader responseReader = new StreamReader(webStream))
catch (Exception e)
# encoding: utf-8
require 'rest-client'
require 'json'
url = ''
args = {'accountName'=>'acme', 'login'=>'ApiUser', 'password'=>'sdf3w4tw', 'topics'=>['Daily','Weekly'], 'emailAddress'=>'', 'demographics'=>{'firstname'=>'Fred', 'lastName'=>'Smith'}}
response =, args.to_json, :content_type => "application/json;charset=utf-8")
puts response
import requests
url = "";
args = {'accountName':'acme', 'login':'ApiUser', 'password':'f334f3fg3', 'topics':['Daily','Weekly'], 'emailAddress':'', 'demographics':{'firstname':'Fred', 'lastName':'Smith'}}
headers = {'Content-Type': 'application/json'}
resp =, json=args, headers=headers)
if resp.status_code == 200:
	print resp.text

curl -X POST -H "Content-Type: application/json" -d "{'accountName':'acme', 'login':'ApiUser', 'password':'f334f3fg3', 'topics':['Daily','Weekly'], 'emailAddress':'', 'demographics':{'firstname':'Fred', 'lastName':'Smith'}}"

As a user of Goolara Symphonie, the REST API is free and included in the latest version of the software. If you have any questions about using Symphonie’s REST API, feel free to contact us.