For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
contact@agentmail.ccDiscord
DocumentationAPI ReferenceKnowledge BaseChangelog
DocumentationAPI ReferenceKnowledge BaseChangelog
LogoLogo
contact@agentmail.ccDiscord

AgentMail Changelog

Latest API and SDK updates. Subscribe via RSS · Discord

October 28, 2025
October 28, 2025
Was this page helpful?
Edit this page
Previous

October 25, 2025

Next
Built with

Summary

Introducing Custom Domains – add and verify your own domains for sending and receiving email. Use DNS verification (TXT, CNAME, MX), export zone files for easy DNS setup, and control feedback (bounce and complaint) delivery. Perfect for agents that need to send from your brand’s domain with full control over deliverability.

What’s new?

New endpoints:

  • GET /domains - List all domains
  • GET /domains/{domain_id} - Get domain details and verification records
  • POST /domains - Create (add) a domain
  • DELETE /domains/{domain_id} - Remove a domain
  • GET /domains/{domain_id}/zone-file - Download zone file for DNS setup
  • POST /domains/{domain_id}/verify - Trigger domain verification

Domain features:

  • DNS verification with TXT, CNAME, and MX records
  • Verification status: NOT_STARTED, PENDING, VERIFYING, VERIFIED, FAILED, INVALID
  • Per-record status (MISSING, INVALID, VALID) for targeted fixes
  • Zone file export for quick import at your DNS provider
  • Optional feedback (bounce/complaint) delivery per domain

Use cases

Build systems where:

  • Agents send from your verified custom domain
  • You manage DNS in one place and sync via zone file
  • Verification status drives onboarding or monitoring
  • Bounce and complaint handling is configured per domain
1from agentmail import AgentMail
2
3client = AgentMail(api_key="your-api-key")
4
5# create a domain
6domain = client.domains.create(
7 domain="mail.example.com",
8 feedback_enabled=True
9)
10
11# get verification records and status
12domain = client.domains.get(domain_id=domain.domain_id)
13for record in domain.records:
14 print(f"{record.type} {record.name}: {record.status}")
15
16# trigger verification after updating DNS
17client.domains.verify(domain_id=domain.domain_id)

Learn more in our Custom Domains and Managing Domains guides.