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:

EnvironmentWhat does it contain?EPP Hostname(s)Port
TestbedContains future functionality ahead of time.testbed-<registry>.epp.nominet.uk700
Operational Test and Evaluation (OT&E)Mirrors production in a test environment.ote-<registry>.epp.nominet.uk700
ProductionThe live registry.<registry>.epp.nominet.uk700
  • Replace <registry> with the registry you wish to connect, replacing any “.” with “-“. For .wales it would be wales.epp.nominet.uk and for .gov.uk it would be gov-uk.epp.nominet.uk

  • Each Testbed registry also has an RDAP endpoint at: https://testbed-rdap.nominet.uk/<registry>

  • Each OTE registry also has an RDAP endpoint at: https://ote-rdap.nominet.uk/<registry>

  • Please see registry specific pages for test data in Testbed and OT&E EPP environments.

  • Please note for legacy .uk environment please review the UK namespace pages.

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 versionCipher
TLS1.3TLS13-AES128-GCM-SHA256
TLS13-AES256-GCM-SHA384
TLS13-CHACHA20-POLY1305-SHA256
TLS1.2ECDHE-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

  1. Greeting
  2. Login
  3. Hello
  4. Poll

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 sentWhen 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