SMTP Aggregation API
Connect your own SMTP sending accounts to the platform and send mail through one HTTP API. The platform rotates sending across your accounts, retries on the next account when one fails, and adds templates, contacts, campaigns, an unsubscribe list and webhook callbacks. The Free plan is on by default; paid plans are charged to your account balance.
How it works
The platform doesn't provide a sending service or sending IPs. Mail goes out through the accounts you connect; the platform picks the account, retries, keeps records and sends callbacks.
- Connect sending accounts: Add an SMTP account in the console: host, port, encryption, username and password (or app password). You can test the connection and send a test email first. Passwords are stored encrypted.
- Create an API key: Generate a key starting with smk_ and send it in the Authorization: Bearer header. You can create several keys and revoke each one separately.
- Call the send API: An account is picked by the priority you set and how much it has already sent today. On an authentication failure, connection failure or temporary error, the next account is tried, up to 3 attempts.
- Check the result: The send log shows each email's status, the account used and any error. Once the receiving server accepts an email it is marked delivered, and the event can be pushed to your webhook.
Features
- Account rotation and retry: Accounts are picked by priority and today's volume, and each account can have its own daily cap. Account failures and temporary errors retry on another account; errors no account can fix, such as a nonexistent address or rejected content, are not retried. You can also pin a send to one account.
- Automatic pause and recovery: An account that fails 3 times in a row is paused and you're notified. The platform then tests its connection at intervals that grow from 30 minutes to 12 hours, and returns it to rotation only after a test passes. Accounts you paused yourself are never switched back on automatically.
- Templates and variables: HTML and plain-text bodies with {{variable}} substitution. Each save records a version, and you can view the version history. The API can send by template code.
- Contacts and campaigns: Import contacts from CSV (up to 10 MB per file) and sort them into groups. Campaigns send to groups or a list, can be scheduled, paused and cancelled, and skip unsubscribed and bounced addresses automatically.
- Open and click tracking, one-click unsubscribe: Campaign HTML emails can turn on open and click tracking, and {{unsubscribe_url}} in the body is replaced with each recipient's unsubscribe link. Every campaign email carries a one-click unsubscribe header.
- Unsubscribe and bounce list: Addresses that bounced or complained receive no further mail, not even transactional mail. Addresses that clicked unsubscribe or were added by hand are skipped only for campaigns and batch sends, not for transactional mail such as verification codes and password resets.
- Webhook event callbacks: Delivered, opened, clicked, bounced, complained, unsubscribed and other events are pushed to your URL with an HMAC-SHA256 signature. They can also go straight to Slack, Discord, Feishu, DingTalk and WeCom group bots.
- Sending domain checks: Checks the SPF, DKIM and DMARC records of a sending domain and gives a score and the DNS records to add.
Integration
An HTTP API with JSON request bodies and API key authentication. In the console you can also write a single email or create a campaign without code.
- POST /api/v1/smtp/send: Send one email. Supports CC and BCC, attachments, inline images, a plain-text alternative, custom headers and scheduled sending, with an Idempotency-Key to prevent duplicates.
- POST /api/v1/smtp/send/batch: Send one email to each of several recipients in one call; the recipient limit depends on the plan.
- POST /api/v1/smtp/send/template: Send by template code and fill in the template's variables.
- GET /api/v1/smtp/status/{message_id}: Look up the delivery status of an email.
- GET /api/v1/smtp/quota: Check the remaining quota for today and this month.
- POST /api/v1/smtp/inbound: Report a bounce or complaint; the address is added to the unsubscribe list.
Limits
- Up to 20 requests per second per API key and 60 per second per account.
- Up to 20 attachments per email, 15 MB in total after decoding.
- Scheduled sends must be at least 30 seconds in the future, with up to 500 queued per account.
- Only the HTTP API is available; SMTP protocol access is not offered.
Plan and quota rules
- The Free plan is on by default with no subscription, and renews itself when it expires.
- The daily quota resets at midnight in your account's time zone; the monthly quota resets on the 1st of each month.
- Paid plans are charged monthly or yearly to your account balance and can be renewed in the console before they expire. They don't renew automatically.
- When a paid plan expires you return to the Free plan's quotas and features. Connected accounts, templates and contacts are not deleted.
- Changing plans takes effect immediately. Unused time on the old plan is credited at its original price; credit beyond the new plan's price extends your term instead of being refunded. This month's usage carries over to the new plan.
- Mail goes out through the accounts you connect, so inbox placement depends on the reputation of those accounts and your sending domain. The platform does not promise a delivery rate.
Plans and pricing
| Plans | Monthly | Yearly | Emails per day | Emails per month | Sending accounts | Recipients per batch call | Email templates | Contacts | Campaigns per month | Sending domain checks | Webhook endpoints |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Free | Free | Free | 500 | 10,000 | 2 | 100 | 20 | 1,000 | Not included | 1 | Not included |
| Basic | $1.00/mo | $10.00/yr | 5,000 | 100,000 | 5 | 1,000 | 100 | 20,000 | 50 | 5 | 3 |
| Professional | $5.00/mo | $50.00/yr | 50,000 | 1,000,000 | 20 | 10,000 | 1,000 | 200,000 | 500 | 20 | 20 |
| Enterprise | $20.00/mo | $200.00/yr | 200,000 | 5,000,000 | 100 | 50,000 | 9,999 | 2,000,000 | 9,999 | 100 | 100 |
Prices are in USD and are the standard price before sign-in. Points can cover part of the cost; the amount on the order page is final. Quotas count emails sent, and batch sends and campaigns count one email per recipient.
Frequently Asked Questions
What does the SMTP Aggregation API do?
It lets you connect one or more of your own SMTP sending accounts and send mail through one HTTP API. The platform rotates across the accounts, retries on another account when one fails, and provides templates, contacts, campaigns, an unsubscribe list and webhook callbacks. The platform itself doesn't provide a sending service.
What do I need?
At least one sending account you can log in to over SMTP: SMTP from an email provider, a business mailbox or your own mail server all work. You need the host, port, username and password (or app password). For campaigns, set up SPF, DKIM and DMARC for your sending domain first.
What are the Free plan's limits?
Sending volume, sending accounts, templates and contacts are listed in the plan table. The Free plan doesn't include campaigns or webhooks; all other send endpoints work. It needs no subscription and stays available.
Can you guarantee inbox delivery?
No. Mail goes out through the accounts you connect, and the receiving side decides between inbox and spam based on the account's and sending domain's reputation and the content. The platform can check your domain's SPF, DKIM and DMARC records and automatically skips addresses that bounced or complained.
Can I connect to the platform over SMTP directly?
No. Only the HTTP API is available, plus writing emails and creating campaigns in the console. The platform connects to the SMTP accounts you add to send mail; it doesn't offer an SMTP relay.
What happens if an account keeps failing?
An account that fails 3 times in a row is paused and you're notified, while your other accounts keep sending. The platform then tests that account's connection regularly and returns it to rotation only after a test passes. Changing its connection details or switching it on yourself also restores it immediately.
How are quotas counted, and what happens when I run out?
Quotas count emails sent, and batch sends and campaigns count one email per recipient. The daily quota resets at midnight and the monthly quota on the 1st of each month. Once a quota is used up, the send API rejects new requests; wait for the reset or upgrade, which takes effect immediately.
Can I use it from an AI client?
Yes. After connecting your account in an MCP-capable AI client, you can check plans and usage, read send logs, send to 1 to 10 recipients, and manage contacts, templates, webhooks and sending domains. Renewing requires a one-time code.
Related pages: Domain inbound routing and sending API · Business email on your own domain · SMS Verification · SMTP Email API · Using the SMTP aggregation API
Loading…