Skip to main content
Axilio reports failures at four customer-visible layers:
  1. API errors reject an HTTP request.
  2. Phone-control errors occur over the Device Control Protocol.
  3. Run failures happen after a workflow run was accepted.
  4. Dashboard live-video errors affect the browser viewer separately from SDK or CLI control.
Identify the layer before retrying. A failed live-video connection, for example, does not necessarily mean the phone session or DCP control path failed.

API errors

HTTP failures use a Problem Details JSON body with a status and human-readable detail. Validation responses can also include field-specific errors.
The CLI writes errors to standard error and returns a stable exit status:

CLI exit statuses

Branch on the status rather than parsing human-readable error text.

Phone-control errors

Python maps stable phone-control error codes to exception classes. Go returns *mobile.Error with Code, Message, and Retryable. The CLI maps them to the exit statuses above. Prefer the retryable value carried by the actual error over a table default. The SDK transport automatically attempts bounded reconnect and cursor resume before it surfaces a connection error.
For session_ended, create or select a live session. For control_held, close or coordinate with the existing controller instead of retrying against the one-controller guardrail. See Reconnect and resume for the transport contract.

Workflow-run failures

Creating a run can succeed while the run later fails waiting for a phone or executing workflow code. A successful fetch of a failed run still returns HTTP 200 and CLI exit status 0; branch on the run’s status field.
Use error_message for the terminal reason. Inspect the run’s Telemetry and retained record for the execution sequence and output logs.

Dashboard live-video errors

The Dashboard can report that it could not reach the live phone, lost the connection, or reached the live-viewer limit. These messages describe the browser’s WebRTC video and input path, not the DCP connection used by the CLI and SDKs. After an established video connection drops, the Dashboard retries up to three times before presenting Reconnect. A viewer-limit message means another Dashboard or embedded viewer occupies the available slot; close one before reconnecting. The CLI and SDKs do not expose this Dashboard live-video state. If you already control the same session, test the independent DCP path:
If control succeeds, only the browser viewer needs recovery. If it fails, use the DCP error above. A session created only in the Dashboard is not automatically attached to a separate CLI process.

Report a persistent problem

Include the method or command, error status or code, affected resource IDs, approximate time, and whether the live-video path, control path, or both were affected. Do not share API keys, session credentials, control_url, telemetry_url, or live_view_url.

Next steps

Configuration

Configure credentials, retries, timeouts, and client state.

Session lifecycle

Understand session and connection deadlines.

Live view

Protect and recover the browser viewer.