REST Email Marketing API Documentation


Send a document to a recipient. The recipient must have been added to the database previously.






documentName The name of the document to send.
emailAddress The email address of an existing recipient to use for mail merging
substitutions (Optional) a string dictionary of keys and values for substitution
checkTopicUnsubscribes (Optional) Boolean of whether to check if the recipient is unsubscribed from this topic. Default is true.
checkUnconfirmed (Optional) Boolean of whether to check if this recipient is unconfirmed. Default is true.
reportCategory (Optional) a semi-colon separated list of keys to use for reporting purposes. Ex: Portland;Valetine
sendDateTime (Optional) a date and time in the future to send this, in UTC time. Default is now.

Required permission



No Permission
Keys cannot be empty in the substitutions
Invalid email address
Invalid document name
Invalid start time
End date more than three months in the future
sendDateTime must be in the future
Recipient is on hold because of an invalid email address
Recipient is on the global unsubscribe list.
Recipient is suppressed for this topic
Recipient is on the global suppression list
Recipient is unsubscribed from this topic
Recipient has not responded to a confirmation request
Database error
Unknown error


Email queued to be sent


Queue a document to be sent to a recipient.

string message = "{'accountName':'acme','login':'ApiUser', 'password':'sdve4t3gfd', 'documentName':'JunkMe', 'emailAddress':'', 'Substitutions':{'RewardAmount':'$20', 'Valid until':'5/6/2020'}}";
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', 'documentName'=>'JunkMe2','emailAddress'=>'', 'Substitutions'=>{'RewardAmount'=>'$20', 'Valid until'=>'5/6/2020'}}
response =, args.to_json, :content_type => "application/json;charset=utf-8")
puts response
import requests

url = "";
args = {'accountName':'acme','login':'ApiUser', 'password':'sdgf44tweg', 'documentName':'Reward', 'emailAddress':'', 'substitutions':{'link':'','unsub_link':''}}
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':'sdgf44tweg', 'documentName':'Reward', 'emailAddress':'', 'substitutions':{'link':'','unsub_link':''}}"

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.