X-API-Key header. See API Reference for authentication details.
- Mobile (iOS/Android)
- Web
- Chrome Extension
Endpoints Overview
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
string
required
Your app’s bundle identifier (e.g.,
com.company.app)string
required
Target platform:
ios or androidstring
required
Name of the build file (e.g.,
app-release.apk or MyApp.zip)string
Display name for your app. Used when the app is created, and updates the name if the app already exists with a different one.
string
Custom identifier that keeps several apps with the same bundle ID in one environment, for example one app per release version (
v7.12.0). The app is created the first time an app_id is used. Up to 64 characters: lowercase letters, numbers, dots, hyphens, and underscores. It must start and end with a letter or number, with no two separators in a row. If omitted, the build goes to the app identified by bundle ID alone. Passing your bundle ID as app_id is the same as leaving it out, and the format rule does not apply to it.string
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
string
Presigned URL for uploading your build file via PUT request. Valid for 1 hour.
string
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
string
required
Your app’s bundle identifier (must match the one used in start-upload)
string
required
Target platform:
ios or androidstring
required
The
file_path returned from the start-upload responsestring
Custom app identifier. Must match the value used in start-upload. Leaving it out and passing your bundle ID count as the same value. A mismatch is rejected.
string
Display name for your app (e.g., “My Android App”). If the app already exists and the name differs, it will be updated.
string
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.
string
Git commit SHA for tracking which commit this build came from. Send the full 40-character SHA if you want runs of this build to use your flows at its commit.
string
Git branch name. Displayed in the Autosana UI for build identification.
string
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.string | object
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.boolean
iOS
.ipa only. Persists the app preference and instruments the IPA so Team-ID-prefixed keychain access groups keep working after cloud device re-signing. When omitted, the app’s saved preference is used.string
Optional. Two-letter ISO country code, such as
MX. Every run this upload starts sends its device traffic from that country. Android only: an iOS upload with a location is refused. See Run Location.Example Request
enable_ios_keychain_access_group_remapping:Response Fields
string
Result status:
success or errorstring
Human-readable description of the result
integer
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:1
Start Upload
Call
/api/ci/start-upload with your app details to get a presigned upload URL.2
Upload File
PUT your build file (
.apk for Android, .zip for iOS) to the presigned URL.3
Confirm Upload
Call
/api/ci/confirm-upload to finalize the upload and trigger automations.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 x86_64 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.