Basic Structure
Response Codes
Authentication
Register Domain
Example Requests
Error Codes
Renew Domain
Example Requests
Error Codes
Check Domain
Example Requests
Error Codes
Transfer In
More Example Requests
Error Codes
Get Domain Expiry
Example Requests
Error Codes
Add Portfolio Domain
Example Requests
Error Codes
Delete Portfolio Domain
Example Requests
Error Codes
Modify Domain Keywords
Example Requests
Error Codes
Domain Info
Example Requests
Error Codes
Add Portfolio Group
Example Requests
Error Codes
Delete Portfolio Group
Example Requests
Error Codes
Edit Portfolio Group
Example Requests
Error Codes
Revenue Reports
Request Parameters
More Example Requests
Response Format
Usage Throttling
Error Codes
Unlock Domain
Request Parameters
Response Format
More Example Requests
Error Codes
Push Domain
Request Parameters
Response Format
More Example Requests
Error Codes
Set Name Servers
Request Parameters
Response Format
More Example Requests
Error Codes
Lock Domain
Request Parameters
Response Format
More Example Requests
Error Codes
Domain Auto Renew
Request Parameters
Error Codes


The Fabulous.com Client XML API Protocol Reference (this document) can be accessed at all times via the following URL:
The intent of this API is to provide a fast, flexible API to a limited set of features currently available via the Fabulous.com client admin suite. It is intended for use by customers that may wish to make a large number of changes to their account on an automated or semi-automated basis and in situations where the online interface may prove unsuitable.

As such, the API has been designed to support all the features of the client interface that are likely to be used in bulk situations. If there is a particular feature that you would like to see in the API, please contact our support department and every endeavour will be made to accommodate your request.
All XML responses via the Fabulous.com API follow a consistent format as specified by the DTD located at
http://api.fabulous.com/schema/fab.dtd


For all requests, you can easily determine the success of the transaction by looking at the well known element:
/fabulous/response/status


The Fabulous.com API has a number of success/fail codes (outlined in the "Response Codes" section below). Success is defined as status code 200.

A textual description of the transaction result follows in the "/fabulous/response/reason" field.
The response format basic template appears as follows:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "http://api.fabulous.com/schema/fab.dtd">

<fabulous>

    
<request>

        
<action>
Action performed by the request
</action>

        
<params>

            
<param name="username">
Your account username
</param>

            List of parameters supplied in the request
        
</params>

        
<requestip>
Your client IP address
</requestip>

        
<exectime>
Execution time in milliseconds
</exectime>

    
</request>

    
<response>

        
<status>
Result Status Code
</status>

        
<reason>
Explanation of status
</reason>

    
</response>

</fabulous>

Success Codes
200: Success
201: Success Push Required
202: Pending Seller Authority

Authentication Error Codes
301: User Credentials Failure
302: IP Authentication Failure
399: Undefined Authentication Failure

Request Error Codes
401: Missing Required Parameters
402: Invalid Parameter
403: Action Not Implemented
404: Secure Protocol Required
499: Undefined Request Error

Response Error Codes
501: Domain Not Available For Purchase
502: Domain Not Currently On Hold
503: Domain Already On Hold
504: Insufficent Funds For Purchase
505: Domain Not In Account
506: Domain Not Available For Transfer

507: Domain Not Pending Transfer
508: Domain Status Prohibits Operation
509: Registry Command Error

510: Domain not permitted in test api

511: Domain Already Successfully Purchased
512: Domain Transfer Already ACKed

513: Domain Not Available For Purchase
514: Domain Not Available For Purchase
515: Domain Not Available For Purchase

599: Undefined Result Error
For all requests you are required to supply the "username" parameter to identify your system to ours. We also require that you supply a c-class from which you will be making requests - these will be matched against your username to uniquely identify your transactions.

Further, requests beyond searches and availability checks will require that you communicate with our servers on a secure (https) protocol. We will also require your password via the "password" parameter. Please note that your password will not be visible to anyone as the https protocol encrypts the entire request including GET variables.

If authentication fails for any request the "/fabulous/response/status" will be a "3xx" error.
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "http://api.fabulous.com/schema/fab.dtd">

<fabulous>

    ...
    
<response>

        
<status>
302
</status>

        
<reason>
IP Authentication Failure
</reason>

    
</response>

</fabulous>


The following is a list of commands that can be performed against the API with examples:
Registers the passed domain for the specified number of years. The numyears variable is option and defaults to 1 if not supplied. Registering the domain uses the credit of the user and the default name servers from the users account.


Request:
https://api.fabulous.com/registerDomain?username=yourusername&password=PASSWORD&domain=testregisterdomain002.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
registerDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testregisterdomain002.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
55.81
</exectime>

 
</request>

 
<response>

  
<status>
599
</status>

  
<reason>
Undefined Result Error: Not Registrant
</reason>

 
</response>

</fabulous>



Request:
https://api.fabulous.com/registerDomain?username=yourusername&password=PASSWORD&domain=testrenewdomain-1265067351-1359522419.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
registerDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testrenewdomain-1265067351-1359522419.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
1550.73
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>


The following response error codes may be returned :

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
599: <Various Messages>
601: Database Connection Failure
Renews the passed domain for the number of years specified. numyears is optional and defaults to 1 if not supplied.

Request:
https://api.fabulous.com/renewDomain?username=yourusername&password=PASSWORD&domain=testrenewdomain-1265069688-1321349103.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
renewDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testrenewdomain-1265069688-1321349103.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
25454.03
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>



Request:
https://api.fabulous.com/renewDomain?username=yourusername&password=PASSWORD&domain=testrenewdomain-1265069688-1321349103.com&numyears=5


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
renewDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testrenewdomain-1265069688-1321349103.com
</param>

   
<param name="numyears">
5
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
1409.38
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>



Request:
https://api.fabulous.com/renewDomain?username=yourusername&password=PASSWORD&domain=testrenewdomain-1265069688-1321349103.com&numyears=5&numyears=10


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
renewDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testrenewdomain-1265069688-1321349103.com
</param>

   
<param name="numyears">
10
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
291.05
</exectime>

 
</request>

 
<response>

  
<status>
599
</status>

  
<reason>
Undefined Result Error: maximum registration period exceeded
</reason>

 
</response>

</fabulous>



The following response error codes may be returned :

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
599: <Various Messages>
601: Database Connection Failure
Check to see if the passed domain is available to register. Returns status 200 if the domain is available, or 501 if it is not available.


Request:
https://api.fabulous.com/checkDomain?username=yourusername&password=PASSWORD&domain=no-one-would-ever-want-this-domain-awooga12345.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
checkDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
no-one-would-ever-want-this-domain-awooga12345.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
601.43
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>



Request:
https://api.fabulous.com/checkDomain?username=yourusername&password=PASSWORD&domain=google.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
checkDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
google.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
564.38
</exectime>

 
</request>

 
<response>

  
<status>
501
</status>

  
<reason>
Domain Not Available For Purchase
</reason>

 
</response>

</fabulous>


The following response error codes may be returned :

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
501: Domain Not Available For Purchase
Initialises the transfer in of domain name. Note that this will bill your account for the transfer. If the transfer is unsuccessful, the transfer will be refunded.


Request:
https://api.fabulous.com/transferIn?username=yourusername&password=PASSWORD&domain=phpunittesting.com&authcode=1234


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
transferIn
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
phpunittesting.com
</param>

   
<param name="authcode">
1234
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
383.36
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>


The following response error codes may be returned:

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
599: <Multiple Errors>
601: Database Connection Failure
Request:
https://api.fabulous.com/getDomainExpiry?username=yourusername&password=PASSWORD&domain=testgetdomainexpiry-1265069325-1924643311.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
getDomainExpiry
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testgetdomainexpiry-1265069325-1924643311.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
23.04
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

  
<results count="1">

   
<result pos="0">
<domain>
testgetdomainexpiry-1265069325-1924643311.com
</domain>
<expirydate>
2011-02-02
</expirydate>

   
</result>

  
</results>

 
</response>

</fabulous>


The following response error codes may be returned:

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
599: Undefined Result Error
601: Database Connection Failure
Request:
https://api.fabulous.com/addPortfolioDomain?username=yourusername&password=PASSWORD&domain=phpunittesting.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
addPortfolioDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
phpunittesting.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
286.54
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>


The following response error codes may be returned:

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
599: Undefined Result Error
601: Database Connection Failure
If you wish to remove a domain name from your parking account, you can do so by making the following request:

Request:
https://api.fabulous.com/deletePortfolioDomain?username=yourusername&password=PASSWORD&domain=phpunittesting.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
deletePortfolioDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
phpunittesting.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
569.97
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>


The following response error codes may be returned:

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
599: Undefined Result Error
601: Database Connection Failure
For domain names in the Fabulous.com Premium Program, we allow a set of custom related keywords on a per-domain name basis which can be used to offer a related set of searches for end-users that may be of interest. We recommend that each domain name does not exceed 15 of these phrases as any given point in time. Also note that these values are subject to QA by Fabulous Consultants and may take up to an hour to be approved (and ultimately propagate to the domain).

To set related keywords for a domain:
Request:
https://api.fabulous.com/setDomainRelatedKeywords?username=yourusername&password=PASSWORD&domain=phpunittesting.com&relatedkeywords=word1%2Cword2


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
setDomainRelatedKeywords
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
phpunittesting.com
</param>

   
<param name="relatedkeywords">
word1,word2
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
25.11
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>



The following response error codes may be returned :

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
599: <Various Messages>
601: Database Connection Failure
Gets information about the passed domain. Returns:
  • expiry
  • nameserver
  • registrystatus
  • fabstatus



Request:
https://api.fabulous.com/domainInfo?username=yourusername&password=PASSWORD&domain=fabulous.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
domainInfo
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
fabulous.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
413.88
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

  
<results count="1">

   
<result pos="0">
<expiry>
0000-00-00
</expiry>
<nameservers count="2">
<nameserver pos="0">
ns1.fabulous.com
</nameserver>
<nameserver pos="1">
ns2.fabulous.com
</nameserver>
</nameservers>
<registrystatus>
</registrystatus>
<fabstatus>
</fabstatus>

   
</result>

  
</results>

 
</response>

</fabulous>



The following response error codes may be returned:

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
601: Database Connection Failure
The Fabulous.com system allows domain names to be assigned to a user-defined "group". Groups can be used for any purpose.

If you wish to add groups to your account, you can do so by making an "addGroup" command call to the API:



Please note that subsequent requests to use this group through the API must use the exact name that you specified when the group was created.

The parent parameter can be used if you wish to create a multi-level heirarchy of groups in your account. The parameter defaults to "base" (top-level) if none is specified.
Request:
https://api.fabulous.com/addGroup?username=yourusername&password=PASSWORD&name=newtestgroup01265020360


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
addGroup
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="name">
newtestgroup01265020360
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
280.49
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>



The following response error codes may be returned:

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
402: Cannot find parent
404: Secure Protocol Required
599: Multiple groups with this name
599: Creation failed
601: Database Connection Failure
Deletes the passed Portfolio Group name. The group must not contain subgroups or domain names. You cannot delete the default group.


Request:
https://api.fabulous.com/deleteGroup?username=yourusername&password=PASSWORD&name=newtestgroup161265020390


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
deleteGroup
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="name">
newtestgroup161265020390
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
342.02
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>



Request:
https://api.fabulous.com/deleteGroup?username=yourusername&password=PASSWORD&name=newtestgroup151265020390


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
deleteGroup
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="name">
newtestgroup151265020390
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
298.79
</exectime>

 
</request>

 
<response>

  
<status>
599
</status>

  
<reason>
Undefined Result Error: This group contains domains, please move them before deleting the group
</reason>

 
</response>

</fabulous>

The following response error codes may be returned:

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
402: Cannot find group
404: Secure Protocol Required
599: This group contains domains and sub-groups, please move them before deleting the group
599: This group contains domains, please move them before deleting the group
599: This group contains sub-groups, please move them before deleting the group
599: This is the default group, it cannot be deleted.
599: Multiple groups with this name
599: Undefined Result Error
601: Database Connection Failure
Edits the portfolio group.If the variable newname is supplied, the group is modified to the passed new name. If the newparent variable is passed, the the parent is modified.


Request:
https://api.fabulous.com/editGroup?username=yourusername&password=PASSWORD&name=newtestgroup&newname=newtestgroup_renamed


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
editGroup
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="name">
newtestgroup
</param>

   
<param name="newname">
newtestgroup_renamed
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
254.04
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>



Request:
https://api.fabulous.com/editGroup?username=yourusername&password=PASSWORD&name=newtestgroup_renamed&newparent=base


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
editGroup
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="name">
newtestgroup_renamed
</param>

   
<param name="newparent">
base
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
253.27
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>



Request:
https://api.fabulous.com/editGroup?username=yourusername&password=PASSWORD&name=newtestgroup_renamed&newparent=newtestgroupNonExistGroup


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
editGroup
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="name">
newtestgroup_renamed
</param>

   
<param name="newparent">
newtestgroupNonExistGroup
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
235.89
</exectime>

 
</request>

 
<response>

  
<status>
402
</status>

  
<reason>
Invalid Parameter: Cannot find new parent
</reason>

 
</response>

</fabulous>



The following response error codes may be returned:

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
402: Cannot find group
402: Cannot find new parent
404: Secure Protocol Required
599: Multiple groups with this name
599: Undefined Result Error
601: Database Connection Failure
You may wish to access your revenue reports from our API. There are a number of different calls you can make to access account, category, group and domain level reports.

An example revenue report request - entire account revenue by day for the last 14 days:


You must specify a date range in order to run a revenue report, the following parameters are required:
  • date: end date of the reporting range (format YYYY-mm-dd, choose today's date for "last 'numdays' days")
  • numdays: number of days over which the report shall be run


The following "reporttype" parameters are available, and indicate how the results will be grouped:
  • date: group results by date
  • domain: group results by domain
  • category: group results by category
  • group: group results by domain grouping


Optionally, you can specify how you wish results to be ordered by specifying the "orderby" parameter. The options available are:
  • uniques: sort by uniques descending
  • clicks: sort by clicks descending
  • sales: sort by sales descending
  • earnings: sort by earnings descending
  • ctr: sort by clickthrough rate descending
  • epc: sort by earnings per click descending
  • (reporttype value): if a date report, order by "date" etc


You can also supply a number of filters to your queries in order to run a report over a subset of your portfolio. The following are available:
  • filterdomain=DOMAIN: specify a report based on a single domain
  • filtercategory=CATEGORY: run a report on a specific category
  • filtergroup=GROUP: run a report on a named group in your account


Note that if more than 500 results are returned, the API limits the repsonse to the first 500 rows. If more data is available, you can supply an additional "page" parameter to access the extra data. "page=2" returns the second page, and so on. You can see how many pages are available by looking at the "pagecount" parameter in the response object.
An example result has been outlined below:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

    
<request>

        
<action>
revenueReport
</action>

        
<params>

            
<param name="username">
yourusername
</param>

            
<param name="password">
PASSWORD
</param>

            
<param name="date">
2008-03-18
</param>

            
<param name="numdays">
1
</param>

            
<param name="reporttype">
domain
</param>

            
<param name="orderby">
earnings
</param>

            
<param name="filterdomain">
diyhomerepairs.com
</param>

        
</params>

        
<requestip>
123.123.123.123
</requestip>

        
<exectime>
216.58
</exectime>

    
</request>

    
<response>

        
<status>
200
</status>

        
<reason>
Success
</reason>

        
<results count="1">

            
<result pos="0">

                
<impressions>
21
</impressions>

                
<uniques>
4
</uniques>

                
<clicks>
2
</clicks>

                
<sales>
0
</sales>

                
<earnings>
2.7
</earnings>

                
<grouping type="domain">
diyhomerepairs.com
</grouping>

            
</result>

        
</results>

    
</response>

</fabulous>

As the Revenue Reports system of Fabulous is resource intensive, the API system imposes a total execution time limit on requests received in a rolling 24 hour period. The execution time is reported in each revenueReport response as request/exectime (and is reported in ms). Once a user has exceeded 300 seconds of execution, they will receive an error 689 "Execution Time Exhausted".
The following response error codes may be returned on an Availability Check API request:

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
505: Domain Not In Account
601: Database Connection Failure
698: Execution Time Exhausted
https://api.fabulous.com/unlockDomain?username=yourusername&password=PASSWORD&domain=testunlockdom-1295418176-1.com&authcode=R[D3K7vQu;Nz}MC3


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
unlockDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testunlockdom-1295418176-1.com
</param>

   
<param name="authcode">
R[D3K7vQu;Nz}MC3
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
1000.19
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

  
<results count="1">

   
<result pos="0">
<authcode>
R[D3K7vQu;Nz}MC3
</authcode>

   
</result>

  
</results>

 
</response>

</fabulous>


Request:
https://api.fabulous.com/unlockDomain?username=yourusername&password=PASSWORD&domain=google.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
unlockDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
google.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
999.84
</exectime>

 
</request>

 
<response>

  
<status>
599
</status>

  
<reason>
Undefined Result Error: Not Registrant
</reason>

 
</response>

</fabulous>



Request:
https://api.fabulous.com/unlockDomain?username=yourusername&password=PASSWORD&domain=testunlockdom-1295417523-0.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
unlockDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testunlockdom-1295418170-0.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
1000.19
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

  
<results count="1">

   
<result pos="0">
<authcode>
sB(2kz0uKFAo@i6:
</authcode>

   
</result>

  
</results>

 
</response>

</fabulous>


The following response error codes may be returned :

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
599: Not Registrant
599: domain under executive lock
599: domain is pending sale
599: domain in redemption period
599: domain pending delete
599: domain pending transfer
https://api.fabulous.com/pushDomain?username=yourusername&password=PASSWORD&domain=testunlockdom-1295500724-0.com&tousername=t.user

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
pushDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testunlockdom-1295500724-0.com
</param>

   
<param name="tousername">
t.user
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
5289.09
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>

none at this stage
The following response error codes may be returned :

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
402: Invalid Domain
404: Secure Protocol Required
505: Domain Not In Account
599: tousername is not a valid user of the system.
599: tousername is the owner of this domain name.
599: Domain is under executive lock.
599: Undefined Result Error
https://api.fabulous.com/setNameServer?username=yourusername&password=PASSWORD&domain=testsetnameserver-1295573917-0.com&nameserverlist=ns1.darkbluesea.com,ns2.darkbluesea.com


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
setNameServer
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testsetnameserver-1295573917-0.com
</param>

   
<param name="nameserverlist">
ns1.darkbluesea.com,ns2.darkbluesea.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
4519.3
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>



Request:
https://api.fabulous.com/setNameServer?username=yourusername&password=PASSWORD&domain=testsetnameserver-1295573917-0.com&nameserverlist=ns1.fabulous.com,ns2.fabulous.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
setNameServer
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testsetnameserver-1295573917-0.com
</param>

   
<param name="nameserverlist">
ns1.fabulous.com,ns2.fabulous.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
81730.14
</exectime>

 
</request>

 
<response>

  
<status>
299
</status>

  
<reason>
Conditional Success: Same nameservers, nothing to do
</reason>

 
</response>

</fabulous>



The following response error codes may be returned :

299: Same nameservers, nothing to do
301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
402: Invalid Domain
402: nameserverlist must be comma separated list at least 1 nameserver
402: Invalid Nameserver: ns1.badns.com
404: Secure Protocol Required
505: Domain Not In Account
599: Domain is under executive lock.
599: Domain in redemption period.
599: Domain pending delete.
599: Non-existent Nameserver: ns1.badns.com
599: unable to create name server in org registry for nameserver: ns1.badns.com
599: This domain does not have permission to use fabulous.com nameservers
https://api.fabulous.com/lockDomain?username=yourusername&password=PASSWORD&domain=testlockdomain-1295826191-0.com

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
lockDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testlockdomain-1295826191-0.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
604.06
</exectime>

 
</request>

 
<response>

  
<status>
200
</status>

  
<reason>
Success
</reason>

 
</response>

</fabulous>


Request:
https://api.fabulous.com/lockDomain?username=yourusername&password=PASSWORD&domain=testlockdomain-1295827100-0.com


Response:
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE fabulous SYSTEM "https://api.fabulous.com/schema/fab.dtd">

<fabulous>

 
<request>

  
<action>
lockDomain
</action>

  
<params>

   
<param name="username">
yourusername
</param>

   
<param name="password">
PASSWORD
</param>

   
<param name="domain">
testlockdomain-1295827100-0.com
</param>

  
</params>

  
<requestip>
123.123.123.123
</requestip>

  
<exectime>
1000.23
</exectime>

 
</request>

 
<response>

  
<status>
299
</status>

  
<reason>
Conditional Success: Domain is alredy registrar-locked.
</reason>

 
</response>

</fabulous>



The following response error codes may be returned :

299: Domain is alredy registrar-locked.
301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
402: Invalid Domain
404: Secure Protocol Required
505: Domain Not In Account
599: Domain is under executive lock.
599: Domain in redemption period.
599: Domain pending delete.
You can change the auto renew setting for domain names in your account via the following API request:

The following "autorenew" options are available:
  • 0: do not auto renew this domain
  • 1: automatically renew this domain forever
The following response error codes may be returned on a Domain Auto Renew request:

301: User Credentials Failure
401: Missing Required Parameters
402: Invalid Parameter
404: Secure Protocol Required
505: Domain Not In Account
599: Domain Is Already Expiring
601: Database Connection Failure
698: Execution Time Exhausted
699: Could Not Set Auto Renew