Create templates, send single or bulk mail, verify addresses, and read delivery, open, and click tracking. Every route is POST and requires your api_key.
Send api_key with every request as a form field or JSON property. Grab your key from the API keys page.
# All requests are POST and include api_key curl -X POST https://pmd.kingslist.pro/api/v3/mail/send \ -d "api_key=YOUR_API_KEY" ...
Store a reusable HTML template under your API key. content should be uploaded as an HTML file.
| Field | Notes |
|---|---|
| api_key | required |
| sender_name | required — display name on the From line |
| subject | required — may contain {{placeholders}} |
| content | required — HTML file upload |
{
"error": false,
"message": "Template created.",
"data": { "template_id": 12 }
}
Returns the templates created under your API key.
| api_key | required |
{
"error": false,
"message": "Templates retrieved.",
"data": { "templates": [ { "id": 12, "subject": "..." } ] }
}
Send one message built from a stored template.
| api_key | required |
| template_id | required |
| recipient | required — a single email, optionally with params |
api_key=YOUR_API_KEY template_id=12 recipient=user@example.com
recipient=user@example.com__id:123__meetingName:Conference__meetingDate:2026-07-20__meetingBanner:https://example.com/banner.jpg
The system applies matching {{placeholders}} in the template — e.g. {{meetingName}} becomes Conference. {{email}} is always available.
Send an ad-hoc message by passing the subject and HTML content inline.
| api_key | required |
| recipient | required |
| subject | required |
| content | required — inline HTML |
api_key=YOUR_API_KEY recipient=user@example.com subject=Welcome content=<h1>Hello</h1><p>Welcome onboard.</p>
Send to many recipients in one call.
| api_key | required |
| template_id | required |
| is_bulk | required — set to true |
| recipient | required — inline list or uploaded file |
recipient=user1@example.com,user2@example.com,user3@example.com
recipient=<uploaded .txt file>
The file may contain one email per line or comma-separated emails. Each line can carry __key:value params, just like single sends.
Check an address for valid syntax, a resolvable domain (MX), and disposable/role patterns.
| api_key | required |
| required |
api_key=YOUR_API_KEY email=user@example.com
{
"error": false,
"message": "Verification complete.",
"data": {
"email": "user@example.com",
"valid": true,
"reason": "ok",
"has_mx": true,
"is_disposable": false,
"is_role": false
}
}
Aggregate delivery and engagement funnel for a scope.
| api_key | required |
| batch_id | scope to one batch |
| template_id | scope to one template |
| recipient | scope to one address |
api_key=YOUR_API_KEY batch_id=20
{
"total": 1000, "queued": 0,
"accepted": 980, "delivered": 920,
"opened": 400, "clicked": 70,
"bounced": 30, "complained": 0,
"failed": 10, "skipped": 10,
"open_count": 540, "click_count": 90
}
Recipient-level delivery and engagement status.
| api_key | required |
| batch_id | — |
| template_id | — |
| recipient | — |
| status | optional — filter by delivery status |
| limit | optional — max rows (default 100) |
The full event history for one tracked recipient.
| api_key | required |
| recipient_id | required — from the recipients endpoint |
| limit | optional |
Tracking is handled automatically when emails are sent through v3. Every message gets an open pixel, and links are rewritten for click tracking — no extra parameters needed.