Testing Your Integration in CentralNic OT&E
Every solid integration is proven before it touches a live domain or a real balance. That is what OT&E (Operational Test & Evaluation) is for: a full sandbox that runs the same commands and speaks the same protocols as production, where you can register, transfer, update and retrieve domains as many times as you like — at no cost and with nothing billed. If it works here, it will work live.
This guide is the companion to Moving from OT&E to Production: that page is the cutover; this one is the testing you do well before it. Do the work here thoroughly and the cutover becomes a boring configuration change — which is exactly what you want on go-live day. We will connect to OT&E, walk a registration and a transfer end to end, and check your responses against what production will actually return.
Where OT&E Fits
Section titled “Where OT&E Fits”CentralNic Reseller gives every reseller a dedicated OT&E environment alongside the live one. The two systems are deliberately identical in how they behave — the same command set, the same response codes, the same protocols — so that code proven in OT&E behaves the same way in production. The difference is consequence: in OT&E nothing is charged and no live domain is affected, so you are free to fail, retry and iterate until every flow returns exactly what you expect.
The plan for the rest of this page is simple: test here first, then cut over. Get check, create, update, retrieve and transfer all returning clean, expected responses in OT&E — then follow the production guide to point the same code at the live system.
Connect to the OT&E Environment
Section titled “Connect to the OT&E Environment”OT&E has its own endpoints. For the HTTPS API the OT&E gateway is
api-ote.rrpproxy.net, and OT&E calls carry the s_opmode=OTE flag so the system
knows to run them in test mode. Connect by hostname, not IP address — our host
IPs can change, but the hostnames do not.
-
Open the Control Panel and go to API → API Gateways (top menu). This page lists the exact OT&E hostnames and ports for every protocol (HTTPS, XML-RPC, SOAP, MREG, EPP) for your account — always take the values from here rather than copying them from anywhere else.
-
Point your integration at the OT&E gateway. For HTTPS that is
api-ote.rrpproxy.net, withs_opmode=OTEon each call. -
Set your OT&E credentials. If you need to set or change the OT&E password, do it in the Control Panel under Account → Password & Security.
A minimal HTTPS availability check against OT&E looks like this:
https://api-ote.rrpproxy.net/api/call?s_opmode=OTE&s_login=[account]&s_pw=[password]&command=CheckDomain&domain=example.comSimulate a Registration End to End
Section titled “Simulate a Registration End to End”The core lifecycle is four steps, and OT&E lets you run the whole thing for free as often as you need. Register a name, change its nameservers, read it back, and confirm every response matches what you expect. Because nothing is billed, this is also the fastest way to prove your endpoint, credentials and IP allowlist are all working before you write another line of code.
-
Check availability. Run
CheckDomainfor the name you intend to register. A clean available / not-available response confirms your connection and credentials are correct end to end.command = CheckDomaindomain = example.com -
Create the domain. Run
AddDomain, supplying the registration period, your nameservers and the contact handles for the roles the TLD requires. In OT&E this registers a test domain at no cost.command = AddDomaindomain = example.comperiod = 1ownercontact0 = P-1234567nameserver0 = ns1.example.netnameserver1 = ns2.example.net -
Set or change the nameservers. Run
ModifyDomainto update the domain’s nameservers. This exercises a modify operation, not just a create, so you prove the whole update path works.command = ModifyDomaindomain = example.comnameserver0 = ns1.example.orgnameserver1 = ns2.example.org -
Retrieve and confirm state. Run
StatusDomainand confirm the domain comes back active with the nameservers and contacts you set. Matching what you expect, field for field, is your green light.command = StatusDomaindomain = example.com
For the full lifecycle beyond these four steps — renew, restore, delete, owner-change — see The Complete Domain Lifecycle, and for how contact handles and roles work, see Understanding Contacts, Handles & Ownership. The complete, authoritative list of commands and parameters is in the API Command Reference.
Simulate a Transfer End to End
Section titled “Simulate a Transfer End to End”Bringing a domain in from another registrar is asynchronous: your request starts the transfer, and the outcome arrives later. That makes it exactly the kind of flow worth rehearsing in OT&E, where you can exercise the request and the status-tracking path without moving a real domain or incurring a charge.
-
Check eligibility. Use
CheckDomainTransferto confirm the domain can be transferred before you request it — this is the cheapest way to avoid a failed request.command = CheckDomainTransferdomain = example.com -
Request the transfer. Run
TransferDomainwith the domain’s authorisation (“auth” / EPP) code to initiate it. Confirm you get an acknowledgement that the transfer is pending, not an immediate completion — transfers do not resolve inside a single request.command = TransferDomaindomain = example.comauth = auth-code-here -
Track the status. Poll for the transfer status and confirm your integration handles the pending state and the eventual outcome. This asynchronous handling is the part most worth proving before go-live.
-
Retrieve and confirm. Once the test transfer resolves, run
StatusDomainand confirm the domain reflects the state you expect.
Verify Your Responses Against Production
Section titled “Verify Your Responses Against Production”The whole point of OT&E is that a result here predicts the result live. Confirm that by checking your responses carefully — but also know where OT&E and production legitimately differ, so you never build against a test-only quirk that will not hold in production.
-
Read the response
codeanddescription, not just success or failure. Production returns the same codes as OT&E — for example210for an available domain,211for one that is not,200for a completed command. Log and branch on thecodein your integration so your live behaviour matches your tested behaviour exactly. -
Confirm the shape of every response you rely on. Field names, structure and ordering carry over from OT&E to production. If your parser works here, it works there.
-
Compare against what you saw in the Control Panel. If you registered a domain by hand during your first day, you already know what a correct result looks like — use it as your reference.
Keep these OT&E-versus-production differences in mind as you test:
| Behaviour | In OT&E | In production |
|---|---|---|
| System | A separate system with its own endpoints | The live system with its own endpoints |
| Charges | Nothing is billed | Every registration, renewal and transfer is charged |
| Data | Test domains, contacts and balance | Completely separate — nothing crosses over |
| Credentials | Your OT&E login and password | Your production login and password |
| Premium domains | Tested using designated premium test names | Real premium names at real premium prices |
Test Here First, Then Cut Over
Section titled “Test Here First, Then Cut Over”When check, create, update, retrieve and transfer all return clean, expected
responses in OT&E — including the failure paths — your integration is proven. Going
live is then a controlled configuration change, not a rewrite: you point the same
code at the production gateway, swap your OT&E credentials for your production ones,
drop the s_opmode=OTE flag, and re-validate the IP allowlist for the servers that
will carry live traffic.
Because you ran every step here first, a production result that matches your OT&E result is exactly the confirmation you want. If a first live command ever fails where the identical OT&E command worked, it is almost always the endpoint, the credentials or the allowlist — not your logic.
What To Do Next
Section titled “What To Do Next”Your integration is validated. Take it live, and keep the reference material close: