DEVELOPERS Integrations and API

Integrations and API.

A REST API covering every part of the platform that has a screen, 100+ calls across six areas, webhooks that push events to you as they happen, and a Zapier bridge to everything else.

What it covers
  • REST, GET or POST
  • XML, JSON or CSV
  • Webhooks with retries
  • Zapier to 2,000+ apps
The short answer

A REST API, webhooks, and a Zapier bridge to everything else.

What you get

Every part of the platform that has a screen also has an endpoint. Lists, messages, campaigns, sending profiles, reporting, verification and users are all reachable over HTTP, with 100+ calls across six areas. Webhooks push opens, clicks and unsubscribes to you as they happen, and Zapier covers the 2,000+ apps nobody wants to write an integration for.

Getting started

Three parameters, GET or POST.

Generate a key from the API tab inside the platform. You can create as many as you need, which is how you keep a client integration separate from an internal script.

Request
https://api.mailclickconvert.com/api.php
  ?apikey=YOUR_API_KEY
  &area=email
  &action=getlists
Response
<response>
  <list>
    <id>45911</id>
    <title>Q3 Manufacturing</title>
    <records>412900</records>
  </list>
</response>
01

apikey

From the API tab in the platform. Multiple keys per account, so integrations can be revoked one at a time.

02

area

Which part of the system you are calling: email, home, clients, listverify, support or api.

03

action

The call itself, for example getlists or uploadlistfile.

04

output

XML by default. Add output=json or output=csv if you would rather not parse XML.

Endpoints

Six areas, over a hundred calls.

The full reference with arguments and sample responses lives in the developer docs. This is the shape of it.

emailEmail marketing

The bulk of the API. Lists, messages, campaigns, sending profiles, suppression and reporting.

  • createlist
  • addemail
  • uploadlistfile
  • mergelist
  • getlisthardbounces
  • addmessage
  • checkspamassassin
  • unsubscribeemail
  • unsubscribedomain
  • getunsubscribelist
homeUsers

Managing the people on your account.

  • getusers
  • adduser
  • edituser
  • deleteuser
clientsClients

For agencies and resellers running many accounts.

  • getclients
listverifyVerification

Running and monitoring list cleaning jobs.

  • getlists
  • getliststatus
  • pauseverify
  • resumeverify
  • getaccountinfo
  • deletelist
apiWebhooks

Managing your own webhook subscriptions.

  • addwebhook
  • getwebhooks
  • deletewebhook
supportSupport

Reading tickets programmatically.

  • getsupporttickets
  • getsupportticketdetail

Paging and limits. Calls that return lists accept start and limit, with a ceiling of 1,000 records per request, and return a <records> count so you know how far through you are. Most calls run at the default rate; verifysingleemail is capped at one request per second and returns a plain rate-limit error rather than failing silently.

Webhooks

Events pushed to you, not polled for.

Point a webhook at a URL and the platform posts JSON as things happen. Opens, clicks and unsubscribes are the events most people wire up, and unsubscribes are the one you should not skip: acting on them in your own database is what keeps your suppression honest.

  • Up to 100 records per POST. Batched rather than one request per event, so a large campaign does not flood your endpoint.
  • Your endpoint must return HTTP 200. Anything else counts as a failure.
  • Five retries, at 5 minutes, 1 hour, 3 hours, 12 hours and 24 hours after the first attempt.
  • 100 consecutive failures disables the webhook. Worth alerting on, because it fails quietly from your side.
  • timestamp is a UNIX timestamp in CST, not UTC. This catches people out.
  • listmetadata optionally carries every column from your list for that record, so you can match it back without a second lookup.
Delivery
POST https://yourapp.com/hooks/mcc
Content-Type: application/json

[{ "event": "unsubscribe",
   "email": "someone@example.com",
   "listid": 45911,
   "timestamp": 1770000000,
   "listmetadata": { "company": "Acme", "state": "TX" } }]
Integrations

What connects without writing anything.

Zapier

2,000+ apps over webhooks. Add to a list, unsubscribe, or push a reply into your CRM without touching the API.

SMTP relay

Send through the platform over plain SMTP, or connect providers you already pay for. See SMTP relay.

IMAP and POP3

Retrieve mail programmatically rather than through the reply inbox.

Your own SMTP providers

SendGrid, Amazon SES, Mailgun, Postmark or SMTP.com connected and rotated from one account.

Conversion tracking

Pixels and links to attribute conversions and revenue back to a campaign.

Google Postmaster

Reputation and spam-rate data pulled in alongside your own reporting.

Feedback loops

Major ISP feedback loops supported, with complaints auto-unsubscribing.

Custom work

The API can be extended for a specific use case. Ask, and we will tell you honestly whether it is worth building.

Questions

Integrations and API, answered.

How do I get an API key?
From the API tab inside the platform. You can generate as many keys as you need, which matters more than it sounds: separate keys per integration mean you can revoke one without breaking the others.
What formats does the API return?
XML by default. Add output=json or output=csv to the request if you would rather not parse XML. The same call returns the same data in whichever format you ask for.
Are there rate limits?
Most calls run at the default rate. verifysingleemail is capped at one request per second and returns a clear rate-limit error rather than failing silently. Calls that return lists cap at 1,000 records per request, so large pulls are paged with start and limit.
What events can webhooks send?
Opens, clicks and unsubscribes are the ones most people wire up. Each POST carries up to 100 records, your endpoint must return HTTP 200, and failures retry five times at 5 minutes, 1 hour, 3 hours, 12 hours and 24 hours. After 100 consecutive failures the webhook is disabled, which is worth alerting on because it is silent from your side.
Why is the webhook timestamp wrong by a few hours?
It is a UNIX timestamp in CST rather than UTC. That single detail causes most of the webhook confusion we see, and it is worth handling explicitly in your parser rather than assuming.
Can I use Zapier instead of the API?
Yes, and for most jobs you should. Zapier reaches 2,000+ apps over webhooks and covers the common cases, adding a contact to a list, unsubscribing someone, pushing a reply into a CRM, without anyone writing or maintaining code.
Can you build something the API does not do?
Sometimes. The API can be extended for specific use cases on request. Tell us what you are trying to do rather than which endpoint you want, because there is often an existing call that already covers it.
Get started

Tell us what you are wiring up.

Describe the outcome rather than the endpoint. There is often an existing call that already does it, and if there is not we will say whether it is worth building.

  • A straight answer on whether the API already covers it
  • If Zapier would do the job, we will point you there instead
  • Full reference and sample responses in the developer docs

Prefer to talk? 1-800-604-5058

We reply within one business day. No sequence, no drip.

Read the reference, or ask.

Full endpoint documentation with arguments and sample responses is in the developer docs. If you would rather describe the problem than read 100 endpoints, the call is free.