EPP Protocol Documentation

Enterprise-grade domain registry integration using the Extensible Provisioning Protocol (EPP). Build robust registrar systems with our RFC-compliant EPP implementation.

Registrar Accreditation Required

EPP access is exclusively available to ICANN-accredited registrars and approved partners. Connection requires certificate-based authentication and IP whitelisting. To apply for EPP credentials, please complete our registrar application process.

RFC Compliant

Full compliance with RFC 5730-5734 standards for EPP protocol implementation. Industry-standard XML messaging over secure TCP connections.

Secure Connection

TLS 1.2+ encryption with certificate-based authentication. All EPP sessions are secured with industry-standard cryptography.

High Performance

Low-latency command processing with sub-second response times. Optimized for high-volume registrar operations.

Rich Extensions

Support for DNSSEC, RGP, Launch Phase, Fee Extension, and custom Unregistry extensions for advanced functionality.

Connection Details

Production Environment

  • Host: epp.unregistry.com
  • Port: Available to registered users
  • Protocol: TCP with TLS 1.2+
  • Authentication: X.509 certificates
  • Session Timeout: 300 seconds
  • Max Connections: 10 per registrar

OT&E Environment

  • Host: ote.unregistry.com
  • Port: Available to registered users
  • Test TLDs: Available to registered users
  • Reset Schedule: Daily at 00:00 UTC
  • Rate Limits: Relaxed for testing
  • Free Testing: No charges apply

Supported Extensions

Our EPP server supports multiple standard and custom extensions to provide comprehensive domain management capabilities:

Extension Namespace Status Description
DNSSEC urn:ietf:params:xml:ns:secDNS-1.1 Enabled DNS Security Extensions support
RGP urn:ietf:params:xml:ns:rgp-1.0 Enabled Registry Grace Period operations
Launch Phase urn:ietf:params:xml:ns:launch-1.0 Enabled Sunrise and claims support
Fee Extension urn:ietf:params:xml:ns:epp:fee-1.0 Enabled Premium pricing information
IDN urn:ietf:params:xml:ns:idn-1.0 Enabled Internationalized domain names
Allocation Token urn:ietf:params:xml:ns:allocationToken-1.0 Enabled Special allocation codes
Mark Protection urn:ietf:params:xml:ns:mark-1.0 Enabled Trademark claims and marks
Login Security urn:ietf:params:xml:ns:epp:loginSec-1.0 Enabled Enhanced login security
Funds Management https://unregistry.org/epp/funds-1.0 Enabled Prepaid account management
Identity Verification https://unregistry.org/epp/identica-1.0 Enabled Enhanced identity verification

EPP Commands

Complete implementation of standard EPP commands for comprehensive domain lifecycle management:

SESSION <login>

Authenticate and establish an EPP session

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> <command> <login> <clID>REGISTRAR_ID</clID> <pw>REGISTRAR_PASSWORD</pw> <options> <version>1.0</version> <lang>en</lang> </options> <svcs> <objURI>urn:ietf:params:xml:ns:domain-1.0</objURI> <objURI>urn:ietf:params:xml:ns:contact-1.0</objURI> <objURI>urn:ietf:params:xml:ns:host-1.0</objURI> </svcs> </login> <clTRID>ABC-12345</clTRID> </command> </epp>
QUERY <check>

Check domain availability for registration

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> <command> <check> <domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <domain:name>example.u</domain:name> <domain:name>test.u</domain:name> </domain:check> </check> <clTRID>ABC-12346</clTRID> </command> </epp>
QUERY <info>

Retrieve detailed domain information

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> <command> <info> <domain:info xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <domain:name>example.u</domain:name> <domain:authInfo> <domain:pw>AUTH_CODE</domain:pw> </domain:authInfo> </domain:info> </info> <clTRID>ABC-12347</clTRID> </command> </epp>
TRANSFORM <create>

Register a new domain name

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> <command> <create> <domain:create xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <domain:name>example.u</domain:name> <domain:period unit="y">1</domain:period> <domain:ns> <domain:hostObj>ns1.example.u</domain:hostObj> <domain:hostObj>ns2.example.u</domain:hostObj> </domain:ns> <domain:registrant>CONTACT-ID</domain:registrant> <domain:contact type="admin">ADMIN-ID</domain:contact> <domain:contact type="tech">TECH-ID</domain:contact> <domain:authInfo> <domain:pw>AUTH_CODE</domain:pw> </domain:authInfo> </domain:create> </create> <clTRID>ABC-12348</clTRID> </command> </epp>
TRANSFORM <transfer>

Transfer domain between registrars

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> <command> <transfer op="request"> <domain:transfer xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <domain:name>example.u</domain:name> <domain:period unit="y">1</domain:period> <domain:authInfo> <domain:pw>TRANSFER_AUTH_CODE</domain:pw> </domain:authInfo> </domain:transfer> </transfer> <clTRID>ABC-12349</clTRID> </command> </epp>
QUERY <poll>

Retrieve pending messages and notifications

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> <command> <poll op="req"/> <clTRID>ABC-12350</clTRID> </command> </epp>

Response Codes

Standard EPP response codes for command results and error handling:

Code Message Description
1000 Command completed successfully The command was processed without errors
1001 Command completed successfully; action pending Command accepted but requires additional action
1300 Command completed successfully; no messages Poll response when message queue is empty
1301 Command completed successfully; ack to dequeue Message retrieved, acknowledgment required
1500 Command completed successfully; ending session Logout command processed successfully
2001 Command syntax error XML parsing or validation error
2003 Required parameter missing A required element or attribute is missing
2004 Parameter value range error Value is outside acceptable range
2005 Parameter value syntax error Value format is incorrect
2104 Billing failure Insufficient funds or payment error
2106 Object is not eligible for renewal Domain cannot be renewed at this time
2201 Authorization error Invalid credentials or permissions
2202 Invalid authorization information Auth code is incorrect
2301 Object pending transfer Domain already has pending transfer
2302 Object not pending transfer No transfer request exists
2303 Object does not exist Domain or object not found
2304 Object status prohibits operation Domain status prevents this action
2305 Object association prohibits operation Dependencies prevent this action
2306 Parameter value policy error Value violates registry policy
2308 Data management policy violation Action violates data retention policy
2400 Command failed General command failure
2500 Command failed; server closing connection Fatal error, connection will be closed

Integration Guide

Quick Start

Follow these steps to integrate with our EPP server:

  1. Request EPP credentials through the registrar portal
  2. Install your X.509 certificate on the client system
  3. Configure your EPP client with TLS 1.2+ support
  4. Test connection in OT&E environment
  5. Complete certification test suite
  6. Receive production credentials

Client Requirements

  • TLS 1.2 or higher support
  • X.509 certificate handling
  • XML parsing capabilities
  • TCP socket management
  • Session state management
  • Error handling and retry logic

Best Practices

  • Implement connection pooling
  • Use unique clTRID for tracking
  • Handle poll messages regularly
  • Implement exponential backoff
  • Monitor session timeouts
  • Log all transactions

Rate Limits

  • Commands: 1000/minute
  • Sessions: 10 concurrent
  • Login attempts: 5/minute
  • Check queries: 100 domains/request
  • Info queries: 50/minute
  • Create operations: 100/minute

Session Management

  • Sessions timeout after 300 seconds of inactivity
  • Use <hello> to keep sessions alive
  • Always logout when done
  • Handle disconnections gracefully
  • Implement reconnection logic
  • Track session state locally

Testing & Certification

OT&E Environment Testing

Before production access, registrars must complete our certification test suite in the OT&E environment:

Test Category Required Tests Pass Criteria
Session Management Login, Logout, Hello, Keep-alive 100% success rate
Domain Operations Check, Create, Info, Update, Delete, Renew All commands successful
Contact Management Create, Update, Info, Delete contacts Proper data handling
Host Management Create, Update, Delete nameservers IPv4/IPv6 support
Transfer Operations Request, Approve, Reject, Cancel transfers Complete transfer flow
Extension Support DNSSEC, RGP, Fee extension tests Proper XML handling
Error Handling Invalid commands, Auth failures, Timeouts Graceful error recovery
Poll Queue Retrieve and acknowledge messages Queue management

Resources & Documentation

RFC Standards

XML Schemas

Official IANA EPP Schema Definitions:

Client Libraries

Open-source EPP client implementations:

  • PHP: php-epp-client
  • Python: pyEPP
  • Java: EPP-RTK
  • Ruby: epp-client
  • Go: go-epp

Ready to Integrate?

Start your EPP integration journey with comprehensive support from our technical team.

Apply for EPP Access REST API Alternative

Technical Support

Email: [email protected]

Response time: < 4 hours

Integration Team

Schedule: Book a Call

Onboarding assistance available

System Status

Monitor: status.unregistry.com

99.99% uptime SLA