Skip to content

Reference REST API Apps

Apps API

Upload iOS and Android app builds, list and delete versions, and fetch build metadata such as bundle id, platform, and file size over the REST API.

These endpoints upload, list, and delete the iOS and Android app builds you run on a device. Authentication, error shapes and rate limits are covered in the REST API overview.

Upload App

Upload a new application binary. Supported formats: a compressed .app simulator bundle (.zip/.tar.gz/.tgz archive) for iOS, and .apk for Android. Maximum file size: 500 MB. The file content is validated against expected magic bytes.

POST /api/v1/apps/upload

Auth: Bearer token required. Developer role or above.

Request: multipart/form-data

FieldTypeRequiredDescription
filefileYesApp binary (.zip/.tar.gz/.tgz iOS simulator bundle, .apk for Android)
namestringNoApp display name (auto-detected)
package_namestringNoPackage identifier (auto-detected)
platformstringNoios or android (auto-detected from extension)
notestringNoOptional note stored on the new build (hard cap 500 chars; 200 recommended)

Response:

{
  "id": 1,
  "name": "My App",
  "package_name": "com.example.myapp",
  "platform": "android",
  "icon_url": "/uploads/apps/icon.png",
  "created_at": "2025-01-15T10:30:00"
}

List Apps

GET /api/v1/apps/

Auth: Bearer token required. Viewer role or above.

Query parameters:

ParameterTypeDescription
platformstringFilter by ios or android

Response:

[
  {
    "id": 1,
    "name": "My App",
    "package_name": "com.example.myapp",
    "platform": "android",
    "icon_url": "/uploads/apps/icon.png",
    "last_started_at": "2025-01-20T14:00:00",
    "updated_at": "2025-01-20T14:00:00",
    "created_at": "2025-01-15T10:30:00"
  }
]

Get App

Returns app details including all builds.

GET /api/v1/apps/{app_id}

Auth: Bearer token required. Viewer role or above.

Response:

{
  "id": 1,
  "name": "My App",
  "package_name": "com.example.myapp",
  "platform": "android",
  "icon_url": "/uploads/apps/icon.png",
  "last_started_at": null,
  "latest_version": "1.2.0",
  "latest_build_number": "42",
  "latest_uploaded_at": "2025-01-20T14:00:00",
  "builds": [
    {
      "id": 1,
      "version": "1.2.0",
      "build_number": "42",
      "file_size": 15728640,
      "uploaded_by": "dev@example.com",
      "uploaded_at": "2025-01-20T14:00:00",
      "tags": [],
      "min_sdk_version": "21",
      "target_sdk_version": "34",
      "permissions": ["android.permission.INTERNET"],
      "metadata": {}
    }
  ]
}

Delete App

DELETE /api/v1/apps/{app_id}

Auth: Bearer token required. Developer role or above.

Response:

{
  "status": "deleted"
}

Upload Build

Upload a new build for an existing app.

POST /api/v1/apps/{app_id}/builds

Auth: Bearer token required. Developer role or above.

Request: multipart/form-data

FieldTypeRequiredDescription
filefileYesApp binary
versionstringNoVersion string (auto-detected)
notestringNoOptional note stored on the new build (hard cap 500 chars; 200 recommended)

Response:

{
  "id": 2,
  "version": "1.3.0",
  "build_number": "43",
  "file_size": 16000000,
  "uploaded_at": "2025-01-21T09:00:00",
  "note": "Fix login crash — hotfix for ticket #1234"
}

Last updated 8 Sep 2026 Something wrong on this page? Tell us

Search the docs