Developers & API Documentation

Feng-GUI has an open web Application Programming Interface.
This means that you can integrate your own program with Feng-GUI services.
Feng-GUI API partners vary from digital marketing agencies through e-mail-marketing vendors to packaging design vendors.

Developing on the Feng-GUI API

Anyone can write software to do cool stuff with available Feng-GUI technology via our API.
Here's how to get started:
1. Review and agree to the API license agreement.
2. Read the API documentation below. Feel free to send us some feedback.
3. Request for an evaluation API account. email to: sales@feng-gui.com to add the 'api' role to your account
4. After you have learned how to use API, build your own application.

Roles

A Role indicates the levels of permissions a user have while operating a method.
Your account is associated with one or more Roles.
Account Roles depends on package plans and the Feng-GUI partnership level you have.
To use the API, your account must include the 'api' role.
Please contact sales@feng-gui.com and request to add the 'api' role to your account.
Your account roles may be found at Settings > Account > Roles

Authentication

Feng-GUI services required HTTP Basic authentication for all methods.
HTTPS/TLS must be used in conjunction with HTTP Basic authentication.

Storage

Files generated by an API account are deleted from our servers within 24 hours.
The files retention policy for API accounts is 24 hours.
API accounts should download the files from Feng-GUI service to their servers.


API Format

To perform an action using the API, you need to invoke a SOAP or JSON-RPC request to its endpoint specifying a method and some arguments, and will receive a formatted response.


SOAP format

The SOAP service Endpoint URL is: https://service.feng-gui.com/soap/api.asmx
SOAP service description (WSDL) is at https://service.feng-gui.com/soap/api.asmx?wsdl
SOAP service test page is: https://service.feng-gui.com/soap/api.asmx

SOAP Request

The following is a sample SOAP 1.2 request. The placeholders shown need to be replaced with actual values.
To send a request (for example, 'echo' method), send a request like this:
POST /soap/api.asmx HTTP/1.1
Host: service.feng-gui.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.feng-gui.com/echo"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <echo xmlns="http://www.feng-gui.com/">
      <value>string</value>
    </echo>
  </soap:Body>
</soap:Envelope>

SOAP Response

The following is a sample SOAP 1.2 response. The placeholders shown need to be replaced with actual values.
A request call to the echo method returns this response:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <echoResponse xmlns="http://www.feng-gui.com/">
      <echoResult>string</echoResult>
    </echoResponse>
  </soap:Body>
</soap:Envelope>


JSON format

The JSON API is based on the JSON-RPC version 1.0 specification
For more information about JSON-RPC, visit https://www.jsonrpc.org/specification_v1

The JSON service Endpoint URL is: https://service.feng-gui.com/json/api.ashx
Help page is: https://service.feng-gui.com/json/api.ashx?help
Test page is: https://service.feng-gui.com/json/api.ashx?test



JSON Request

To send a request , for example, to ImageAttention, send a request like this:
{ "InputImage" : 
"https://service.feng-gui.com/users/customer/files/images/IMAGEID.png",
"ViewType" : 0, "ViewDistance" : 0, "analysisOptions" : 0, "outputOptions" : 0}

JSON Response

A request call to the method returns the response:
{"serviceVersion":"6.0.0.0","version":"6.0.0.0",
"inputImage":"https://service.feng-gui.com/users/customer/files/images/IMAGEID.png", "outputImage":"https://service.feng-gui.com/users/customer/files/images/IMAGEID_heatmap.png",
"outputAttentionImage":"https://service.feng-gui.com/users/customer/files/images/IMAGEID_raw.png",
"hotspots":[{"x":378,"y":168},{"x":251,"y":184},{"x":562,"y":385},
{"x":60,"y":373},{"x":330,"y":182},{"x":483,"y":366},{"x":392,"y":120},
{"x":109,"y":171},{"x":105,"y":395},{"x":-1,"y":-1}]}

Error Response
If an error occurs, the following response example is returned:
{"name":"JSONRPCError","message":"error description.","errors":[{"name":"JsonRpcException","message":"error description."}]}


Javascript

You can use javascript to make JSON-RPC calls to Feng-GUI API.
The JSON-RPC service also supports HTTP GET using the syntax:
https://service.feng-gui.com/json/api.ashx/METHOD?PARAM1=VALUE1&PARAM2&VALUE2
for example https://service.feng-gui.com/json/api.ashx/echo?InputString=testString


<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Feng-GUI JSON-RPC Javascript example</title>
<script type="text/javascript" src="https://service.feng-gui.com/json/json.js"></script>
<script type="text/javascript" src="https://service.feng-gui.com/json/apiProxy.js"></script>

<script type="text/javascript">
window.onload = function()
{
  var service1 = new api('https://service.feng-gui.com/json/api.ashx', 'username', 'password');

  // echo method
  service1.echo("test string",function(response) {
    document.getElementById('log').innerHTML += '<br>echo:' + response.result;
  });

	
  // GetAccountInfo method
  service1.GetAccountInfo("username",function(response) {
    var AccountInfo = response.result;
    document.getElementById('log').innerHTML += '<br>GetAccountInfo.credit:' + AccountInfo.credit;
  });

}
</script>

</head>
<body>

  <div id="log">output:</div>

</body>


echo method

A test method which echo's all parameters back in the response.
Credit: no credit is charged when using this method.

Arguments

value (string)
   input string to echo

Response

  The response is a string with the value of the input string to echo.

ImageUpload method

Upload an image file to your account.
The file is uploaded into the root of the account folders.
Credit: one credit is charged for a successful execution.
Method applies to image analysis.

Tip: Instead of using ImageUpload method, you can upload the input image to your server and set the ImageAttention.InputImage parameter as the URL path of the image.

Arguments

FileName (String): The name of the uploaded file.
The characters allowed for FileName are - a-z A-Z 0-9
The FileName will be renamed by the service to avoid non supported characters.
FileData (String): The uploaded file encoded as base64 byte array.

Response

   The response is a string with the new file name of the uploaded file.


ImageAttention method

Feng-GUI attention analysis of an image.
Credit: one credit is charged for an image analysis.
Method applies to image analysis.

The method generates the Heatmap, Gaze plot, Opacity, AOIs and Aesthetics reports in one execution.

Input image
https://SERVICE/users/USERNAME/files/images/ImageID.png
Heatmap image report
https://SERVICE/users/USERNAME/files/images/ImageID_heatmap.png
Gaze plot report
https://SERVICE/users/USERNAME/files/images/ImageID_gazeplot.png
Focus Map Opacity report
https://SERVICE/users/USERNAME/files/images/ImageID_opacity.png
AOIs report
https://SERVICE/users/USERNAME/files/images/ImageID_aoi.png
Aesthetics report
https://SERVICE/users/USERNAME/files/images/ImageID_aes.png
Analysis information
https://SERVICE/users/USERNAME/files/images/ImageID_info.txt
Raw data report
https://SERVICE/users/USERNAME/files/images/ImageID_raw.png
Raw Visual Featurtes report
https://SERVICE/users/USERNAME/files/images/ImageID_raw_vf.png

SERVICE: Service endpoint domain name. for example service.feng-gui.com
ImageID: The relative file name of the input image or video URL including the file extension .png or .mp4
USERNAME: Your account name.

Arguments

InputImage (string)
   Full URL (http://...) path of the input image file.

ViewType (integer)
   Visual View Type sets the context of the image or video. 
   This parameter is a value from one of the following flags.
 
Name Value Description
Any 0 Default
Website 1 internet web page
Natural 2 Photo, Advertisement, Video
Package 3 Package, Shelf
Indoor 4 Indoor Signs, Signage
Outdoor 5 Billboards, Outdoor Advertising and Large Format Printing

viewDistance (integer)
   View Distance sets the viewer's distance from the image or video. 
   This parameter is a value from the following group of flags.

Name Value Description
Any 0 Default
Computer Screen 1 Laptop or Desktop computer screen.
Mobile 2 Mobile or Handheld device
Print 3 Printed media, Magazine and Newspaper
Indoor Signage 4 Indoor Signs, Signage
Package Design 5 Packaging design
Outdoor Signage 6 Outdoor Advertising, Billboards and Large Format Printing

analysisOptions (integer)
Specifies the sub algorithms used in the analysis. This parameter is a combination of accumulated flags from the following group of flags.
For example, to include all the basic visual features (63) and AnalyzeFace (128), set the analysisOptions = 63 + 128 = 191

Name Value Description
Default 0 Basic Visual Features analysis.
Extended Visual Features 15 (1+2+4+8) Extended Visual Features analysis. A collection of bottom-up and top-down cognitive features.
AnalyzeFlicker 16 Flicker analysis.
This value is effective when analyzing a series of frames in a video.
AnalyzeMotion 32 Motion analysis.
This value is effective when analyzing a series of frames in a video.
AnalyzeText 64 Add text detection to the analysis
AnalyzeFace 128 Add face detection to the analysis
AnalyzeSkin 256 Add skin hue detection to the analysis
AnalyzeFacialExpressions 512 Add facial expressions detection to the analysis

outputOptions (integer)
Specifies how the output heatmap file is generated and its content. This parameter is a combination of accumulated flags from the following group of flags.
For example, to include MergeHeatmap (1) and OutputOpacityScores (2), set the outputOptions = 1 + 2 = 3


Name Value Description
Default 0 Default output settings
MergeHeatmap 1 Should the report include a merged layer of the input image. default true
OutputOpacityScores 2 Draw scores over the opacity focus report. default false
OutputAestheticsScores 4 Draw scores over the aesthetics report. default true
DrawLegend 8 Draw map legend over heatmap and gazeplot reports . default true
DrawGazeOrder 16 obsolete. not in use
OutputOpacityWhite 32 Create Focus Map Opacity report with white overlay instead of default black overlay. default false
OutputAutoAddAOIs 64 Auto create and add AOIs to the AOIs list. default false
OutputDurationSegment1 128 Set output duration segment to 2.5 seconds. default false
OutputDurationSegment2 256 Set output duration segment to 5 seconds. default true
OutputDurationSegment3 512 Set output duration segment to 7.5 seconds. default false

Response

The response is a HeatmapInfo struct.
HeatmapInfo struct properties
struct HeatmapInfo
{
 string ServiceVersion;
 string Version;
 // ImageID - unique id of the image/video part of the OutputImage 
 string ImageID;
 // InputImage - input image/video to analyze
 string InputImage;
 string OutputImage;
 string OutputAttentionImage;
 int AnalysisResult;

 // the Analysis Options of this analysis
 int AnalysisOptions;
 int OutputOptions;
 int ViewDistanceOptions;
 int ViewTypeOptions;

 bool FaceDetected;
 bool TextDetected;
  
 int Complexity;
 int Clear;
 int Exciting;
 int Balance;
 int Focus;

 FGPoint[] Hotspots;
 ImageAnnotation[] AOIs;
 FaceData[] Faces;
}

struct FGPoint
{
 int x;
 int y;
 int maxValue;
}

struct ImageAnnotation
{
 //////////////////////////////
 // AOIs members
 //
 string id;
 string text;

 string shape;
 string color;
 int StartTime;
 int EndTime;

 string units;
 double top;
 double left;
 double width;
 double height;

 // AOI value
 int VisibilityScore;

 // fixations members
 int TimeToFirstFixation;
 int FixationsBefore;
 int FixationLength;
 int FixationCount;

 // members
 int intensity;
 int orientation;
 int colorRedGreen;
 int colorBlueYellow;
}

struct FaceData
{
 int top;
 int left;
 int width;
 int height;

 // major emotion
 string emotion;
 // confidence of major emotion
 float confidence;

 // emotions confidence
 float neutral;
 float happy;
 float surprise;
 float sad;
 float anger;
 float disgust;
 float fear;
 float contempt;
}



SetImageAOIs method

Set the AOIs data of an image.
Credit: no credit is charged when using this method.
Method applies to image analysis.

Arguments

ImageID (String): The relative file name of the original image or video URL including the file extension .png or .mp4
   for example, the image id of the following URL is /folder/uuid.png
   https://service.feng-gui.com/users/USERNAME/files/images/folder/uuid.png
AOIs (String)
   JSON format string of the AOIs regions.

Example

To generate an AOIs report:
1. Call ImageAttention method with the URL of the image located on your server.
2. From ImageAttention response, extract the newly created ImageID from the OutputImage URL
Here is an example of OutputImage URL
https://service.feng-gui.com/users/USERNAME/files/images/uuid_heatmap.png
The ImageID is uuid.png

3. Use this ImageID and a JSON AOIs string to call SetImageAOIs(string ImageID, string AOIs)
Here is an example of an AOIs string

AOIs = '[{"units":"pixels","top":36,"left":75,"width":40,"height":40,"text":"face","id":"uuid1"},
{"units":"pixels","top":3,"left":220,"width":40,"height":50,"text":"product","id":"uuid2"},
{"units":"pixels","top":82,"left":14,"width":40,"height":40,"text":"face2","id":"uuid3"},
{"units":"pixels","top":0,"left":3,"width":32,"height":20,"text":"company name","id":"uuid4"},
{"units":"pixels","top":212,"left":317,"width":55,"height":23,"text":"brand name","id":"uuid5"},
{"units":"pixels","top":192,"left":221,"width":136,"height":25,"text":"tag line","id":"uuid6"}]'

4. Call ImageAttention method with the URL of the image located on Feng-GUI server. No credit is charged when analyzing images located on Feng-GUI server.
5. Download the AOIs report image with an additional timestamp parameter at the end of the URL. For example:
https://service.feng-gui.com/users/USERNAME/files/images/uuid_aoi.png + "?" + (new Date()).getTime();
The report files are http cached and if you will not add a random parameter (like timestamp) to the URL, you might receive an HTTP status "304 Not Modified"

Response

None



GetImageAOIs method

Get the AOIs data of an image.
Credit: no credit is charged when using this method.
Method applies to image analysis.

Arguments

ImageID (String): The relative file name of the original image or video URL including the file extension .png or .mp4
   for example, the image id of the following URL is /folder/uuid.png
   https://service.feng-gui.com/users/USERNAME/files/images/folder/uuid.png

Response

The response is a string with the AOIs data in JSON format.

Example SOAP Response
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetImageAOIsResponse xmlns="http://www.feng-gui.com/">
      <GetImageAOIsResult>[{"id":"8809ba3e-0ef5-147a-573d-906bbc26fa14","text":"aoi1","units":"pixels","top":72.0,"left":145.0,"width":36.0,"height":36.0,"VisibilityScore":25,"TimeToFirstFixation":0,"FixationsBefore":0,"FixationLength":0,"FixationCount":0,"intensity":0,"orientation":0,"colorRedGreen":0,"colorBlueYellow":0}]
</GetImageAOIsResult>
    </GetImageAOIsResponse>
  </soap:Body>
</soap:Envelope>

Scaled AOI values
AOI values can be scaled to several units: 'pixels', 'percent' and '384x256' (deprecated)
Scaling AOI units to '384x256' is deprecated. You should specify the exact pixels position, by set the units as 'pixels'




WebsiteCapture method

Capture a Website as an image and upload the image file to your account.
The file is uploaded into the root of the account folders.
Credit: one credit is charged for a successful execution.

Tip: Instead of using ImageUpload method, you can upload the input image to your server and set the ImageAttention.InputImage parameter as the URL path of the image.



CreateReport method

Create a pdf report.
Credit: no credit is charged when using this method.
Method applies to image analysis only.

Arguments

ImageID (String): The relative file name of the image or video including file extension .png or .mp4
ReportTemplate (String): Report template file name. default:'template.mdddl'
parameters (String): extra query string parameters sent to the report. default:''.
This field is for internal use only and should not be used in your code.

Response

   The response is a string with the URL of the report pdf file.



VideoUpload method

Upload a video file to your account.
The file is uploaded into the root of the account folders.
Credit: one credit is charged for every 10 seconds of video.
Method applies to video analysis only.

Arguments

FileName (String): The name of the uploaded file.
The characters allowed for FileName are - a-z A-Z 0-9
The FileName will be renamed by the service to avoid non supported characters.
FileData (String): The uploaded file encoded as base64 byte array.

Response

   The response is a string with the new file name of the uploaded file.
Tip: Instead of using VideoUpload method, you can upload the input video to your server and set the VideoAttention.InputVideo parameter as the URL path of the video.


VideoAttention method

Feng-GUI attention analysis of a video.
Credit: one credit is charged for every 10 seconds of video.
Method applies to video analysis.

The method generates the Heatmap, Gaze plot and Opacity video reports in one execution.

Input video
http://SERVICE/users/USERNAME/files/images/ImageID.mp4
Heatmap video report
http://SERVICE/users/USERNAME/files/images/ImageID_heatmap.mp4
Gazeplot video report in Bee Swarm style
http://SERVICE/users/USERNAME/files/images/ImageID_gazeplot.mp4
Opacity video report
http://SERVICE/users/USERNAME/files/images/ImageID_opacity.mp4
Gaze Data fixations file
http://SERVICE/users/USERNAME/files/images/ImageID_gazedata.csv

Arguments

VideoAttention arguments are exactly the same as those passed to ImageAttention

Remarks
Video analysis can take a few minutes to finish, and the response is asynchronous.
To check if the analysis is done, poll the service status every minute and specify the analyzed resource using the GetServiceStatus method.



GetAccountInfo method

Get profile properties, credit and usage information of your account id.
Credit: no credit is charged when using this method.
Method applies to user account.

Arguments

AccountID (String): The user name in Feng-GUI system.

Response

The response is an AccountInfo struct.
AccountInfo struct
UserName   String. The account user name.
Password   String. Password. Masked. This field is for internal use only and should not be used in your code.
Email   String. The account email address
Roles   String. guest, customer, evaluation, test, api, readonly, annual, video.
Status   Integer. Account status. Disabled (0), Enabled (1), Affiliate(2).
Used   Integer. DEPRECATED. How many credits used by this user.
Credit   Integer. How many credits available from valid plans and shared plans.
Service   String. Service end point host address.
DateAdd   String. Date account was created.
FirstName   String.
LastName   String.
Address   String.
City   String.
ZipCode   String.
Country   String.
Company   String.
Storage   Integer. INTERNAL. This field is for internal use only and should not be used in your code.
Mailing   Integer. Mailing options. INTERNAL. This field is for internal use only and should not be used in your code.
Affiliate   String. Referring Affiliate Code.

Example JSON response
{"id":1,"result":{"userName":"test","password":"password","email":"test@feng-gui.com",
"roles":"customer,annual,api,readonly","status":1,
"used":0,"credit":698,"service":"https://service.feng-gui.com",
"dateAdd":"2010-03-13 16:15:34","firstName":"test","lastName":"surename",
"address":"","city":"","zipCode":"","country":"","company":"","storage":0,"mailing":0}}



GetAccountCredits method

Get details about valid credit plans.
Credit: no credit is charged when using this method.
Method applies to user account.

Arguments

None.

Response

The response is an AccountCredits struct.
AccountCredits struct
Credits   AccountCredit[]. List of AccountCredit purchased and shared.
UsedCredit   Integer. Sum of used credits in active plans.
RemainCredit   Integer. Sum of valid credits left in active plans.

AccountCredit struct
CreditID   Integer.
UserName   String.
Price   Integer.
Credit   Integer.
Used   Integer. Used credits from this credit package plan
Expire   Integer. Expire Hours added to DateAdd
TXN   String. Transaction number
InvoiceID   String. Finance invoice id
DateAdd   String. Date and Time of purchase
Affiliate   String. affiliate code used in this transaction

Example JSON response
{"credits":[{"creditID":8282,"userName":"customer","price":0,"credit":10,"used":10,"expire":768,"tXN":"EVAL190501","invoiceID":"NA","dateAdd":"2019-05-29 18:44:42","affiliate":""},
{"creditID":20,"userName":"customer","price":0,"credit":300,"used":1150,"expire":2000,"tXN":"NA","invoiceID":"NA","dateAdd":"2019-04-19 07:18:42","affiliate":""},
{"creditID":1,"userName":"customer","price":0,"credit":250,"used":250,"expire":1000,"tXN":"NA","invoiceID":"NA","dateAdd":"2019-03-20 04:07:36","affiliate":""}],
"usedCredit":410,"remainCredit":150}



GetAccountUsage method

Get account usage for the recent 100 actions.
Credit: no credit is charged when using this method.
Method applies to user account.

Arguments

None.

Response

The response is an array of rows.

Example JSON response
{"id":2,
"result":{"rows":[{"id":"245804","type":"2","value":"https://service.feng-gui.com/users/test1/files/images/3625b0882eac.png analyzed as 3625b0882eac.png","dateAdd":"2020-01-15 16:59:10"},
{"id":"245803","type":"5","value":"3625b0882eac.png template.mdddl","dateAdd":"2020-01-15 15:51:13"},
{"id":"245802","type":"2","value":"https://service.feng-gui.com/users/test/files/images/3625b0882eac.png analyzed as 3625b0882eac.png","dateAdd":"2020-01-15 15:50:49"},
{"id":"245801","type":"1","value":"Screen Shot 2020-01-15 at 2.45.49 PM.png saved as af564223-d56b-4ea2-8e6f-3625b0882eac.png","dateAdd":"2020-01-15 15:49:12"},
]}}

Example SOAP response
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetAccountUsageResponse xmlns="http://www.feng-gui.com/">
      <GetAccountUsageResult>
        <Rows>
          <GenericRow>
            <Id>string</Id>
            <Type>string</Type>
            <Value>string</Value>
            <DateAdd>string</DateAdd>
          </GenericRow>
          <GenericRow>
            <Id>string</Id>
            <Type>string</Type>
            <Value>string</Value>
            <DateAdd>string</DateAdd>
          </GenericRow>
        </Rows>
      </GetAccountUsageResult>
    </GetAccountUsageResponse>
  </soap:Body>
</soap:Envelope>


GetServiceStatus method

Check the status of the service.
Credit: no credit is charged when using this method.
Method applies to image and video analysis.

Use this method to check if a file is currently being analyzed.
Video analysis is done asynchronously and take at least a few minutes. Use this method to realize if the video analysis is still running.

Arguments

ImageID (String): The relative file name of the original image or video URL including the file extension .png or .mp4

Response

The response is an Integer: 0 idle, 1 busy.



GetDirectories method

Returns the names of the subdirectories in the specified directory.
Credit: no credit is charged when using this method.

Arguments

VirtualSourcePath (String): The relative path to the directory to search.
examples:
GetDirectories("/") to get the directories under root directory
GetDirectories("/dir1/") to get the directories under dir1 directory

Response

An array of the full names of the subdirectories, or an empty array if no directories are found.



GetFiles method

Returns the names of files that match the specified search pattern in the specified directory.
Credit: no credit is charged when using this method.

Arguments

VirtualSourcePath (String): The relative path to the directory to search.

Pattern (String): The search string to match against the names of files in path.

examples:
GetFiles("/", "*_thumb.png") gets all image thumbnail files under root directory
GetFiles("/dir1/", "*.mp4") gets all video files under dir1 directory

Response

An array of the full names for the files in the specified directory that match the specified search pattern, or an empty array if no files are found.




Exceptions and Error Codes

An exception that signals that a SOAP or JSON exception has occurred.
Credit: Credit is not charged for an unsuccessful transaction.

Exceptions

CaptureFailedException
   Analysis creation failed. See the exception message for more details about the failure cause.

ServiceTimeoutException
   The operation has reached timeout.
   It is most likely that you are using a very large image. Try to reduce the image dimensions and invoke the method again.

InsufficientRolePermissionsException
   Your account role has insufficient permissions to perform this operation.

InsufficientCreditException
   There is not enough credit in your account to perform this operation.
   When you ran out of credits, you cannot upload or analyze new images.
   When package expires, you cannot analyze an existing image.

ConsecutiveLoginFailuresException
   To prevent hackers from brute force login, an account will be disabled for 10 minutes after 3 consecutive login failures.
   The API Throws the ConsecutiveLoginFailuresException exception and the service return HTTP error "503 Service Temporarily Unavailable" error.

FilesOperationException
   File and directory operation errors.
   See the exception message for more details about the failure cause.

Error Codes


96: Login failed
   The login details passed were invalid.

97: User not logged in
  The method requires user authentication but the user was not logged in.

98 Insufficient Role permissions
   The authenticated user did not have the required Role permissions.

105: Service currently unavailable
   The requested service is temporarily unavailable.

112: Method "method name" not found
   The requested method was not found.

115: Invalid XML-RPC Method Call
   The XML-RPC request document could not be parsed.

116: Capture web page or image failed
   The request has failed to retrieve the image file or the webpage.