These endpoints allow you to upload mobile app builds or web app URLs programmatically. For most use cases, we recommend using our GitHub Action instead. All requests require an API key in theDocumentation Index
Fetch the complete documentation index at: https://docs.autosana.ai/llms.txt
Use this file to discover all available pages before exploring further.
X-API-Key header. See API Reference for authentication details.
- Mobile (iOS/Android)
- Web
Endpoints Overview
| Endpoint | Platform | Description |
|---|---|---|
| Start Upload | iOS, Android | Get a presigned URL to upload a build file |
| Confirm Upload | iOS, Android | Finalize a mobile build upload |
Start Upload
Initiate an app build upload and get a presigned URL for uploading your build file.POST
/api/ci/start-upload — Returns 200 OKRequest Body
Your app’s bundle identifier (e.g.,
com.company.app)Target platform:
ios or androidName of the build file (e.g.,
app-release.apk or MyApp.zip)Environment name to associate this app with (e.g.,
staging, production). Apps with the same bundle ID but different environments are treated as separate apps. Must match an existing environment in your organization. If omitted, the app is assigned to your default environment.Example Request
Response Fields
Presigned URL for uploading your build file via PUT request. Valid for 1 hour.
Storage path of the uploaded file. Pass this to the confirm-upload endpoint.
Example Response
upload_url using a PUT request:Confirm Upload
After uploading your build file, call this endpoint to finalize the upload and trigger any configured automations.POST
/api/ci/confirm-upload — Returns 200 OKRequest Body
Your app’s bundle identifier (must match the one used in start-upload)
Target platform:
ios or androidThe
file_path returned from the start-upload responseDisplay name for your app (e.g., “My Android App”). If the app already exists and the name differs, it will be updated.
Environment name (must match the value used in start-upload). Used to look up the correct app when multiple apps share the same bundle ID.
Git commit SHA for tracking which commit this build came from.
Git branch name. Displayed in the Autosana UI for build identification.
Repository name in
org/repo format (e.g., myorg/myrepo). Required for GitHub Bot integration — links this build to your repository so the bot can find it when processing PRs.Key-value variables to attach to this build. Available in flow instructions via
${env:KEY}. Accepts a string ("KEY1=VALUE1,KEY2=VALUE2") or a JSON object ({"KEY1": "VALUE1"}). See Build Variables.Example Request
Response Fields
Result status:
success or errorHuman-readable description of the result
Number of automations triggered by this upload (based on your Automations configuration).
Example Response
Upload Workflow
Here’s the complete workflow for uploading a build via the API:Build Requirements
iOS Builds
Upload a
.zip file containing a simulator-compatible .app bundle. See App Build Guide for details.Android Builds
Upload a universal
.apk file (not AAB). The APK must be compatible with arm64 emulators.Example: Upload from EAS Build Hooks
If you use Expo EAS, you can upload to Autosana directly from an EAS build hook instead of using the GitHub Action. This avoids keeping a GitHub Actions runner idle while waiting for the EAS build to finish, saving CI minutes.EAS build hook script and setup
EAS build hook script and setup
Create an Make the script executable and commit it to your repo:Then add your API key as an EAS secret:When you trigger a build (
eas-build-on-success.sh file in your project root (next to package.json). EAS automatically runs this script when a build completes successfully.eas-build-on-success.sh
eas build --platform ios --profile preview-simulator --non-interactive), EAS runs the hook automatically after the build succeeds — no --wait flag or GitHub runner required.