Help centerAutomation

Upload APKs from CI

Use a scoped API key to upload a build from GitHub Actions, GitLab, or any shell, and get a preview link back.

Updated 27 September 20264 min read

The console is convenient, but the best place to upload is your pipeline — every build gets a preview automatically. Create an API key once and POST the APK from anywhere.

Create an API key

In Settings & Billing → API keys, create a key with the upload scope. The secret is shown once; store it as a CI secret (for example, GitHub Actions → Settings → Secrets).

Upload with curl

curl -X POST https://app.spawndroid.io/api/apps \
  -H "Authorization: Bearer $SPAWNDROID_API_KEY" \
  -F "file=@app/build/outputs/apk/release/app-release.apk"

The response includes the app's slug, its preview URL and the decoded manifest. Post the URL back to your pipeline's summary or the pull request.

GitHub Actions

name: Preview build
on: pull_request
jobs:
  preview:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build APK
        run: ./gradlew assembleRelease
      - name: Upload to SpawnDroid
        env:
          SPAWNDROID_API_KEY: ${{ secrets.SPAWNDROID_API_KEY }}
        run: |
          curl -sS -X POST https://app.spawndroid.io/api/apps \
            -H "Authorization: Bearer $SPAWNDROID_API_KEY" \
            -F "file=@app/build/outputs/apk/release/app-release.apk"

Uploads from CI don't auto-launch

A dashboard upload boots a device immediately; a CI upload only stores the build and hands back the preview link, so a pipeline can push many builds without holding devices open.

Try it on your own build
Upload an APK and get a shareable preview in under a minute — no installs, no emulator, no device.