PlanetHoster API Logo FR

PlanetHoster API Documentation

Credit to Luke, Jean-Philippe, Quentin and Gabriel

  • This documentation is split into GET and POST commands. All available API methods are listed here underneath each category.
  • SSL only: we require that all requests are done over encrypted TLS/SSL connections.
  • Supported HTTP verbs are GET and POST. If your client does not support all HTTP verbs you can overide the verb with X-Http-Method-Override HTTP header.
  • Unless specified otherwise in the method's documentation, all successful API calls return an HTTP code 200 with a JSON object.
  • Errors are returned with an HTTP code 4XX or 5XX, a JSON object with properties "error" (an error message) and "error_code" (optional, an integer).
  • Every string passed to and from the API needs to be UTF-8 encoded. For maximum compatibility, normalize to Unicode Normalization Form C (NFC) before UTF-8 encoding.
  • The API sends ETag headers and supports the If-None-Match header.
  • Unless specified otherwise, all API methods require authentication with api_user and api_key
  • When you want to use API, you must specify a list of IPs that are authorized to use this.

The Base URL of the Rest API is:

https://api.planethoster.net/reseller-api/

Account/Informations

GET /test-connection

Test API connection

GET /tld-prices

Show TLD Prices.

GET /account-info

Account information.

GET /check-availability

Check domain availability.

GET /domain-info

Domain information.

Get domain details

GET /get-contact-details

Retrieve contact details

GET /get-nameservers

Show nameservers

GET /get-ph-dns-records

Show PlanetHoster DNS records

GET /get-registrar-lock

Show lock status

Save/modify domain info

POST /save-contact-details

Change contact details

POST /save-nameservers

Update Nameservers

POST /save-ph-dns-records

Update PlanetHoster DNS zone

POST /save-registrar-lock

Update domain lock status

Other

POST /email-epp-code

Get Authinfo

POST /register-domain

Register new domain

POST /renew-domain

Existing domain renewal

POST /transfer-domain

Launch transfer domain name

POST /delete-ph-dns-zone

Delete PlanetHoster DNS zone

Here are some example calls, using cURL:

Getting user informations:

Show/hide example

curl -X GET \
     -d 'api_key=XXXXX&api_user=XXXXX' \
     "https://api.planethoster.net/reseller-api/test-connection"
HTTP/1.1 200 OK
Content-Type: application/json
date: Dec 14 2018 00:56:20 GMT
---
{
    "message""Connection successful",
    "successful_connection""true",
}

Our web API is organized so that integrating with it is as straightforward as possible. Every HTTP request is either a GET or a POST, every request requires an `api_key` and an `api_user`, which are provided to you upon signup, and the HTTP response is always formatted as JSON. Errors can occur, and when they do we return the keys:

error_code: (integer), an error code

and:

error: (string), an error message

For each API command that is documented here, we'll let you know about each possible error or success condition.

Notice: If those fields aren't present in the returned JSON, the API command was successful. Success of course means different things for different commands: for domain registration it means the domain has successfully been registered, for domain transfer it means that the transfer request has been sent to the correct registry and for domain renewal, it means the domain has been renewed for the number of years specified in the command. A call to `get-nameservers` will simply return the nameservers associated with the domain, etc.

Requests to the API consist of fields (parameter names) and their values that are sent in either the URL's query parameters or the request's POST body (for GET and POST requests respectively). Each field for each API command is documented as having a 'type', either as a string, an integer, a boolean, a date, or a hashmap (associative array).

For string fields, these are simply the strings themselves. 
Example: "https://api.planethoster.net/domain-reseller/register-domain?sld=mydomain&tld=com"
--
For integer fields, these are simply the string representation of the integer.
Example: "https://api.planethoster.net/domain-reseller/register-domain?period=1"
---
For boolean fields, '1' is always treated as true, and "" (empty string) is treated as false.
Example: "https://api.planethoster.net/domain-reseller/register-domain?id_protection="
--
For dates fields, these are represented in the following format: "YYYY-MM-DD".
Example: "https://api.planethoster.net/domain-reseller/register-domain?somedatefield=2017-01-01"
---
For hashmaps, these are represented in the following way:
"https://api.planethoster.net/domain-reseller/register-domain?fieldname[key1]=val1&fieldname[key2]=val2"

Note that all field names and their values must be URL-encoded. For example, in PHP, use the `urlencode` or `http_build_query` functions. Spaces in the field names and values can be encoded to `+` or `%20`. Either of these is acceptable.

For responses, which are in JSON, all dates are returned in the same format ("YYYY-MM-DD"), as strings. Booleans are returned as JSON `true` and `false`, and currency amounts are returned as strings formatted in the following way: "9.99".

Reseller Panel

Our Reseller Panel will be your gateway for the management of your domains that were resold with us. From the Reseller Panel website, you'll be able to renew and manage the lifecycle of the domains that you have on file with us.

WHMCS Registrar module

Our WHMCS module offers the ability for our domain name resellers to use WHMCS to register, renew, transfer and manage domain names with PlanetHoster. The first step to getting started is to become a registered domain name reseller with PlanetHoster. This is free, and can either be done with an existing logged in account by clicking on the "Reseller" tab in our client area and activating your domain name reseller account. Alternatively, if you don't have an existing PlanetHoster account, you can create a new account here. After your account is created and you're logged in, you can then follow the previous step to activate your reseller account.

Features:

  • Domain registration/transfer/renewal
  • Automatic domain synchronization (sync)
  • DNS Modifications
  • WHOIS contact modification
  • Private Registrations (ID Protection)
  • Registry Lock/unlock
  • Auth Code EPP request
  • DNS Management (A, AAAA, CNAME, MX, TXT) if nameservers used are PlanetHoster's nameservers (nsa.planethoster.net, nsb.planethoster.net, nsc.planethoster.net)

Ongoing Development: This module is open-source and you can contribute to it to make it even better. Add a feature request or create a pull request here

Installation/Setup

Our WHMCS module is available online here or here.

  1. To install it, simply move or copy the "planethoster" folder so that it's under the "(whmcs)/modules/registrars/" folder.
  2. After this, in WHMCS Admin, click on "Setup" >> "Products/Services" >> "Domain Registrars" in the dropdown menu.
  3. Search for "Planethoster" and click on its "Activate" button.
  4. Copy and paste the API_User and API_Key into the corresponding text field.
  5. Once done, click on "Save Changes".
  6. After this, in WHMCS, click on "Setup" >> "Products/Services" >> "Domain Pricing" in the dropdown menu.
  7. Add new TLD, and set Auto Registration to "Planethoster" >> Save Changes.
How-to Setup WHMCS?

Languages Libraries/GitHub

PlanetHoster make a public repositories with for the moment Golang library & WHMCS registrar module

Beginning examples/QuickStart

  1. As stated in our overview, when you register as a reseller with PlanetHoster, you will receive an API key and an API user code. These two are essential as they are required for every command you will issue to the API. So, all the following commands will be under the form :

    curl -XGET (or POST) -d 'key1=X&key2=Y&key3=Z&api_key=XXXXX&api_user=XXXXX' 'API_URL'
    Here I will use XXXXX as a wildcard for the actual key and id.

    So, let's say that I am interested in registering domain testingplanethoster.com. I would first like to know if the domain is already registered or not:

    curl -XGET -d 'sld=testingplanethoster&tld=com&api_key=XXXXX&api_user=XXXXX' 'https://api.planethoster.net/reseller-api/check-availability'
    The API replies:
    {
        "available"true,
        "message""Available",
        "is_premium"true,
        "premium_register_price""80.00",
        "premium_renew_price""80.00"
    }
    
  2. Thankfully, our new domain is available, but it is also a premium domain, which is more expensive than a regular .com. Since this will cost us more than what we expected, it may be a good idea to check if we have enough credit in our account first before proceeding with registration:

    curl -XGET -d 'api_key=XXXXX&api_user=XXXXX' 'https://api.planethoster.net/reseller-api/account-info'
    The API replies:
    {
        "message""Account information successfully obtained",
        "credit_remaining""150.00",
        "credit_currency"USD,
        "num_active_orders"2,
        "num_active_domains"2
    }
    
  3. Now that we know we have enough money, we can proceed with registration. We will need to input the domain owner's information in the request as well as for how long we want to register this domain and the nameservers we will want to use for the new domain. As you can see, this makes a fairly long curl POST.

    curl -XPOST -d 'id_protection=1&ns1=nsa.planethoster.net&ns2=nsb.planethoster.net&period=1&registrant_address1=123+Cherry+Hill&registrant_city=Laval&registrant_company_name=&registrant_country_code=CA&registrant_email=john%40hancock.com&registrant_first_name=John&registrant_last_name=Hancock&registrant_phone=%2B1.5145555555&registrant_postal_code=11111&registrant_state=Quebec®ister_if_premium=1&sld=testingplanethoster&tld=com&api_key=XXXXX&api_user=XXXXX' 'https://api.planethoster.net/reseller-api/register-domain'
    The API replies:
    {
        "message""Domain registration order successfully created",
        "order_id""1112",
        "order_total""80.00",
        "expiry_date""2017-06-14"
    }
    

    As you may notice, I have also activated whois ID protection and I had to specify that it's ok to register it even though it's premium.

  4. We now have a domain name registered, but we're not done just yet. Because we want to feel safer, we want to lock our domain in place so that it can't be transfered. To do so, we'll issue the following query:

    curl -XPOST -d 'lock_action=Lock&sld=testingplanethoster&tld=com&api_key=XXXXX&api_user=XXXXX' 'https://api.planethoster.net/reseller-api/save-registrar-lock'
    The API replies:
    {
        "message""Lock status successfully saved (Locked)",
        "is_locked"true
    }
    
  5. As you may have already noticed, when registering the domain, I set the nameservers to nsa and nsb.planethoster.net . This lets us control our domain's zone records through the API, as it is on the PlanetHoster nameservers. We'll create an A record and a MX, which should be the basic need for a website with emails.

    curl -XPOST -d 'hostname1=testingplanethoster.com&address1=192.168.0.1&type1=A&hostname2=testingplanethoster.com&address2=mail.testingplanethoster.com&priority3=0&type3=MX&sld=mydomainname&tld=com&api_key=XXXXX&api_user=XXXXX'
    The API replies:
    {
        "message""Successfully updated DNS record(s)",
    }
    
  6. Let's fast-forward in time a bit, about one year from now. You will want to renew your domain for, let's say, 2 years. Here's the query that will let us do that.

    curl -XPOST -d 'sld=testingplanethoster&tld=com&period=2&api_key=XXXXX&api_user=XXXXX' 'https://api.planethoster.net/reseller-api/renew-domain'
    The API replies:
    {
        "message""Domain renewal order created successfully",
        "order_id""1212"
        "order_total""160.00"
    }
    

    This should cover the basics of API usage. There are however several other methods available which cover a variety of operations. I suggest you read their documentation pages to have a better idea of what our API can do for you.

Golang library for API

Go (often referred to as golang) is an open source programming language created at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. It is a compiled, statically typed language in the tradition of Algol and C, with garbage collection, limited structural typing, memory safety features and CSP-style concurrent programming features added.

Exemple main.go:

package main

import (
	"log"
	"github.com/PlanetHoster/api_Golang/phapi"
)

const (
	APIKEY  = "mykey"
	APIUSER = "myuser"
)

func main() {
	sld := "exemple"
	tld := "com"
	//Aucune validation n'est faite à ce point
	api := phapi.New(APIKEY, APIUSER)

	//Vérifie si la connexion est valide
	if err := api.Test(); err != nil {
		log.Fatalln("Erreur de connexion", err)
	} else {
		log.Println("Connexion réussi")
	}

	//Retrouve les informations de votre compte revendeur
	log.Println(api.AccountInfo())

	//Vérifie la disponibiltié d'un domain
	log.Println(api.DomainAvailable(sld, tld))

	//Plus d'information sur un domaine
	log.Println(api.DomainInfo(sld, tld))

	//Retourne les informations du WHOIS du domaine
	log.Println(api.Whois(sld, tld))

	//Retourne les nameservers du domaine
	log.Println(api.Nameservers(sld, tld))

	//Si les DNS sont avec PlanetHoster, les retournes
	log.Println(api.DNSRecords(sld, tld))

	//Listes toutes les extensions disponibles
	log.Println(api.TLDPrices())

	//Enregistre un domaine (commenté pour éviter les erreurs)

	/*	domain := phapi.NewDomainData(&phapi.ContactDomain{
			FirstName:   "Gabriel",
			LastName:    "PlanetHoster",
			Email:       "test@monmail.com",
			CompanyName: "",
			Address1:    "123 Chemin des Planètes",
			Address2:    "",
			City:        "Paris",
			PostalCode:  "1234567",
			State:       "Paris",
			CountryCode: "FR",
			Phone:       "0176604143",
		}, "nsa.planethoster.net", "nsb.planethoster.net")
		domain.NS3 = "nsc.planethoster.net"
		fmt.Println(api.RegisterDomain(sld, tld, 1, domain))
	*/
}

Glossary of Terms

    • TLD: Top-level domain, such as '.com', '.ca', '.fr', '.co.uk', etc.
    • SLD: Domain name without the TLD, such as 'google', 'example', 'mydomain', etc.
    • Domain name registry operator: Often just called "registries", these are the organizations that are responsible for maintaining administrative data and managing registration of domain names for the TLDs in which they are responsible
    • Domain name registrar: Often just called "registrars", these are organizations that let customers register, renew and transfer and manage domain names for various TLDs. PlanetHoster is a domain name registrar.
    • Domain name reseller: These are organizations that use other domain name registrars (instead of the registries directly) for their domain registrations, renewals, transfers and management. They buy domains from registrars, then resell them to their customers.
    • Premium domains: These are domains that are deemed by registries to be more valuable, and thus are more costly for registration, renewal and transfer.
    • EPP Code: Also called "Auth Info", this is the secret code that is needed in order to transfer your domain to another domain name registrar. Not all TLDs require EPP codes for domain name transfer, but most do.
    • WHOIS: WHOIS data is the data that is publicly available to anyone after domain name registration. It includes the registrant's name, email, physical address, the domain name registrar, etc.
    • ID Protection: Also called WHOIS ID Protection, or similar, this is a service that you can order from a domain name registrar that replaces your WHOIS information with other valid information, generally to avoid spam.
    • Nameserver: Nameservers are associated with a domain name at the registry level, and they tell the DNS (Domain Name System) which DNS server to use to lookup the IP address(es) your domain name is associated with, among other information.
    • DNS Zone: A DNS Zone is created on the nameserver(s) for your domain to tell DNS clients that lookup your domain (such as a web browser) to use that nameserver as the authority for where to find the IP address(es) your domain name is associated with, among other information.
    • Domain name transfer request: Once a domain name transfer order is made with PlanetHoster, the domain's registrant must approve the transfer by checking their email they gave as their 'Registrant Email' and following the steps in the email. Once this is done, a transfer request is sent from PlanetHoster to the proper registry. The request is not approved at the registry right away, it can take up to 5 days to be approved or denied.
    • Domain lock: Domain names that are locked cannot be transferred to another registrar. This is mainly a security precaution for the registrant, so that no one tries to transfer their domain to another registrar out from under them. Before a transfer is made, the domain must be unlocked at the domain's current registrar.

Additional fields/TLD

Certain TLDs require additional fields to be sent to the API upon domain name registration. The field names are meant to be URL-encoded, along with the field values. For instance, if registering a domain name with a TLD of .us, the field 'Nexus Category' with the value of 'C11':

/register-domain?addtl_fields[Nexus Category]=C11
becomes:
/register-domain?addtl_fields[Nexus&20Category]=C11
== .us ==

* Field Name: "Nexus Category"
    - Type: Choice
    - Valid Values: "C11", "C12", "C21", "C31", "C32"
    - Value Descriptions: see https://www.a2hosting.com/kb/getting-started-guide/registering-a-domain1/nexus-codes-and-us-domain-registration
    - Required: False

* Field Name: "Nexus Country"
    - Type: Text
    - Required: True

* Field Name: "Application Purpose"
    - Type: Choice
    - Valid Values: "Business use for profit", "Non-profit business", "Club", "Association", "Religious Organization", "Personal Use", "Educational purposes", "Government purposes"
    - Required: False

== .co.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

* Field Name: "WHOIS Opt-out"
    - Type: Boolean
    - Valid Values: '1', ''

== .net.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== .org.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== me.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== .plc.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== .ltd.uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== .uk ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "IND", "FIND", "LTD", "PLC", "PTNR", "LLP", "STRA", "RCHAR", "IP", "SCH", "FOTHER", "GOV", "CRC", "STAT", "OTHER", "FOTHER", "FCORP"
    - Value Descriptions: "UK Individual", "Non-UK Individual (representing self)", "UK Limited Company", "UK Public Limited Company", "UK Partnership", "UK LLP", "UK Sole Trader", "UK Registered Charity", "UK Industrial/Provident Registered Company", "UK School", "Other Foreign", "UK Government Body", "UK Corporation by Royal Charter", "UK Statutory Body", "UK Entity (other)", "Non-UK Organization (other)", "Non-UK Corporation"
    - Required: False

* Field Name: "Company ID Number"
    - Type: Text
    - Required: False

* Field Name: "Registrant Name"
    - Type: Text
    - Required: True

== .ca ==

* Field Name: "Legal Type"
    - Type: Choice
    - Valid Values: "CCO", "CCT", "RES", "GOV", "EDU", "ASS", "HOP", "PRT", "TDM", "TRD", "PLT", "LAM", "TRS", "ABO", "INB", "LGR", "OMK", "MAJ"
    - Value Descriptions: "Corporation (Canada or Canadian province or territory)", "Canadian citizen", "Permanent Resident of Canada", "Government or government entity in Canada", "Canadian Educational institution", "Canadian Unincorporated Association", "Canadian Hospital", "Partnership Registered in Canada", "Trade-mark registered in Canada (by a non-Canadian owner)", "Canadian Trade union", "Canadian Political party", "Canadian Library Archive or Museum", "Trust established in Canada", "Aboriginal Peoples (individuals or groups) indigenous to Canada", "Indian Band recognized by the Indian Act of Canada", "Legal Representative of a Canadian Citizen or Permanent Resident", "Official mark registered in Canada", "Her Majesty the Queen"
    - Description: Legal type of registrant contact
    - Required: False

* Field Name: "CIRA Agreement"
    - Type: Boolean
    - Valid Values: '1', ''
    - Description: Tick to confirm you agree to the CIRA Registration Agreement shown below
English version
Version française
- Required: True * Field Name: "WHOIS Opt-out" - Type: Boolean - Valid Values: '1', '' - Description: Tick to hide your contact information in CIRA WHOIS (only available to individuals) == .quebec == * Field Name: "Intended use" - Type: Text - Required: True * Field Name: "Variants" - Type: Text - Required: False == .es == * Field Name: "ID Form Type" - Type: Choice - Valid Values: "0", "1", "3" - Value Descriptions: "Generic ID", "VAT ID", "Resident alien ID" - Required: False * Field Name: "ID Form Number" - Type: Text - Required: True * Field Name: "Legal Form" - Type: Choice - Valid Values: "1", "39", "47", "59", "68", "124", "150", "152", "164", "181", "197", "203", "229", "269", "286", "365", "434", "436", "439", "476", "510", "524", "525", "554", "560", "562", "566", "608", "612", "713", "717", "744", "745", "746", "747", "877", "878", "879" - Value Descriptions: "Individual", "Economic Interest Group", "Association", "Sports Association", "Professional Association", "Savings Bank", "Community Property", "Community of Owners", "Order or Religious Institution", "Consulate", "Public Law Association", "Embassy", "Local Authority", "Sports Federation", "Foundation", "Mutual Insurance Company", "Regional Government Body", "Central Government Body", "Political Party", "Trade Union", "Farm Partnership", "Public Limited Company", "Sports Association", "Civil Society", "General Partnership", "General and Limited Partnership", "Cooperative", "Worker-owned Company", "Limited Company", "Spanish Office", "Temporary Alliance of Enterprises", "Worker-owned Limited Company", "Regional Public Entity", "National Public Entity", "Local Public Entity", "Others", "Designation of Origin Supervisory Council", "Entity Managing Natural Areas" - Required: True * Field Name: "Admin Id" - Type: Text - Required: True * Field Name: "Admin Id Type" - Type: Choice - Valid Values: "0", "1", "3" - Value Descriptions: "Generic ID", "National Identity", "Resident alien ID" - Required: True * Field Name: "Terms and Conditions" - Type: Choice - Valid Values: "", "1" - Value Descriptions: "Please Select", "I agree to the terms and conditions" - Required: True == .sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .com.sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .edu.sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .net.sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .org.sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .per.sg == * Field Name: "RCB Singapore ID" - Type: Text - Description: RCB/Singapore ID - Required: True * Field Name: "Registrant Type" - Type: Choice - Valid Values: "Individual", "Organisation" - Required: False == .tel == * Field Name: "Legal Type" - Type: Choice - Valid Values: "Natural Person", "Legal Person" - Required: False * Field Name: "WHOIS Opt-out" - Type: Boolean - Valid Values: '1', '' == .it == * Field Name: "Type of Registrant Entity" - Type: Choice - Valid Values: "1", "2", "3", "4", "5", "6", "7" - Value Descriptions: "Italian and foreign natural persons", "Companies/one man companies", "Freelance workers/professionals", "non-profit organizations", "public organizations", "other subjects", "non natural foreigners" - Description: Legal type of registrant - Required: False * Field Name: "Tax ID" - Type: Text - Required: True * Field Name: "Publish Personal Data" - Type: Boolean - Valid Values: '1', '' * Field Name: "Accept Section 3 of .IT registrar contract" - Type: Boolean - Valid Values: '1', '' * Field Name: "Consent for Processing of Information" - Type: Boolean - Valid Values: '1', '' * Field Name: "Consent for Dissemination and Accessibility via the Internet" - Type: Boolean - Valid Values: '1', '' * Field Name: "Explicit Acceptance of Registry Terms" - Type: Boolean - Valid Values: '1', '' == .de == * Field Name: "Tax ID" - Type: Text - Required: True * Field Name: "Address Confirmation" - Type: Boolean - Valid Values: '1', '' - Description: Please tick to confirm you have a valid German address == .com.au == * Field Name: "Registrant Name" - Type: Text - Required: True * Field Name: "Registrant ID" - Type: Text - Required: True * Field Name: "Registrant ID Type" - Type: Choice - Valid Values: "ABN", "ACN", "Business Registration Number" - Required: False * Field Name: "Eligibility Name" - Type: Text - Required: False * Field Name: "Eligibility ID" - Type: Text - Required: False * Field Name: "Eligibility ID Type" - Type: Choice - Valid Values: "Australian Company Number (ACN)", "ACT Business Number", "NSW Business Number", "NT Business Number", "QLD Business Number", "SA Business Number", "TAS Business Number", "VIC Business Number", "WA Business Number", "Trademark (TM)", "Other - Used to record an Incorporated Association number", "Australian Business Number (ABN)" - Required: False * Field Name: "Eligibility Type" - Type: Choice - Valid Values: "Charity", "Citizen/Resident", "Club", "Commercial Statutory Body", "Company", "Incorporated Association", "Industry Body", "Non-profit Organisation", "Other", "Partnership", "Pending TM Owner ", "Political Party", "Registered Business", "Religious/Church Group", "Sole Trader", "Trade Union", "Trademark Owner", "Child Care Centre", "Government School", "Higher Education Institution", "National Body", "Non-Government School", "Pre-school", "Research Organisation", "Training Organisation" - Required: False * Field Name: "Eligibility Reason" - Type: Choice - Valid Values: "Domain name is an Exact Match Abbreviation or Acronym of your Entity or Trading Name.", "Close and substantial connection between the domain name and the operations of your Entity." == .net.au == * Field Name: "Registrant Name" - Type: Text - Required: True * Field Name: "Registrant ID" - Type: Text - Required: True * Field Name: "Registrant ID Type" - Type: Choice - Valid Values: "ABN", "ACN", "Business Registration Number" - Required: False * Field Name: "Eligibility Name" - Type: Text - Required: False * Field Name: "Eligibility ID" - Type: Text - Required: False * Field Name: "Eligibility ID Type" - Type: Choice - Valid Values: "Australian Company Number (ACN)", "ACT Business Number", "NSW Business Number", "NT Business Number", "QLD Business Number", "SA Business Number", "TAS Business Number", "VIC Business Number", "WA Business Number", "Trademark (TM)", "Other - Used to record an Incorporated Association number", "Australian Business Number (ABN)" - Required: False * Field Name: "Eligibility Type" - Type: Choice - Valid Values: "Charity", "Citizen/Resident", "Club", "Commercial Statutory Body", "Company", "Incorporated Association", "Industry Body", "Non-profit Organisation", "Other", "Partnership", "Pending TM Owner ", "Political Party", "Registered Business", "Religious/Church Group", "Sole Trader", "Trade Union", "Trademark Owner", "Child Care Centre", "Government School", "Higher Education Institution", "National Body", "Non-Government School", "Pre-school", "Research Organisation", "Training Organisation" - Required: False * Field Name: "Eligibility Reason" - Type: Choice - Valid Values: "Domain name is an Exact Match Abbreviation or Acronym of your Entity or Trading Name.", "Close and substantial connection between the domain name and the operations of your Entity." == .org.au == * Field Name: "Registrant Name" - Type: Text - Required: True * Field Name: "Registrant ID" - Type: Text - Required: True * Field Name: "Registrant ID Type" - Type: Choice - Valid Values: "ABN", "ACN", "Business Registration Number" - Required: False * Field Name: "Eligibility Name" - Type: Text - Required: False * Field Name: "Eligibility ID" - Type: Text - Required: False * Field Name: "Eligibility ID Type" - Type: Choice - Valid Values: "Australian Company Number (ACN)", "ACT Business Number", "NSW Business Number", "NT Business Number", "QLD Business Number", "SA Business Number", "TAS Business Number", "VIC Business Number", "WA Business Number", "Trademark (TM)", "Other - Used to record an Incorporated Association number", "Australian Business Number (ABN)" - Required: False * Field Name: "Eligibility Type" - Type: Choice - Valid Values: "Charity", "Citizen/Resident", "Club", "Commercial Statutory Body", "Company", "Incorporated Association", "Industry Body", "Non-profit Organisation", "Other", "Partnership", "Pending TM Owner ", "Political Party", "Registered Business", "Religious/Church Group", "Sole Trader", "Trade Union", "Trademark Owner", "Child Care Centre", "Government School", "Higher Education Institution", "National Body", "Non-Government School", "Pre-school", "Research Organisation", "Training Organisation" - Required: False * Field Name: "Eligibility Reason" - Type: Choice - Valid Values: "Domain name is an Exact Match Abbreviation or Acronym of your Entity or Trading Name.", "Close and substantial connection between the domain name and the operations of your Entity." == .asn.au == * Field Name: "Registrant Name" - Type: Text - Required: True * Field Name: "Registrant ID" - Type: Text - Required: True * Field Name: "Registrant ID Type" - Type: Choice - Valid Values: "ABN", "ACN", "Business Registration Number" - Required: False * Field Name: "Eligibility Name" - Type: Text - Required: False * Field Name: "Eligibility ID" - Type: Text - Required: False * Field Name: "Eligibility ID Type" - Type: Choice - Valid Values: "Australian Company Number (ACN)", "ACT Business Number", "NSW Business Number", "NT Business Number", "QLD Business Number", "SA Business Number", "TAS Business Number", "VIC Business Number", "WA Business Number", "Trademark (TM)", "Other - Used to record an Incorporated Association number", "Australian Business Number (ABN)" - Required: False * Field Name: "Eligibility Type" - Type: Choice - Valid Values: "Charity", "Citizen/Resident", "Club", "Commercial Statutory Body", "Company", "Incorporated Association", "Industry Body", "Non-profit Organisation", "Other", "Partnership", "Pending TM Owner ", "Political Party", "Registered Business", "Religious/Church Group", "Sole Trader", "Trade Union", "Trademark Owner", "Child Care Centre", "Government School", "Higher Education Institution", "National Body", "Non-Government School", "Pre-school", "Research Organisation", "Training Organisation" - Required: False * Field Name: "Eligibility Reason" - Type: Choice - Valid Values: "Domain name is an Exact Match Abbreviation or Acronym of your Entity or Trading Name.", "Close and substantial connection between the domain name and the operations of your Entity." == .id.au == * Field Name: "Registrant Name" - Type: Text - Required: True * Field Name: "Registrant ID" - Type: Text - Required: True * Field Name: "Registrant ID Type" - Type: Choice - Valid Values: "ABN", "ACN", "Business Registration Number" - Required: False * Field Name: "Eligibility Name" - Type: Text - Required: False * Field Name: "Eligibility ID" - Type: Text - Required: False * Field Name: "Eligibility ID Type" - Type: Choice - Valid Values: "Australian Company Number (ACN)", "ACT Business Number", "NSW Business Number", "NT Business Number", "QLD Business Number", "SA Business Number", "TAS Business Number", "VIC Business Number", "WA Business Number", "Trademark (TM)", "Other - Used to record an Incorporated Association number", "Australian Business Number (ABN)" - Required: False * Field Name: "Eligibility Type" - Type: Choice - Valid Values: "Charity", "Citizen/Resident", "Club", "Commercial Statutory Body", "Company", "Incorporated Association", "Industry Body", "Non-profit Organisation", "Other", "Partnership", "Pending TM Owner ", "Political Party", "Registered Business", "Religious/Church Group", "Sole Trader", "Trade Union", "Trademark Owner", "Child Care Centre", "Government School", "Higher Education Institution", "National Body", "Non-Government School", "Pre-school", "Research Organisation", "Training Organisation" - Required: False * Field Name: "Eligibility Reason" - Type: Choice - Valid Values: "Domain name is an Exact Match Abbreviation or Acronym of your Entity or Trading Name.", "Close and substantial connection between the domain name and the operations of your Entity." == .asia == * Field Name: "Legal Type" - Type: Choice - Valid Values: "naturalPerson", "corporation", "cooperative", "partnership", "government", "politicalParty", "society", "institution" - Required: False * Field Name: "Identity Form" - Type: Choice - Valid Values: "passport", "certificate", "legislation", "societyRegistry", "politicalPartyRegistry" - Required: False * Field Name: "Identity Number" - Type: Text - Required: True == .pro == * Field Name: "Profession" - Type: Text - Description: Indicated professional association recognized by government body - Required: True == .coop == * Field Name: "Contact Name" - Type: Text - Description: A sponsor is required to register .coop domains. Please enter the information here - Required: True * Field Name: "Contact Company" - Type: Text - Required: True * Field Name: "Contact Email" - Type: Text - Required: True * Field Name: "Address 1" - Type: Text - Required: True * Field Name: "Address 2" - Type: Text - Required: False * Field Name: "City" - Type: Text - Required: True * Field Name: "State" - Type: Text - Required: False * Field Name: "ZIP Code" - Type: Text - Required: True * Field Name: "Country" - Type: Text - Description: 2 Letter Country Code - Required: True * Field Name: "Phone CC" - Type: Text - Description: Phone Country Code eg 1 for US & Canada, 44 for UK - Required: True * Field Name: "Phone" - Type: Text - Required: True == .be == * Field Name: "VATNO" - Type: Text - Description: VAT number - Required: False == .fr == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3} == .re == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3} == .pm == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3} == .tf == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3} == .wf == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3} == .yt == * Field Name: "Siren" - Type: Text - Required: False - Must Match Regular Expression: \d{3} \d{3} \d{3}

In addition to the JSON error code, errors come with a message (error parameter) and a numeric code (error_code parameter). The error message is meant to be human-readable, while the numeric codes should be used by your application.

5000 General error
5001 Network issues
5002 Internal error occured
5003 Error authenticating to our API
5004 Not authorized to access our API, or just this API method.
5005 Domain is unavailable for registration or transfer.
5006 Domain doesn't exist in our database.
5007 PlanetHoster doesn't sell this TLD.
5008 Domain is cancelled in PlanetHoster's system.
Retrouvez PlanetHoster sur Google+ et @PlanetHoster et trouvez de la lecture ici et ici TOS