Account report
const 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';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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. |
Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters”Your tracking platform’s Reference Code (PRC), issued by Optizmo when the integration was set up.
Example
pqmpgThe 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
662b824d577c74b57bf1c4fc647b79c7MD5 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
7583f2e660997b8d1c224a8d74260c51US 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
EasternSet 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.
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.
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.
Responses
Section titled “ Responses ”The account report.
object
When the report was generated, in the reporting timezone.
The same instant as a Unix timestamp.
Abbreviation of the reporting timezone.
object
object
Your id for the advertiser. -1 on an Enterprise account, with tracker_id_note explaining why.
Present alongside tracker_id only on an Enterprise account, explaining why it is -1.
object
object
Your id for the list (version 1).
The list’s Optizmo id (version 2 platforms only), as used for optout_id.
When opt-outs were last imported into the list. Empty when never.
Present with value yes for a grouped list.
Present with value yes when the list stores MD5 hashes only.
Present with value yes for a list linked from another account’s access key.
object
object
Expiry date, when set.
object
object
Number of downloads and cleanses.
When the affiliate last downloaded or cleansed. Empty when never.
object
object
Present when display_transfers=1 was sent and the account has transfers.
object
object
The transfer type as shown in SUPPRESS, for example Grab or Send.
Examples
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.
Example
failed,System currently under maintenanceExample
<?xml version="1.0" encoding="utf-8"?><output><result>failed</result><error>System currently under maintenance</error></output>object
object
Present when result is success. This action issues no keys, so both values are null.
object
Present when result is failed.
Example
{ "output": { "result": "failed", "error": "System currently under maintenance" }}