• Tools
Tools
  • Tools
loading...
No Results
  • ActiveCampaign
  • AirDroid Business
    • Index
    • Clear app data and cache
    • Create a group
    • Delete groups
    • Disable lost mode
    • Error codes
    • Enable lost mode
    • Field reference
    • Get average screen time
    • Get account activities
    • Get a group
    • Get a group id by group name
    • Get a device by name
    • Get a device app by name
    • Get an activity log
    • Get all devices
    • Get all device apps
    • Get all devices with filter
    • Get device info push
    • Get device location report
    • Get device network connection history
    • Get device application usage duration
    • Get device application report
    • Get device online status report
    • Get device remote access report
    • Get data usage overview and trends
    • Get tag ids by tag names
    • Get top 10 apps by usage duration
    • Get top 10 data usage apps
    • Lock a device
    • Move devices to a group
    • Open app to foreground
    • Power off a device
    • Reboot device
    • Remote operation
    • Set tags
    • Turn off device screen
    • Unenroll a device
    • Update a device name
    • Update a device remark
    • Update a group name
    • Update a group remark
  • Asana
  • AWS-S3
  • AWS Lambda
  • Appstore
  • BambooHR
  • Bitbucket
  • Brevo
  • Coda
  • Code
  • ConvertKit
  • CSV
  • Crypto
  • Clockify
  • Data Shaping
  • Date & Time
  • Delay
  • DingTalk
  • Discourse
  • Discord
  • Dropbox
  • Elastic Security
  • FeiShu
  • Freshdesk
  • Freshservice
  • Freshworks CRM
  • Gerrit
  • Gitlab
  • Github
  • Grafana
  • Google Ads
  • Google Docs
  • Google Drive
  • Google Gmail
  • Google Sheets
  • Google Analytics
  • Google Calendar
  • Google Developer
  • Harvest
  • HaloPSA
  • Hacker News
  • Hubspot
  • Help Scout
  • Intercom
  • Jira
  • Jenkins
  • Kafka
  • Lemlist
  • MySQL
  • Monday
  • Metabase
  • MailChimp
  • Microsoft Excel
  • Microsoft Outlook
  • Notion
  • Nextcloud
  • Odoo
  • Ortto
  • Okta
  • PayPal
  • Paddle
  • Pipedrive
  • PostHog
  • PostgreSQL
  • Qdrant
  • QRCode
  • QuickBooks
  • Redis
  • Stripe
  • Splunk
  • Shopify
  • Segment
  • ServiceNow
  • Search&Crawl
  • Text
  • Trello
  • Twilio
  • Todoist
  • Wikipedia
  • WordPress
  • WooCommerce
  • Xml
  • YouTube
  • Zulip
  • Zoom
  • Zendesk
  • Zammad
  • Zoho CRM
Home > Tools > AirDroid Business

Error codes

This document aggregates all error codes that AirDroid Business tools may return, along with handling recommendations.

1. Error Code Overview

AirDroid Business uses a three-tier StatusCode strategy. All tools return one of the following three values:

StatusCode Category Description Retryable
-1 Parameter Error Input parameter validation failed (local validation, before HTTP request) No
200 Success / Business Error HTTP request succeeded; check ErrorMessage to determine actual result No
500 Network / Request Exception Timeout, connection failure, DNS error, or unexpected exception Yes (cautiously)

Key Rule: StatusCode == 200 does NOT always mean success. You must check ErrorMessage — empty string means success, non-empty means business error (including upstream HTTP errors like 401/403/404).

2. Detailed Error Descriptions

2.1 StatusCode: -1 — Parameter Validation Error

Description: Local parameter validation failed before sending the request to the API. The HTTP request was never made.

Common Causes (refer to actual ErrorMessage):

Cause Description Fix Suggestion
Missing required parameter Required parameter not provided Check and add required parameters
Invalid parameter format Format doesn't match expectations Check parameter format (e.g., JSON array for SelectedColumns)
Value out of range Value exceeds allowed range Adjust value (e.g., PageSize must be 1-50)
Invalid enum value Value not in allowed set Check enum value list in the specific Action doc
Invalid access_token Token is empty or malformed Check credential configuration

Example Response:

{
  "StatusCode": -1,
  "ErrorMessage": "device_id is required"
}

Agent Self-Healing Strategy:

  • Do NOT retry — fix the parameters and call again
  • Parse ErrorMessage for hints on which parameter is wrong

2.2 StatusCode: 200 — Success or Business Error

Description: The HTTP request completed. Check ErrorMessage to determine the actual result.

Success Criteria: StatusCode == 200 AND ErrorMessage == ""

Example Success Response:

{
  "StatusCode": 200,
  "ErrorMessage": "",
  "Devices": [...]
}

Example Business Error Responses:

When the upstream API returns an error, StatusCode remains 200 but ErrorMessage contains the error detail:

{
  "StatusCode": 200,
  "ErrorMessage": "API returned error: Device not found"
}
{
  "StatusCode": 200,
  "ErrorMessage": "API returned HTTP 401: {\"code\":0,\"msg\":\"Unauthorized\"}"
}
{
  "StatusCode": 200,
  "ErrorMessage": "API returned HTTP 403: {\"code\":0,\"msg\":\"Permission denied\"}"
}

Common ErrorMessage Patterns:

ErrorMessage Pattern Root Cause Fix Suggestion
API returned error: ... Business logic error (e.g., device not found, group name already exists) Parse the message and fix the request
API returned HTTP 401: ... Token expired or invalid Refresh credential and retry
API returned HTTP 403: ... Insufficient permissions Check account permissions
API returned HTTP 404: ... Resource not found Verify the resource ID is correct
API returned HTTP 429: ... Rate limit exceeded Wait and reduce request frequency
Invalid keyword field ... Unsupported Keyword filter field Refer to Field Reference for supported fields
Device is offline Device not reachable Wait for device to come online

Agent Self-Healing Strategy:

  • If ErrorMessage is empty → success, process the result
  • If ErrorMessage contains HTTP 401 → refresh credentials and retry
  • If ErrorMessage contains HTTP 429 → wait 60 seconds and retry
  • Otherwise → do NOT retry, parse the message and take corrective action

2.3 StatusCode: 500 — Network / Request Exception

Description: A network-level or system-level error occurred. The request may not have reached the server, or the response could not be parsed.

Common Causes:

Cause Description Fix Suggestion
Request timeout No response within 60 seconds Retry; if persistent, reduce request scope
Connection failure Cannot connect to server Check network connectivity
DNS resolution failure Cannot resolve hostname Check DNS configuration
Unexpected exception Code-level error during execution Report to technical support

Example Responses:

{
  "StatusCode": 500,
  "ErrorMessage": "Request timeout after 60 seconds."
}
{
  "StatusCode": 500,
  "ErrorMessage": "Request error: ConnectionError"
}
{
  "StatusCode": 500,
  "ErrorMessage": "Unexpected error: ..."
}

Agent Self-Healing Strategy:

  • May retry 1-2 times (5-second interval)
  • If failure persists, log the error and stop retrying
  • For timeout errors, try reducing request scope (e.g., fewer SelectedColumns, smaller PageSize)

3. Agent Self-Healing Decision Table

StatusCode ErrorMessage Auto Retry Retry Strategy Manual Intervention
-1 (any) No - Fix parameters and retry
200 "" (empty) - - Success, no action needed
200 Contains HTTP 401 Conditional Refresh credentials, then retry Re-authorize if refresh fails
200 Contains HTTP 429 Yes Wait 60 seconds, then retry Reduce request frequency
200 Other non-empty No - Parse message and fix
500 (any) Conditional Max 2 retries, 5s interval Report if persistent

4. Error Handling Best Practices

4.1 Error Response Parsing

def handle_response(response):
    status_code = response.get("StatusCode", 500)
    error_msg = response.get("ErrorMessage", "")

    if status_code == 200 and not error_msg:
        return response

    if status_code == -1:
        raise ValidationError(error_msg)

    if status_code == 500:
        # Network error — may retry 1-2 times
        raise NetworkError(error_msg)

    if status_code == 200 and error_msg:
        if "HTTP 401" in error_msg:
            # Refresh token and retry
            pass
        elif "HTTP 429" in error_msg:
            # Wait and retry
            pass
        else:
            # Business error — do not retry
            raise BusinessError(error_msg)

4.2 Logging Recommendations

When an error occurs, log the following information:

  • StatusCode — error code (-1, 200, or 500)
  • ErrorMessage — error description
  • Request parameters (sanitized)
  • Timestamp
  • Action name

5. Operation-Specific Error Codes

5.1 Async Operation Progress Values

For async operations (Reboot, Lock, Lost Mode, etc.), use Get an Activity Log to track status:

Progress Meaning Agent Action
Executing Command queued or executing on device Continue polling (5-10s interval)
Success Operation completed successfully Task complete
Failure Operation failed Check FailReason field
Overridden Superseded by a newer command No action needed

5.2 Common FailReason Values

FailReason Meaning Resolution
Device offline Device was offline when command arrived Wait for device to come online
Permission denied Insufficient device-level permissions Check device permissions
Operation timeout Device did not respond in time Retry the operation
Command rejected Device rejected the command Check device configuration

6. FAQ

Q1: Why is my Keyword filter not working?

Possible causes:

  1. Used an unsupported filter field (e.g., group_id)
  2. Field name misspelled
  3. Value format incorrect (e.g., online should use "Online" not 1)
  4. Keyword passed as string instead of object

Solution:

Refer to Field Reference - Keyword Filtering Fields to confirm supported fields and correct value formats.

Q2: Device query returns stale data?

Cause: Device status may be cached.

Solution:

  1. Call Get Device Info Push first to refresh device status
  2. Then call Get All Devices to get updated data

Q3: StatusCode is 200 but operation failed?

Cause: StatusCode == 200 only means the HTTP request completed. The upstream API may have returned an error.

Solution:

Always check ErrorMessage. If it's non-empty, the operation failed. Parse the message for details (e.g., API returned HTTP 403: Permission denied).

Q4: High-risk operation fails with permission error?

Cause: High-risk operations require safety conditions.

Solution:

  1. Set Confirm: true
  2. Provide Reason parameter explaining the operation purpose
  3. Verify account has permissions for high-risk operations
  4. Confirm device is online (some commands require online device)
Updated on: Feb 13, 2026
Was This Page Helpful?
Prev Disable lost mode
Next Enable lost mode
Discussion

Leave a Reply. Cancel reply

Your email address will not be published. Required fields are marked*

Product-related questions?Contact Our Support Team to Get a Quick Solution>
On this page
  • 1. Error Code Overview
  • 2. Detailed Error Descriptions
    • 2.1 StatusCode: -1 — Parameter Validation Error
    • 2.2 StatusCode: 200 — Success or Business Error
    • 2.3 StatusCode: 500 — Network / Request Exception
  • 3. Agent Self-Healing Decision Table
  • 4. Error Handling Best Practices
    • 4.1 Error Response Parsing
    • 4.2 Logging Recommendations
  • 5. Operation-Specific Error Codes
    • 5.1 Async Operation Progress Values
    • 5.2 Common FailReason Values
  • 6. FAQ
    • Q1: Why is my Keyword filter not working?
    • Q2: Device query returns stale data?
    • Q3: StatusCode is 200 but operation failed?
    • Q4: High-risk operation fails with permission error?
loading...
No Results