AGIdock runs its own outbound mail server, with its own IP and rDNS, and delivers straight to receiving servers. Every customer sends through that same server and IP.
No mail is sent until all five are met, and they have to be done in this order — a credential cannot be created against a domain that is not verified yet, and neither can be used before a payment has cleared.
POST /v1/email/domains.verified.POST /v1/email/credentials.POST /v1/email/credentials {"domain":"example.com"} → SMTP username/password (shown once)
GET /v1/email/credentials → list (no secrets)
DELETE /v1/email/credentials/{id}
The create response carries host and port alongside the username and
password. Record the password now: it is never shown again, while
GET /v1/email/credentials repeats the host and port. **Issue STARTTLS if
your client can**: the relay offers it but does not require it, so an SMTP
library left on its defaults sends the password unencrypted, and anyone who
captures it can send as your domain until you revoke it. Recipients are
counted and billed against the credential that sent them.
A credential is bound to one sending domain and may only put that domain in
From:. Sending from several domains means one credential per domain.
Deleting a domain deletes its credentials with it.
The relay rewrites the envelope sender to its own bounce domain, so SPF is
checked against ours: it passes with no SPF record of yours, but is not
aligned with your From: domain. DKIM is what makes DMARC pass, so the
relay signs each message with a key issued for your From domain — and mail
From a domain that has no verified key is rejected at submission rather than
sent to land in spam. There is no shared sending domain to fall back on.
POST /v1/email/domains {"domain":"example.com"} → selector + records to publish
GET /v1/email/domains → status of each
POST /v1/email/domains/{id}/verify → re-check now
DELETE /v1/email/domains/{id}
Two records are required, and both are checked. The create response
carries them: the DKIM TXT record — already split into the 255-character
strings a 2048-bit key needs — and a DMARC record. Publish both, call verify,
and the domain changes to verified. A background check re-runs regularly:
if either disappears the domain returns to pending and stops sending, so
don't delete them.
A DMARC record is required, but you choose the policy: only the record's
existence is enforced. Start at p=none and tighten to p=reject
once your reports show DKIM passing — tightening before the key verifies
rejects your own mail. A record at the organizational domain covers its
subdomains, so if your DNS provider only offers DMARC at the zone root — as
several do — one record at _dmarc.example.com verifies mail.example.com
too.
Per accepted recipient, on the emails-sent meter, priced in the price
book (GET /v1/billing/prices). One message to 50 addresses is 50. Rejected
messages are not billed.
Sending is capped by a daily limit counted in recipients, not messages: one message to 50 addresses uses 50 of it. Every account starts on the lowest tier.
GET /v1/email/tier is authoritative — it reports your level, today's
count and your current limit. Read it rather than hard-coding a number; the
limits change. The tier rises on its own after sustained clean sending (a low
reject rate over enough volume), with no ticket needed, and never goes down.
Over the daily limit, the relay answers with a temporary 4xx SMTP error naming
the tier, so a standard mail server queues the message and retries after
midnight UTC. If you need more than the top tier, file a
support ticket (POST /v1/support/tickets).
Every message is scored before it is sent on:
Refusals arrive as SMTP replies, not as HTTP problems, and the first digit tells you what to do:
From: domain with no verified key.
The reply says what to change. Resending the identical message gets the
identical answer.GET /v1/email/stats?days=7 — sent and rejected per day, both as messages
and as recipients, so you can watch your reject rate yourself. Policy
refusals (payment requirement, daily limit) are not counted here.
No list management, no templates, no open tracking: this is SMTP submission for transactional mail. Bulk marketing mail tends to fail spam scoring and hit the tier limits — see the AUP.