What Is EPP?
Extensible Provisioning Protocol is the XML-based API registries use to create, transfer, renew and delete domains. Think of it as the backend language between registrars and registries like Verisign or Nominet.
XML Frame Anatomy
Each command wrapped in
Standard Commands
- domain:check – availability
- domain:create – register
- domain:info – status, dates, contacts
- domain:renew – extend expiry
- domain:transfer – request auth-code transfer
- domain:delete – send to redemption
Code Example (Python)
Send
Rate Limits & Throttles
Verisign allows 20 transactions/sec per IP but registrar accreditation agreement caps 1,000 checks/min for load balancing. Burst above limit returns 5202 “Command failed; limit exceeded”.
Contact Objects
Registrant, admin, tech, billing contacts stored separately with contact:cre Data. Each contact gets ROID (Repository Object ID) reused across multiple domains—think foreign-key relationship.
Extensions: RFC 5730-5734
Launch Phase (EPP-Launch) adds
Error Handling
EPP returns result code 1000 for success, 1001 for success with pending. 2xxx range means client error (bad XML), 5xxx server error (registry down). Log full XML on 5xxx for registrar support tickets.
Registry Differences
.uk uses EPP but requires IPS tag change instead of auth-code. .fr needs “declarant” contact with EU address. Always read registry-specific implementation guide before coding universal module.
Future: JSON/REST
Some new gTLD registries expose JSON gateways, but EPP remains mandatory for .com/.net/.org. Learn XML EPP first; REST wrappers are thin facades over same protocol.