Mobile Apps

Upload and manage Android APK files used by mobile tests and mobile discoveries. Mobile apps are immutable artifacts; upload each build separately.

GET /api/v1/mobile-apps

List mobile apps

Parameters

ParameterTypeInRequiredDescription
limitintegerqueryNoNumber of results (max 100) (default: 20)
cursoruuidqueryNoCursor for pagination

Status Codes

CodeDescription
200OK
401Unauthorized
422Invalid list parameters

Response Body

{"mobile_apps":[],"next_cursor":null}
GET /api/v1/mobile-apps
cURL
Response
GET /api/v1/mobile-apps/{id}

Get a mobile app

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesMobile app ID

Status Codes

CodeDescription
200OK
401Unauthorized
404Mobile app not found
422Invalid mobile app ID

Response Body

{
  "mobile_app": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "customer-app.apk",
    "package_name": "com.example.customer",
    "main_activity": "com.example.customer.MainActivity",
    "version_name": "2.4.1",
    "version_code": 20401,
    "size_bytes": 18273642,
    "created_at": "2026-07-31T17:00:00Z",
    "updated_at": "2026-07-31T17:00:00Z"
  }
}
GET /api/v1/mobile-apps/{id}
cURL
Response
POST /api/v1/mobile-apps/upload

Upload a mobile app

Uploads and validates one Android APK. The maximum APK size is 500 MB.

Parameters

ParameterTypeInRequiredDescription
filefilebodyYesAndroid APK (multipart form field name: file)

Status Codes

CodeDescription
201Mobile app uploaded
400Malformed multipart upload
401Unauthorized
413APK exceeds 500 MB
422Invalid APK
507Storage quota exceeded

Response Body

{
  "mobile_app": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "customer-app.apk",
    "package_name": "com.example.customer",
    "main_activity": "com.example.customer.MainActivity",
    "version_name": "2.4.1",
    "version_code": 20401,
    "size_bytes": 18273642,
    "created_at": "2026-07-31T17:00:00Z",
    "updated_at": "2026-07-31T17:00:00Z"
  }
}
POST /api/v1/mobile-apps/upload
cURL
Response
POST /api/v1/mobile-apps/import

Import a staged mobile app

Consumes an APK from tenant Files. The embedded assistant may also consume a file from its private chat workspace. The source file is removed only after a successful import.

Parameters

ParameterTypeInRequiredDescription
sourcestringbodyYestenant_files, or chat_workspace for embedded assistant calls
pathstringbodyYesRelative APK path in the selected source

Status Codes

CodeDescription
201Mobile app imported
400Malformed JSON
401Unauthorized
403Chat workspace unavailable
404Source APK not found
413APK exceeds 500 MB
422Invalid import or APK
507Storage quota exceeded

Response Body

{
  "mobile_app": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "customer-app.apk",
    "package_name": "com.example.customer",
    "main_activity": "com.example.customer.MainActivity",
    "version_name": "2.4.1",
    "version_code": 20401,
    "size_bytes": 18273642,
    "created_at": "2026-07-31T17:00:00Z",
    "updated_at": "2026-07-31T17:00:00Z"
  }
}
POST /api/v1/mobile-apps/import
cURL
Response
DELETE /api/v1/mobile-apps/{id}

Delete a mobile app

Deletes an app and its stored APK. Returns a 409 problem with active_runs when queued or executing test runs still use it.

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesMobile app ID

Status Codes

CodeDescription
204Mobile app deleted
401Unauthorized
404Mobile app not found
409Mobile app is used by active test runs
422Invalid mobile app ID
DELETE /api/v1/mobile-apps/{id}
cURL
Response