Skip to main content
Version: 1.0.8

API Reference

MobileHub is served by an external Device Farm service that the RabbitQA gateway proxies. This page lists the gateway prefixes and the endpoints the product itself calls, so an integration can target the same paths.

note

Request and response bodies are owned by the Device Farm service and are not reproduced here except where the product documents them itself. Treat the shapes below as the contract the application relies on, and verify against a live response before depending on a field.

Gateway Prefixes​

Every MobileHub path starts with /df. The gateway strips that prefix before forwarding, so /df/api/sessions reaches the service as /api/sessions.

PrefixCarries
/df/api/**The REST API — devices, sessions, files, reservations, reports
/df/api/automation/**Automation and test event endpoints
/df/wd/**The Appium and WebDriver hub
/df/ws/**WebSocket transports
/df/devtools/**Chrome DevTools protocol, over HTTP and WebSocket
/df/debug-tunnel/**The debug tunnel used by the CLI

For the hosted service the base is https://api.rabbitqa.com, so the REST base URL is:

https://api.rabbitqa.com/df/api
warning

/api/... without the /df prefix is not a registered gateway path. Any client that drops the prefix will fail to route.

Authentication​

MethodUsed for
Authorization: Bearer ...Most REST operations
X-Api-Key: ...Session and device endpoints, presigned file upload and confirm, the hub

The gateway routes /df/api/sessions/** and /df/api/devices/** by API key when an X-Api-Key header is present. POST /df/api/files/presigned-upload and POST /df/api/files/{fileId}/confirm accept an API key only when no bearer token is sent.

Manage keys on the Settings page.

Devices​

MethodPathPurpose
GET/df/api/devicesList devices
GET/df/api/devices/filter-optionsFacet counts for the filter controls
GET/df/api/devices/{deviceId}One device
PUT/df/api/devices/{deviceId}/aliasSet a device alias
DELETE/df/api/devices/{deviceId}/aliasRemove the alias
PUT/df/api/devices/{deviceId}/favoriteMark as favorite
DELETE/df/api/devices/{deviceId}/favoriteRemove from favorites

The device list accepts search, platform, osVersion, model, type, excludeType, isRealDevice, status, sessionType, nodeName, hubId, sortBy, sortDir, page, and size. status, osVersion, model, and nodeName may be repeated for a multi-value filter.

Sessions​

MethodPathPurpose
GET/df/api/sessionsList sessions
GET/df/api/sessions/activeYour active sessions
GET/df/api/sessions/company/activeActive sessions across the company
GET/df/api/sessions/statsSession statistics
GET/df/api/sessions/{sessionId}One session
POST/df/api/sessionsCreate a session
DELETE/df/api/sessions/{sessionId}End or delete a session
PUT/df/api/sessions/{sessionId}/nameRename a session
PUT/df/api/sessions/{sessionId}/metadataUpdate session metadata

Session Content​

MethodPathPurpose
GET/df/api/sessions/{sessionId}/activitiesThe activity timeline
POST/df/api/sessions/{sessionId}/activityRecord an activity
GET/df/api/sessions/{sessionId}/artifactsArtifacts, filtered by type
GET/df/api/sessions/{sessionId}/logsDevice logs
GET/df/api/sessions/{sessionId}/screenshotCapture the current screen
POST/df/api/sessions/{sessionId}/recording/startStart recording
GET/df/api/sessions/{sessionId}/recording/statusRecording status
GET/df/api/sessions/{sessionId}/replaySession replay data
GET/df/api/sessions/{sessionId}/storageStorage used by the session
GET/df/api/sessions/{sessionId}/notesRead session notes
PUT/df/api/sessions/{sessionId}/notesWrite session notes
GET/df/api/sessions/{sessionId}/ui-treeThe UI element tree

Device Control​

MethodPathPurpose
POST/df/api/sessions/{sessionId}/device/controlSend a device control action
GET/df/api/sessions/{sessionId}/appsApps installed on the device
POST/df/api/sessions/{sessionId}/apps/installInstall an app
POST/df/api/sessions/{sessionId}/apps/uninstallUninstall an app
POST/df/api/sessions/{sessionId}/apps/presenceCheck whether apps are present
POST/df/api/sessions/{sessionId}/app-helpers/openOpen a store or helper app
POST/df/api/sessions/{sessionId}/files/pushPush a file to the device
POST/df/api/sessions/{sessionId}/files/pullPull a file from the device
GET/df/api/sessions/{sessionId}/filesBrowse device files
DELETE/df/api/sessions/{sessionId}/filesDelete a device file
POST/df/api/sessions/{sessionId}/foldersCreate a folder on the device

Sharing​

MethodPathPurpose
GET/df/api/sessions/{sessionId}/invitationsList invitations
POST/df/api/sessions/{sessionId}/invitationsInvite a coworker
DELETE/df/api/sessions/{sessionId}/invitations/{invitationId}Revoke an invitation
GET/df/api/sessions/{sessionId}/invitations/linksList shareable links
DELETE/df/api/sessions/{sessionId}/invitations/links/{linkId}Revoke a link
GET/df/api/sessions/{sessionId}/viewersCurrently connected viewers
DELETE/df/api/sessions/{sessionId}/viewers/{userId}Disconnect a viewer

An invitation link is accepted in the application at /devicer/session-invite/{token}.

Debugging​

MethodPathPurpose
GET/df/api/sessions/{sessionId}/debug-capabilitiesWhat debugging is allowed for the session
POST/df/api/sessions/{sessionId}/debug-capabilitiesRequest debug access
GET/df/api/sessions/{sessionId}/debug-targetsDebuggable targets on the device

Debug capabilities report the granted protocols. On iOS these are usbmux, tcp_forward, lldb_rsp, webkit_inspector, and cdp; on Android adb, jdwp, tcp_forward, and cdp.

Automation​

MethodPathPurpose
POST/df/api/automation/sessions/{sessionId}/test-eventsReport a test event
GET/df/api/automation/sessions/{sessionId}/test-eventsRead reported events
GET/df/api/automation/sessions/{sessionId}/test-events/progressRead execution progress
GET/df/api/sessions/buildsList builds
GET/df/api/sessions/builds/{buildName}/sessionsSessions in a build

See Automated Testing for the event payload and the event types.

Files​

MethodPathPurpose
GET/df/api/filesList files
GET/df/api/files/{fileId}One file
GET/df/api/files/{fileId}/downloadDownload a file
DELETE/df/api/files/{fileId}Delete a file
POST/df/api/files/presigned-uploadRequest a presigned upload
POST/df/api/files/{fileId}/confirmConfirm an upload
POST/df/api/files/multipart/initiateStart a multipart upload
GET/df/api/files/multipart/{fileId}/part/{partNumber}Get a part upload URL
POST/df/api/files/multipart/{fileId}/completeComplete a multipart upload
DELETE/df/api/files/multipart/{fileId}Abort a multipart upload

App Catalog​

MethodPathPurpose
GET/df/api/files/appsList catalog apps
GET/df/api/files/apps/{appId}/versionsVersions of an app
GET/df/api/files/app-versions/{versionId}One version
DELETE/df/api/files/apps/{appId}Delete an app
DELETE/df/api/files/apps/{appId}/versions/{versionId}Delete a version
POST/df/api/files/apps/backfillBuild the catalog from existing files

See Apps & Files for the full upload flow and its size limits.

Reservations​

MethodPathPurpose
GET/df/api/reservationsList reservations
GET/df/api/reservations/{reservationId}One reservation
PUT/df/api/reservations/{reservationId}Update a reservation
DELETE/df/api/reservations/{reservationId}Cancel a reservation
POST/df/api/reservations/{reservationId}/endEnd a reservation early
POST/df/api/reservations/{reservationId}/rejoinRejoin an active reservation

Accessibility​

MethodPathPurpose
GET/df/api/accessibility/auditsList reports
GET/df/api/accessibility/audits/pageList reports, paged
GET/df/api/accessibility/audits/{auditId}One report
GET/df/api/accessibility/audits/{auditId}/compareCompare reports
POST/df/api/accessibility/auditsCreate a report
GET/df/api/sessions/{sessionId}/accessibility/auditsReports for a session
POST/df/api/sessions/{sessionId}/accessibility/auditsStart a report in a session
POST/df/api/sessions/{sessionId}/accessibility/audits/{auditId}/scansScan the current screen
POST/df/api/sessions/{sessionId}/accessibility/audits/{auditId}/completeClose the report
POST/df/api/accessibility/audits/{auditId}/exportsRequest a report export
GET/df/api/accessibility/audits/{auditId}/exports/{exportId}Poll an export
PATCH/df/api/accessibility/findings/{findingId}/triageSet a finding's triage status

See Accessibility for the statuses, severities, outcomes, and export formats these endpoints use.

Dashboard, Reports, and Quotas​

MethodPathPurpose
GET/df/api/dashboard/statsFleet statistics
GET/df/api/dashboard/activityRecent activity
GET/df/api/dashboard/most-used-devicesMost used devices
GET/df/api/reports/device-usageDevice usage report
GET/df/api/reports/reservationsReservation report
GET/df/api/reports/sessionsSession report
GET/df/api/quotasQuota usage and plan limits

Settings​

MethodPathPurpose
GET/df/api/keysList API keys
GET/df/api/keys/{keyId}One API key
POST/df/api/keysCreate an API key
DELETE/df/api/keys/{keyId}Revoke an API key
GET/df/api/settings/session-defaultsRead session defaults
PUT/df/api/settings/session-defaultsUpdate session defaults
GET/df/api/client-configClient configuration
GET/df/api/client-config/dfctl-manifestCLI download manifest

Long-Running Operations​

Some device operations return an operation handle rather than a result.

GET /df/api/operations/{operationId}

Poll it until the operation reaches a terminal state.