Using the regcity API

Updated 6 months ago 9 views

Use the regcity API to check availability, register, renew and manage domains from your own scripts, with the same prices and balance as the control panel.

1. Get your API key

Open Profile → API Key and click Generate a New Key. Keep the key secret: anyone who has it can spend your account balance. If it leaks, generate a new one; the old key stops working immediately.

2. How requests work

  • Base URL: https://regcity.net/api
  • Every call is POST https://regcity.net/api/<role>/<module>/<method> with a JSON body.
  • role is guest for public calls (no key) or client for calls on your account.
  • Client calls use HTTP Basic authentication: username client, password your API key.
curl -s -u client:YOUR_API_KEY \
  -H 'Content-Type: application/json' \
  -X POST https://regcity.net/api/client/client/balance_get_total

Every response has the same shape:

{"result": 25.4, "error": null}

On failure result is null and error holds message and code. Authentication Failed means the key is wrong, reset or missing. Requests are rate-limited; if you get a rate-limit error, wait and retry.

3. Check availability and prices (no key needed)

Call Body Returns
guest/domaincheck/check {"sld": "example", "tld": ".com"} available, price_registration, price_renew, min_years
guest/domaincheck/bulk {"domains": ["example.com", "example.net"]} the same for each domain
guest/servicedomain/tlds {} every extension we sell, with registration, renewal and transfer prices
curl -s -H 'Content-Type: application/json' -X POST \
  https://regcity.net/api/guest/domaincheck/check \
  -d '{"sld": "example", "tld": ".com"}'

4. Before you register: contact and nameservers

Registration uses your default domain contact and your default nameservers.

Call Body What it does
client/bulkdomain/profile_status {} complete: true when the registrar has every contact field it needs; otherwise lists missing fields
client/bulkdomain/contacts {} your saved domain contacts (the first one is the default)
client/bulkdomain/nameservers {} your default nameservers
client/bulkdomain/save_nameservers {"ns1": "...", "ns2": "..."} sets your default nameservers; empty values restore ours
client/bulkdomain/zone_rules {} extensions that only accept a contact from a certain region (.eu, .us, .ca, …)

Fill in missing contact details in Profile in the control panel.

5. Register domains

curl -s -u client:YOUR_API_KEY -H 'Content-Type: application/json' -X POST \
  https://regcity.net/api/client/bulkdomain/register \
  -d '{"domains": ["example.com", "example.net"], "years": 1, "ns1": "ns1.example.org", "ns2": "ns2.example.org"}'
  • domains: an array, or a string with one domain per line; up to 200 per request.
  • years: registration period (default 1).
  • ns1–ns4: optional; without them your default nameservers are used.
  • contact_id: optional; without it your default contact is used.

Availability is not checked here. Check the domains first (section 3).

The call returns at once: {"batch_id": 12, "queued": 2, "errors": {}}. The orders are then placed in the background and one invoice is issued for the whole batch. It is paid from your balance automatically if the balance is enough; otherwise it stays unpaid, and you can pay it in Invoices. Domains are registered within a few minutes of payment.

Follow progress with client/bulkdomain/batches ({}): each batch shows ordered, waiting, failed, the errors per domain and invoice_hash. If a domain cannot be registered after payment, its cost is returned to your balance.

6. Renew domains

curl -s -u client:YOUR_API_KEY -H 'Content-Type: application/json' -X POST \
  https://regcity.net/api/client/bulkdomain/renew \
  -d '{"domains": ["example.com", "example.net"]}'

Renews every listed domain that is active in your account for one more period, on a single invoice paid from your balance when possible. Returns renewed, errors (for example, a domain that is not yours or already has an unpaid renewal invoice) and invoice_hash.

7. Change nameservers

curl -s -u client:YOUR_API_KEY -H 'Content-Type: application/json' -X POST \
  https://regcity.net/api/client/bulkdomain/update_nameservers \
  -d '{"domains": ["example.com"], "ns1": "ns1.example.org", "ns2": "ns2.example.org"}'

Only domains in your account are changed. The change is sent to the registrar within a few minutes; check the result with client/bulkdomain/jobs ({}).

8. Your domains, balance and invoices

Call Body Returns
client/order/get_list {"type": "domain", "per_page": 100, "page": 1} your domain orders with status and expiry date
client/order/service {"id": ORDER_ID} domain details: nameservers, lock, privacy, expiry
client/client/balance_get_total {} your current balance
client/invoice/get_list {"per_page": 20} your invoices
client/invoice/get {"hash": "INVOICE_HASH"} one invoice, for example the one from a batch or renewal

Single-domain actions take the order ID from client/order/get_list:

Call Body
client/servicedomain/lock / unlock {"order_id": ORDER_ID}
client/servicedomain/enable_privacy_protection / disable_privacy_protection {"order_id": ORDER_ID}
client/servicedomain/get_transfer_code {"order_id": ORDER_ID}

Need help?

Open a ticket in Support and include the call you made and the full error response. Never include your API key.

Still need help?

If this article did not answer your question, our support team can help.

Contact support
© 2026 Regcity — core of privacy and protection