Connections, Sessions & POLL commands
Connections
To establish an EPP connection to the Dragon registry platform:
- To connect to EPP you must have added your IP address to the allow list for your registrar accreditation in online services.
- The number of concurrent sessions that can be established with the EPP interface is limited per registrar accreditation; .uk currently supports 6 per accreditation and all other registries support 5 per accreditation.
- Command volumes will not be explicitly limited by session. Some commands may, however, be limited if they prove to be abusive under the acceptable use policy.
- The idle timeout for a connection is 30 minutes. Sessions can be kept alive by sending a poll request or a hello command.
- There is no limit to the length of time that an active connections can be used; it is generally recommended to keep your EPP connection open as the overhead of opening connections is significant per transaction.
EPP Environments
For each registry Nominet operate 3 distinct EPP environments as follows:
Environment | What does it contain? | EPP Hostname(s) | Port |
---|---|---|---|
Testbed | Contains future functionality ahead of time. | testbed-<registry>.epp.nominet.uk | 700 |
Operational Test and Evaluation (OT&E) | Mirrors production in a test environment. | ote-<registry>.epp.nominet.uk | 700 |
Production | The live registry. | <registry>.epp.nominet.uk | 700 |
|
Duplicated credentials for testing registrar transfers.
In order to test registrar transfers, a second registrar account has been provided for all registrars on the testbed and OT&E environments with identical connection IP addresses and passwords. There is a cloned CLID to test registrar transfers. The cloned CLID has an underscore (‘_’) appended to it. The name of the cloned CLID is generated as follows:
- If the CLID has less than 16 characters, the cloned login CLID is the same as the original with trailing ‘_’. For example, if the CLID is ‘EXAMPLE’, the cloned CLID is ‘EXAMPLE_’.
- If the CLID has 16 characters, the final character has been replaced with a ‘_’. For example, if the CLID is ‘EXAMPLE-WITH-16C’, the cloned CLID is ‘EXAMPLE-WITH-16_’.
TLS requirements
Connections to EPP must operate over TLS utilising one of the following cipher suites:
TLS version | Cipher |
---|---|
TLS1.3 | TLS13-AES128-GCM-SHA256 |
TLS13-AES256-GCM-SHA384 | |
TLS13-CHACHA20-POLY1305-SHA256 | |
TLS1.2 | ECDHE-RSA-AES256-GCM-SHA384 |
ECDHE-RSA-AES128-GCM-SHA256 | |
ECDHE-RSA-CHACHA20-POLY1305-SHA256 | |
It is strongly recommended that registrars utilise TLS1.3. To connect to EPP a registrar must use a valid client certificate from a well known public Certificate Authority (CA) and include any intermediate certificates in the chain. Please note this differs from Client Authentication Extended Key Usage (EKU) – a normal certificate without the EKU will function. |
EPP is an asynchronous protocol
Please note that EPP is an asynchronous protocol which does not require you to wait for the receipt of a response before sending the next request.
To ensure that you understand which response related to which command we strongly recommend that you utilise a unique client transaction ID on your requests
<clTRID>INSERT UNIQUE IDENTFIER HERE</clTRID>
Where you experience any issues in utilising EPP please provide both the CLTRID and SVTRID of the response to our support team as part of your support request to aid in diagnosis of the issue.
Session commands
GREETING
When you first connect to an EPP server the server will issue a greeting indicating the configuration of that particular server:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
<greeting>
<svID>Nominet gTLD server</svID>
<svDate>2025-05-13T22:25:24.061Z</svDate>
<svcMenu>
<version>1.0</version>
<lang>en</lang>
<objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:domain-1.0</objURI>
<objURI>urn:ietf:params:xml:ns:host-1.0</objURI>
<svcExtension>
<extURI>urn:ietf:params:xml:ns:launch-1.0</extURI>
<extURI>urn:ietf:params:xml:ns:secDNS-1.1</extURI>
<extURI>urn:ietf:params:xml:ns:rgp-1.0</extURI>
<extURI>urn:ietf:params:xml:ns:fee-0.23</extURI>
<extURI>urn:ietf:params:xml:ns:epp:secure-authinfo-transfer-1.0</extURI>
</svcExtension>
</svcMenu>
<dcp>
<access><all/></access>
<statement>
<purpose><admin/><prov/></purpose>
<recipient><ours/></recipient>
<retention><business/></retention>
</statement>
</dcp>
</greeting>
</epp>
The greeting defines the EPP commands the registry you are connecting to can support. In particular it is important to note that if a registry uses ICANN’s minimal data set then it will not include the acceptance of contact data and this will be indicated by the absence of:
<objURI>urn:ietf:params:xml:ns:contact-1.0</objURI>
LOGIN
Any session must be established from an IP address listed on the allow list for that username. A login commmand should notify the registry which EPP elements it wishes to support in the dialogue with the server.
An example login command:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<login>
<clID>REGISTRAR</clID>
<pw>PASSWORD GOES HERE</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>
<svcExtension>
<extURI>urn:ietf:params:xml:ns:launch-1.0</extURI>
<extURI>urn:ietf:params:xml:ns:secDNS-1.1</extURI>
<extURI>urn:ietf:params:xml:ns:rgp-1.0</extURI>
<extURI>urn:ietf:params:xml:ns:fee-0.23</extURI>
<extURI>urn:ietf:params:xml:ns:allocationToken-1.0</extURI>
<extURI>urn:ietf:params:xml:ns:epp:secure-authinfo-transfer-1.0</extURI>
<extURI>http://www.nominet.org.uk/epp/xml/std-unrenew-1.0</extURI>
<extURI>urn:ietf:params:xml:ns:validate-0.1</extURI>
</svcExtension>
</svcs>
</login>
<clTRID>EXAMPLE-LOGIN-12345</clTRID>
</command>
</epp>
An example response:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<trID>
<clTRID>EXAMPLE-LOGIN-12345</clTRID>
<svTRID>1848548746036514911</svTRID>
</trID>
</response>
</epp>
hello
A hello query can be used when logged in, in order to obtain the greeting response again from the server. Whilst it can also be utilised to ensure a connection does not go idle, we would recommend a poll command to prevent that as it would ensure you keep up to date with your messages from the server.
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<epp xmlns='urn:ietf:params:xml:ns:epp-1.0'>
<hello/>
</epp>
Poll COMMAND
An example poll command:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
<command>
<poll op="req"/>
<clTRID>EXAMPLE-POLL-12345</clTRID>
</command>
</epp>
An example acknowledgement of a response:
<?xml version='1.0' encoding='UTF-8'?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
<command>
<poll op="ack" msgID="2699658"/>
<clTRID>EXAMPLE-POLL-ACK-1234</clTRID>
</command>
</epp>
EPP Poll notification messages are sent when a domain has been created, amended or deleted, or when a contact or host has been amended through a method other than EPP.
Message name (in EPP msg field) | When this notification is sent | When this notification is not sent |
---|---|---|
Domain created Example response | Domain name object created by: – Dragon Domain Manager – The registry operator. | Domain name object created by EPP. |
Domain amended Example response | Domain name object updated by: – Dragon Domain Manager – The registry operator – Uniform Rapid Suspension process and that update changes: – Nameservers – Contacts – Status – pendingRestore – Restore – Manual renewal | Domain name object updated by: EPP Auto-renewal at expiry. |
Domain deleted Example response | Domain name object deleted by: – Dragon Domain Manager – The registry operator – Lifecycle operations, such as the expiry of a name that is serverRenewProhibited or where the registrar has insufficient credit. | Domain name object deleted by EPP. |
Contact amended Example response | Contact object updated by: – Dragon Domain Manager – The registry operator. | Contact object updated by EPP. |
Host amended Example response | Host object updated by: – Dragon Domain Manager – The registry operator. | Host object updated by EPP. |
If you have any questions about these notifications, contact our customer services teams:
Example responses
Domain created:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"> <response> <result code="1301"> <msg>Command completed successfully; ack to dequeue</msg> </result> <msgQ count="1" id="-12347"> <qDate>2017-06-16T08:48:51.000Z</qDate> <msg>Domain created</msg> </msgQ> <resData> <domain:infData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <domain:name>key1.example</domain:name> <domain:roid>uniqueRoId-EXAMPLE</domain:roid> <domain:status s="inactive"/> <domain:registrant>-10001X</domain:registrant> <domain:clID>pip1-test-REG1</domain:clID> <domain:crID>pip1-REG1</domain:crID> <domain:crDate>2017-07-24T16:14:09.000+01:00</domain:crDate> <domain:exDate>2019-07-24T16:14:09.000+01:00</domain:exDate> <domain:authInfo> <domain:pw>authInfo</domain:pw> </domain:authInfo> </domain:infData> </resData> <trID> <svTRID>874925735016402945</svTRID> </trID> </response> </epp>
Domain amended:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"> <response> <result code="1301"> <msg>Command completed successfully; ack to dequeue</msg> </result> <msgQ count="1" id="-12348"> <qDate>2017-06-16T08:48:51.000Z</qDate> <msg>Domain amended</msg> </msgQ> <resData> <domain:infData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <domain:name>key1.example</domain:name> <domain:roid>uniqueRoId-EXAMPLE</domain:roid> <domain:status s="inactive"/> <domain:registrant>-10001X</domain:registrant> <domain:clID>pip1-test-REG1</domain:clID> <domain:crID>pip1-REG1</domain:crID> <domain:crDate>2017-07-24T16:14:09.000+01:00</domain:crDate> <domain:exDate>2019-07-24T16:14:09.000+01:00</domain:exDate> <domain:authInfo> <domain:pw>authInfo</domain:pw> </domain:authInfo> </domain:infData> </resData> <trID> <svTRID>874925735016402945</svTRID> </trID> </response> </epp>
Domain deleted:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"> <response> <result code="1301"> <msg>Command completed successfully; ack to dequeue</msg> </result> <msgQ count="1" id="-12349"> <qDate>2017-06-16T08:48:51.000Z</qDate> <msg>Domain deleted</msg> </msgQ> <resData> <domain:infData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <domain:name>key1.example</domain:name> <domain:roid>uniqueRoId-EXAMPLE</domain:roid> <domain:status s="inactive"/> <domain:registrant>-10001X</domain:registrant> <domain:clID>pip1-test-REG1</domain:clID> <domain:crID>pip1-REG1</domain:crID> <domain:crDate>2017-07-24T16:14:09.000+01:00</domain:crDate> <domain:exDate>2019-07-24T16:14:09.000+01:00</domain:exDate> <domain:authInfo> <domain:pw>authInfo</domain:pw> </domain:authInfo> </domain:infData> </resData> <trID> <svTRID>874925735016402945</svTRID> </trID> </response> </epp>
Contact amended:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"> <response> <result code="1301"> <msg>Command completed successfully; ack to dequeue</msg> </result> <msgQ count="1" id="-12350"> <qDate>2017-06-16T08:48:51.000Z</qDate> <msg>Contact amended</msg> </msgQ> <resData> <contact:infData xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"> <contact:id>-11</contact:id> <contact:roid>C_F12_TESTDATA-EXAMPLE</contact:roid> <contact:status s="clientDeleteProhibited"/> <contact:status s="clientTransferProhibited"/> <contact:status s="linked"/> <contact:postalInfo type="int"> <contact:name>Example Name</contact:name> <contact:org>ORG</contact:org> <contact:addr> <contact:street>Minerva House</contact:street> <contact:street>Edmund Halley Road</contact:street> <contact:street>Oxford Science Park</contact:street> <contact:city>Oxford</contact:city> <contact:sp>STATE</contact:sp> <contact:pc>OX4 4DQ</contact:pc> <contact:cc>GB</contact:cc> </contact:addr> </contact:postalInfo> <contact:voice>+44.01234567899</contact:voice> <contact:fax>+44.11111111111</contact:fax> <contact:email>[email protected]</contact:email> <contact:clID>CLID-1</contact:clID> <contact:crID>CLID-1</contact:crID> <contact:crDate>2011-06-17T08:47:51.000Z</contact:crDate> <contact:authInfo> <contact:pw>2fooBAR</contact:pw> </contact:authInfo> <contact:disclose flag="true"> <contact:name type="int"/> <contact:name type="loc"/> <contact:org type="int"/> <contact:org type="loc"/> <contact:addr type="int"/> <contact:addr type="loc"/> <contact:voice/> <contact:fax/> <contact:email/> </contact:disclose> </contact:infData> </resData> <trID> <svTRID>1173470877077999617</svTRID> </trID> </response> </epp>
Host amended:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"> <response> <result code="1301"> <msg>Command completed successfully; ack to dequeue</msg> </result> <msgQ count="1" id="-12351"> <qDate>2017-06-16T08:48:51.000Z</qDate> <msg>Host amended</msg> </msgQ> <resData> <host:infdata xmlns:host="urn:ietf:params:xml:ns:host-1.0"></host:infdata <host:name>pp.ii.ppp1.com.</host:name> <host:roid>H1-EXAMPLE</host:roid> <host:status s="ok"/> <host:clID>pip1-test-REG1</host:clID> <host:crID>pip1-test-REG1</host:crID> <host:crDate>2001-04-15T08:47:51.000Z</host:crDate> </host:infData> </resData> <trID> <svTRID>1173904165353558017</svTRID> </trID> </response> </epp>
Minerva House, Edmund Halley Road, Oxford Science Park, OX4 4DQ, United Kingdom