Adding a domain was refused
Tell apart the three ways a domain add is refused: another org holds the parent, your plan's domain limit, and a generic state conflict.
Three different refusals can meet a POST /v1/domains call, and the status plus error type tells you which.
409 domain_parent_taken
Another organization already verified a domain under the same registrable parent, which is why checking your own domain list will not explain this one. Legitimate for agencies and subsidiaries: write to contact@mailfully.com for an allowlist entry.
403 domain_limit_reached
Your organization already holds as many domains as its plan allows. Every domain counts, pending ones included, so a half-finished add you forgot about can be the thing pushing you over the limit. Domains are shared across your test and live environments, so a domain added under either one counts against the same org-wide limit. The fix is to upgrade the plan. See Quotas and plan limits for how the domain cap fits alongside the rest of what your plan includes.
409 conflict
The generic state conflict. Fetch the current state of the domain and reconcile before retrying.
Check what you already have
GET /v1/domains lists every domain on the org with its current status:
curl https://api.mailfully.com/v1/domains \
-H "Authorization: Bearer mf_live_xxxxxxxxxxxx"
Useful for the limit case, since a pending domain still counts, and for confirming a half-finished add. See GET /v1/domains.
Subdomains are separate domains
mail.acme.com and acme.com are separate domain records: each is verified separately and each counts against the limit on its own. See Subdomain or root domain.
