Skip to content

Account report

GET
/api.cgi?action=client_report
curl --request GET \
--url 'https://one.optizmo.net/api.cgi?ref=pqmpg&onid=662b824d577c74b57bf1c4fc647b79c7&check_hash=7583f2e660997b8d1c224a8d74260c51&timezone=Eastern&display_transfers=1&return_format=csv&test_only=success&action=client_report%3Fref%3Dpqmpg'

Returns opt-out statistics for everything your platform has synced into the account: each advertiser with its Opt-Out Lists, campaigns and the affiliates on each campaign, plus the account’s affiliates and, on request, its transfers. Advertisers and campaigns created in SUPPRESS rather than through your platform are not included. Affiliates are: the account’s own affiliate list is not included when created in SUPPRESS, but the affiliates listed on each included campaign are every affiliate attached to it, made through your platform or by hand alike. Opt-Out Lists of an included advertiser are every one it has, whichever created it, unless your account has the jailed-tracker feature flag set, in which case only lists your platform’s own calls created are listed.

The report is generated at most once every 6 hours per account. Requests in between return the stored report, whatever timezone and display_transfers they send: neither is part of what decides whether the report is regenerated, so send the value you want and expect the response to reflect whichever value was current when the stored report was last generated, not necessarily this request’s own.

The response is always XML. Counts are integers; todays_* counts are for the current day in the reporting timezone, average_* counts are daily averages. Timestamps are formatted YYYY-MM-DD HH:MM:SS; *_int fields carry the same instant as a Unix timestamp.

Values in the check_hash

action, ref, onid.

Failures

Failures are returned in the format selected by return_format. In addition to the common failures listed under Sync an advertiser, list, campaign and affiliate:

Response Meaning
failed,Value for 'onid' does not exist in our system No account has this ONID.
failed,Check Hash Failed. check_hash does not match.
ref
required
string
<= 5 characters

Your tracking platform’s Reference Code (PRC), issued by Optizmo when the integration was set up.

Example
pqmpg
onid
required
string

The ONID of the SUPPRESS account the request is for. The account holder finds it on the Account Settings page in SUPPRESS under Affiliate Tracking System, and copies it into your platform.

Example
662b824d577c74b57bf1c4fc647b79c7
check_hash
required
string
/^[0-9a-f]{32}$/

MD5 hex digest of the request’s hashed values, in the order they are listed for this action, followed by your Access Key (PAK). See Authentication for the rules.

Example
7583f2e660997b8d1c224a8d74260c51
timezone
string

US timezone that decides where “today” starts for the todays_* counts, for example Eastern, Central, Mountain or Pacific. Not hashed. Takes effect only when the report is regenerated (see above); it does not change a report returned from the store.

Example
Eastern
display_transfers
integer
Allowed values: 1

Set to 1 to include the account’s transfers. Not hashed. Takes effect only when the report is regenerated (see above); it does not change a report returned from the store.

return_format
string
default: csv
Allowed values: csv xml json

Sets the format of the success or failed answer on the synchronisation and status actions, and of the failure answer on every action. It does not change the success answer of the report and list actions, which is always their own XML document, or of the actions that answer with a page or a redirect. csv, xml and json are the only recognised values; anything else is answered in the csv format, the default. Not included in the check_hash.

test_only
string
Allowed values: success failed

Only honoured by Sync an advertiser, list, campaign and affiliate, Sync onto a linked list, Generate an SMAK, Account report, Get Opt-Out Lists, Advertiser and list settings page and Add opt-outs page; every other action ignores it and runs as normal, so sending it there does not stop the real change. On the actions that honour it, once the request has authenticated, it answers without creating or changing anything, and before the page renders on the two pages actions: failed,Test Failed Output for test_only=failed everywhere it is honoured. For test_only=success: the sync actions return a fixed key pair (https://TESTONLY.optizmo.net/m-test-a00-410324axc3e1eb7a and https://TESTONLY.optoutsystem.net/o-test-a00-546c4dxa10df19b8) in place of real ones, in the same body shape a real success with keys would have; the account report returns that same fixed key pair, not a report document; Get Opt-Out Lists returns a fixed two-entry list document; and the two pages actions return a bare success with no keys, the same shape as a real one with no campaign_id/mailer_id pair. Not included in the check_hash.

The account report.

Media typetext/xml
object
onid
string
query_timestamp

When the report was generated, in the reporting timezone.

string
query_timestamp_int

The same instant as a Unix timestamp.

integer
query_timestamp_tz

Abbreviation of the reporting timezone.

string
list_advertisers
object
advertiser
Array<object>
object
name
string
status
string
Allowed values: active disabled
tracker_id

Your id for the advertiser. -1 on an Enterprise account, with tracker_id_note explaining why.

string
tracker_id_note

Present alongside tracker_id only on an Enterprise account, explaining why it is -1.

string
total_optouts
integer
todays_optouts
integer
list_optout_lists
object
optout_list
Array<object>
object
name
string
status
string
tracker_id

Your id for the list (version 1).

string
optizmo_id

The list’s Optizmo id (version 2 platforms only), as used for optout_id.

string
total_optouts
integer
todays_optouts
integer
average_optouts
integer
last_import

When opt-outs were last imported into the list. Empty when never.

string
grouped

Present with value yes for a grouped list.

string
md5_only

Present with value yes when the list stores MD5 hashes only.

string
linked_list

Present with value yes for a list linked from another account’s access key.

string
list_campaigns
object
campaign
Array<object>
object
name
string
status
string
Allowed values: active disabled
tracker_id
string
total_optouts
integer
todays_optouts
integer
average_optouts
integer
expires

Expiry date, when set.

string
list_campaign_mailers
object
campaign_mailer
Array<object>
object
name
string
status
string
Allowed values: active disabled
tracker_id
string
total_optouts
integer
todays_optouts
integer
average_optouts
integer
times_accessed

Number of downloads and cleanses.

integer
last_accessed

When the affiliate last downloaded or cleansed. Empty when never.

string
last_accessed_int
integer
list_mailers
object
mailer
Array<object>
object
name
string
status
string
Allowed values: active disabled
tracker_id
string
total_optouts
integer
todays_optouts
integer
average_optouts
integer
last_accessed
string
last_accessed_int
integer
list_transfers

Present when display_transfers=1 was sent and the account has transfers.

object
transfer
Array<object>
object
name
string
status
string
Allowed values: active disabled
transfer_id
string
type

The transfer type as shown in SUPPRESS, for example Grab or Send.

string
total_emails
integer
todays_emails
integer
Examples
Examplereport

An account with one advertiser

<?xml version="1.0" encoding="utf-8"?>
<client_reporting>
<onid>662b824d577c74b57bf1c4fc647b79c7</onid>
<query_timestamp>2026-09-18 09:15:02</query_timestamp>
<query_timestamp_int>1789722902</query_timestamp_int>
<query_timestamp_tz>EDT</query_timestamp_tz>
<list_advertisers>
<advertiser>
<name>BlockBuster</name>
<status>active</status>
<tracker_id>C12412</tracker_id>
<total_optouts>18422</total_optouts>
<todays_optouts>37</todays_optouts>
<list_optout_lists>
<optout_list>
<name>Master List</name>
<status>active</status>
<tracker_id>O39232</tracker_id>
<total_optouts>18422</total_optouts>
<todays_optouts>37</todays_optouts>
<average_optouts>41</average_optouts>
<last_import>2026-09-17 23:10:44</last_import>
</optout_list>
</list_optout_lists>
<list_campaigns>
<campaign>
<name>Spring Offer</name>
<status>active</status>
<tracker_id>K3K3</tracker_id>
<total_optouts>912</total_optouts>
<todays_optouts>5</todays_optouts>
<average_optouts>12</average_optouts>
<expires>2027-01-31</expires>
<list_campaign_mailers>
<campaign_mailer>
<name>Acme Mailing</name>
<status>active</status>
<tracker_id>311111</tracker_id>
<total_optouts>912</total_optouts>
<todays_optouts>5</todays_optouts>
<average_optouts>12</average_optouts>
<times_accessed>64</times_accessed>
<last_accessed>2026-09-18 06:00:12</last_accessed>
<last_accessed_int>1789711212</last_accessed_int>
</campaign_mailer>
</list_campaign_mailers>
</campaign>
</list_campaigns>
</advertiser>
</list_advertisers>
<list_mailers>
<mailer>
<name>Acme Mailing</name>
<status>active</status>
<tracker_id>311111</tracker_id>
<total_optouts>3110</total_optouts>
<todays_optouts>9</todays_optouts>
<average_optouts>15</average_optouts>
<last_accessed>2026-09-18 06:00:12</last_accessed>
<last_accessed_int>1789711212</last_accessed_int>
</mailer>
</list_mailers>
</client_reporting>

The system is in maintenance mode. Retry later. The answer follows return_format: csv (also the answer to a return_format that is neither xml nor json) as text/plain, xml as text/xml, json as application/json.

string
Example
failed,System currently under maintenance