Registrar API
- Check domain
- Check domain premium price
- Retrieve domain prices
- Register a domain
- Retrieve a Domain Registration
- Transfer a domain
- Retrieve a Domain Transfer
- Cancel a Domain Transfer
- Renew a domain
- Retrieve a Domain Renewal
- Restore a domain
- Retrieve a Domain Restore
- Authorize a domain transfer out
Check domain
This API endpoint has stricter limits in place to avoid a high volume of requests. This endpoint should be used only to check a domain’s state before issuing a domain registration or a domain transfer. For other use cases, we recommend using other services like Domainr.
Checks a domain name for availability.
GET /:account/registrar/domains/:domain/check
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
Example
Check the domain example.com
in the account 1010
:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
-X GET \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/check
Response
Responds with HTTP 200 on success, returns the domain availability information.
{
"data": {
"domain": "ruby.codes",
"available": true,
"premium": true
}
}
If the domain is premium (premium: true
), please check the premium price before to try to register, renew, transfer.
Errors
Responds with HTTP 400 if the domain availability cannot be checked.
Responds with HTTP 401 in case of authentication issues.
Check domain premium price
Deprecated in favor of getDomainPrices.
Get the premium price for a domain.
GET /:account/registrar/domains/:domain/premium_price
Please note that a premium price can be different for registration, renewal, transfer.
By default this endpoint returns the premium price for registration. If you need to check a different price, you should specify it with the action
param.
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
Input
Name | Type | Description |
---|---|---|
action |
string |
Optional action between "registration" , "renewal" , and "transfer" . If omitted, it defaults to "registration" . |
Examples
Check the premium price for example.com
domain:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
-X GET \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/premium_price
Check the premium price for example.com
domain renewal:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
-X GET \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/premium_price?action=renewal
Response
Responds with HTTP 200 on success, returns the domain premium price.
{
"data": {
"premium_price": "109.00",
"action": "registration"
}
}
Responds with HTTP 400, if the domain isn’t premium.
{
"message": "`example.com` is not a premium domain for registration"
}
Retrieve domain prices
Get a domain’s price for registration, renewal, and transfer.
This endpoint is currently in Public Preview. During the Preview, period changes may occur at any time.
Consider using our official clients to reduce the likelihood of breaking changes. If you are using or planning to use this endpoint we'd like to hear your feedback.
GET /:account/registrar/domains/:domain/prices
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
Examples
Check the registration, renewal, and transfer price for example.com
domain:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
-X GET \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/prices
Response
Responds with HTTP 200 on success, returns the domain pricing for registration, renewal, and transfer if the domain is premium.
{
"data": {
"domain": "bingo.pizza",
"premium": true,
"registration_price": 20.0,
"renewal_price": 20.0,
"transfer_price": 20.0,
"restore_price": 20.0
}
}
Responds with HTTP 400, if the domain TLD is not supported.
Errors
Responds with HTTP 400 if the TLD is not supported or the price cannot be checked.
Responds with HTTP 401 in case of authentication issues.
Register a domain
POST /:account/registrar/domains/:domain/registrations
Register a domain name with DNSimple.
Your account must be active for this command to complete successfully. You will be automatically charged the registration fee upon successful registration, so please be careful with this command.
When registering a domain using Solo or Teams subscription, the DNS services for the zone will be automatically enabled. This will be charged on your following subscription renewal invoices.
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
Example
Register the domain example.com
in the account 1010
:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-X POST \
-d '<json>' \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/registrations
Input
Name | Type | Description |
---|---|---|
registrant_id |
integer |
Required. The ID of an existing contact in your account. |
whois_privacy |
bool |
Set to true will attempt to purchase/enable the whois privacy as part of the registration. An extra cost may apply. Default: false . |
linked_provider |
string |
When set to the nickname of a linked provider, registration of the domain will go through that provider. Otherwise, registration of the domain will go through DNSimple. |
auto_renew |
bool |
Set to true to enable the auto-renewal of the domain. Default: false . |
extended_attributes |
hash |
Required for TLDs that require extended attributes. |
premium_price |
string |
Required as confirmation of the price, only if the domain is premium. |
The registrant_id
can be fetched via the contacts endpoint and will be the registered contact for this domain.
The premium_price
can be fetched via the prices endpoint.
Example
{
"registrant_id": 1
}
Response
Responds with HTTP 201 when registration was processed and completed.
Responds with HTTP 202 when registration was processed but is pending completion.
{
"data": {
"id": 1,
"domain_id": 999,
"registrant_id": 2,
"period": 1,
"state": "new",
"auto_renew": false,
"whois_privacy": false,
"created_at": "2016-12-09T19:35:31Z",
"updated_at": "2016-12-09T19:35:31Z"
}
}
Errors
Responds with HTTP 400 if the domain cannot be registrered.
Responds with HTTP 401 in case of authentication issues.
Responds with HTTP 402 if the account has outstanding payments.
Retrieve a Domain Registration
Retrieves the details of an existing domain registration.
GET /:account/registrar/domains/:domain/registrations/:domain_registration
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
:domain_registration |
integer |
The domain registration id |
Example
Get the domain registration with ID 361
in the account 1010
for the domain example.com
:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/registrations/361
Response
Responds with HTTP 200 on success.
{
"data": {
"id": 361,
"domain_id": 104040,
"registrant_id": 2715,
"period": 1,
"state": "registering",
"auto_renew": false,
"whois_privacy": false,
"created_at": "2023-01-27T17:44:32Z",
"updated_at": "2023-01-27T17:44:40Z"
}
}
Errors
Responds with HTTP 401 in case of authentication issues.
Transfer a domain
POST /:account/registrar/domains/:domain/transfers
Transfer a domain name from another domain registrar into DNSimple.
Your account must be active for this command to complete successfully. You will be automatically charged the 1-year transfer fee upon successful transfer, so please be careful with this command. The transfer may take anywhere from a few minutes up to 7 days.
When transfering a domain using Solo or Teams subscription, the DNS services for the zone will be automatically enabled. This will be charged on your following subscription renewal invoices.
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
Example
Transfer the domain example.com
in the account 1010
:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-X POST \
-d '<json>' \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/transfers
Input
Name | Type | Description |
---|---|---|
registrant_id |
integer |
Required. The ID of an existing contact in your account. |
auth_code |
string |
Required for TLDS that require authorization-based transfer (the vast majority of TLDs). |
whois_privacy |
bool |
Set to true will attempt to purchase/enable the whois privacy as part of the transfer. An extra cost may apply. Default: false . |
auto_renew |
bool |
Set to true to enable the auto-renewal of the domain. Default: false . |
extended_attributes |
hash |
Required for TLDs that require extended attributes. |
premium_price |
string |
Required as confirmation of the price, only if the domain is premium. |
Example
{
"registrant_id": 1,
"auth_code": "xjfjfjvhc293"
}
Example with extended attributes
{
"registrant_id": 1,
"auth_code": "xjfjfjvhc293",
"extended_attribute": {
"us_nexus": "C11",
"us_purpose": "P3"
}
}
Response
Responds with HTTP 201 when transfer was processed and completed.
Responds with HTTP 202 when transfer was processed but is pending completion.
{
"data": {
"id": 1,
"domain_id": 999,
"registrant_id": 2,
"state": "transferring",
"auto_renew": false,
"whois_privacy": false,
"created_at": "2016-12-09T19:43:41Z",
"updated_at": "2016-12-09T19:43:43Z"
}
}
Errors
Responds with HTTP 400 if the domain transfer cannot be initiated.
Responds with HTTP 401 in case of authentication issues.
Responds with HTTP 402 if the account has outstanding payments.
Retrieve a Domain Transfer
Retrieves the details of an existing domain transfer.
GET /:account/registrar/domains/:domain/transfers/:domain_transfer
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
:domain_transfer |
integer |
The domain transfer id |
Example
Get the domain transfer with ID 361
in the account 1010
:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/transfers/361
Response
Responds with HTTP 200 on success.
{
"data": {
"id": 361,
"domain_id": 182245,
"registrant_id": 2715,
"state": "cancelled",
"auto_renew": false,
"whois_privacy": false,
"status_description": "Canceled by customer",
"created_at": "2020-06-05T18:08:00Z",
"updated_at": "2020-06-05T18:10:01Z"
}
}
Errors
Responds with HTTP 401 in case of authentication issues.
Cancel a Domain Transfer
Cancels an in progress domain transfer.
DELETE /:account/registrar/domains/:domain/transfers/:domain_transfer
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
:domain_transfer |
integer |
The domain transfer id |
Example
Cancel the in progress domain transfer with ID 361
in the account 1010
:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
-X DELETE \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/transfers/361
Response
Responds with HTTP 202 on success.
{
"data": {
"id": 361,
"domain_id": 182245,
"registrant_id": 2715,
"state": "transferring",
"auto_renew": false,
"whois_privacy": false,
"status_description": null,
"created_at": "2020-06-05T18:08:00Z",
"updated_at": "2020-06-05T18:08:04Z"
}
}
Errors
Responds with HTTP 400 if the transfer cannot be canceled.
Responds with HTTP 401 in case of authentication issues.
Renew a domain
POST /:account/registrar/domains/:domain/renewals
Renew a domain name already registered with DNSimple.
Your account must be active for this command to complete successfully. You will be automatically charged the renewal fee upon successful renewal, so please be careful with this command.
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
Example
Renew the domain example.com
in the account 1010
:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-X POST \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/renewals
Input
Name | Type | Description |
---|---|---|
period |
integer |
The number of years. Unless specified it will default to whatever value is set for the TLD. |
premium_price |
string |
Required as confirmation of the price, only if the domain is premium. |
Example with optional period
{
"period": 2
}
Response
Responds with HTTP 201 when renewal was processed and completed.
Responds with HTTP 202 when renewal was processed but is pending completion.
{
"data": {
"id": 1,
"domain_id": 999,
"period": 1,
"state": "new",
"created_at": "2016-12-09T19:46:45Z",
"updated_at": "2016-12-09T19:46:45Z"
}
}
Errors
Responds with HTTP 400 if the domain cannot be renewed.
Responds with HTTP 401 in case of authentication issues.
Responds with HTTP 402 if the account has outstanding payments.
Retrieve a Domain Renewal
Retrieves the details of an existing domain renewal.
GET /:account/registrar/domains/:domain/renewals/:domain_renewal
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
:domain_renewal |
integer |
The domain renewal id |
Example
Get the domain renewal with ID 1
in the account 1010
for the domain example.com
:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/renewals/1
Response
Responds with HTTP 200 on success.
{
"data": {
"id": 1,
"domain_id": 999,
"period": 1,
"state": "renewed",
"created_at": "2016-12-09T19:46:45Z",
"updated_at": "2016-12-12T19:46:45Z"
}
}
Errors
Responds with HTTP 401 in case of authentication issues.
Restore a domain
POST /:account/registrar/domains/:domain/restores
Restore a eligable expired domain name where your registration with DNSimple lapsed.
Your account must be active for this command to complete successfully. You will be automatically charged the restore fee upon successful restore, so please be careful with this command.
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
Example
Restore the domain example.com
in the account 1010
:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-X POST \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/restores
Input
Name | Type | Description |
---|---|---|
premium_price |
string |
Required as confirmation of the price, only if the domain is premium. |
Example with optional premium_price
{
"premium_price": '109.00'
}
Response
Responds with HTTP 201 when restore was processed and completed.
Responds with HTTP 202 when restore was processed but is pending completion.
{
"data": {
"id": 43,
"domain_id": 214,
"state": "new",
"created_at": "2024-02-14T14:40:42Z",
"updated_at": "2024-02-14T14:40:42Z"
}
}
Errors
Responds with HTTP 400 if the domain cannot be restored.
Responds with HTTP 401 in case of authentication issues.
Responds with HTTP 402 if the account has outstanding payments.
Retrieve a Domain Restore
Retrieves the details of an existing domain restore.
GET /:account/registrar/domains/:domain/restores/:domain_restore
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
:domain_restore |
integer |
The domain restore id |
Example
Get the domain restore with ID 1
in the account 1010
for the domain example.com
:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/restores/1
Response
Responds with HTTP 200 on success.
{
"data": {
"id": 43,
"domain_id": 214,
"state": "new",
"created_at": "2024-02-14T14:40:42Z",
"updated_at": "2024-02-14T14:40:42Z"
}
}
Errors
Responds with HTTP 401 in case of authentication issues.
Authorize a domain transfer out
POST /:account/registrar/domains/:domain/authorize_transfer_out
Prepare a domain for transferring out. This will unlock a domain and send the authorization code to the domain’s administrative contact.
Parameters
Name | Type | Description |
---|---|---|
:account |
integer |
The account id |
:domain |
string |
The domain name |
Example
Transfer out the domain example.com
in the account 1010
:
curl -H 'Authorization: Bearer <token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-X POST \
https://api.dnsimple.com/v2/1010/registrar/domains/example.com/authorize_transfer_out
Response
Responds with HTTP 204 on success.
Errors
Responds with HTTP 400 if the transfer out cannot be authorized.
Responds with HTTP 401 in case of authentication issues.