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.