Applivery provides two separate APIs for uploading builds, each designed for a different use case and requiring a different authentication credential. It is important to understand which one applies to your workflow before integrating.
Choosing the right API
Integrations API | Workspace API | |
|---|---|---|
Designed for | CI/CD pipelines, build tools, and per-app integrations | Workspace-level automation and multi-app management |
Authentication | App API Token (per-app) | Service Account token (workspace-level) |
Base URL |
|
|
App context | Implicit — token is already scoped to an app | Explicit — |
Typical users | Fastlane, Bitrise, Jenkins, Azure DevOps, custom CI scripts | Platform engineers managing multiple apps programmatically |
Access to the different APIs might not be available in your current plan. Please check availability on our pricing page.
Integrations API
Use this endpoint when uploading builds from a CI/CD pipeline or any integration that operates within the scope of a single app. Authentication uses an App API Token, which is scoped to the specific app you are uploading to.
To create an App API Token, see Apps API Authentication.
Endpoint
POST https://upload.applivery.io/v1/integrations/builds
Authentication
Authorization: Bearer <your_app_token>
Request format
multipart/form-data
Parameters
Build file
Parameter | Type | Required | Description |
|---|---|---|---|
| File | Yes | The build file to upload. Supported formats: |
| String | Conditional | Required when uploading a Custom Build Platform. Values: |
| String | Conditional | Required when the build file cannot be processed automatically (e.g., custom platforms). The app's unique identifier. |
| String | Conditional | Required when the build file cannot be processed automatically. The version string for this build. |
| File | Conditional | Required when the build file cannot be processed automatically. Must be |
Build metadata
Parameter | Type | Required | Description |
|---|---|---|---|
| String | No | Human-readable version label for this build. E.g. |
| Array | No | Comma-separated list of tags to categorize the build. E.g. |
| String | No | Release notes or description of changes in this build. Supports plain text. |
Notifications
Parameter | Type | Required | Description |
|---|---|---|---|
| Boolean | No | Whether to send an email notification to app and workspace collaborators. Default: |
| Boolean | No | Whether to send an email notification to store employees. Default: |
| String | No | Custom message to include in the notification email. E.g. |
| String | No | Language for the notification email. Supported values: |
| Nested array | No | Limits notifications to specific employee groups. Supports AND/OR logic. Each inner array is an AND clause; each outer element is an OR clause. E.g. to notify users in group1 AND group2, OR users in group3: |
CI/CD deployer information
These optional fields populate the build's deployment metadata in the Applivery dashboard, making it easy to trace a build back to its CI/CD origin.
Parameter | Type | Description |
|---|---|---|
| String | Display name for the CI/CD system. E.g. |
| String | Git commit message associated with this build. |
| String | Git commit SHA. E.g. |
| String | Git branch name. E.g. |
| String | Git tag associated with this build. E.g. |
| String | Unix timestamp (ms) of when the CI build was triggered. E.g. |
| String | Direct URL to the CI build run. |
| String | Base URL of the CI platform. |
| String | URL of the version control repository. |
| String | CI platform's build number. E.g. |
Example Request
curl 'https://upload.applivery.io/v1/integrations/builds' \
-X POST \
--retry 5 \
--fail \
-H 'Authorization: Bearer YOUR_APP_TOKEN' \
-F '[email protected]' \
-F 'versionName=v2.4.0-rc1' \
-F 'tags=staging, sprint-42' \
-F 'changelog=Fixed crash on login screen' \
-F 'notifyCollaborators=true' \
-F 'notifyEmployees=false' \
-F 'notifyMessage=New build ready for QA' \
-F 'notifyLanguage=en' \
-F 'filter[0][0]=group1' \
-F 'filter[0][1]=group2' \
-F 'filter[1][0]=group3' \
-F 'deployer.name=GitHub Actions' \
-F 'deployer.info.commitMessage=Fix crash on login' \
-F 'deployer.info.commit=f52ace0' \
-F 'deployer.info.branch=release/2.4' \
-F 'deployer.info.tag=v2.4.0-rc1' \
-F 'deployer.info.triggerTimestamp=1558359012580' \
-F 'deployer.info.buildUrl=https://github.com/myorg/myapp/actions/runs/123' \
-F 'deployer.info.ciUrl=https://github.com/myorg/myapp/actions' \
-F 'deployer.info.repositoryUrl=https://github.com/myorg/myapp' \
-F 'deployer.info.buildNumber=173'
Responses
{
"status": true,
"data": {
"id": "string",
"status": "pending",
"tags": ["string"],
"versionName": "string",
"application": "string",
"applicationInfo": {
"id": "string",
"name": "string",
"slug": "string",
"picture": "string"
},
"changelog": "string",
"info": {
"icon": "string",
"android": {
"targetSdkVersion": "string",
"minSDKVersion": "string",
"packageName": "string",
"platformBuildVersionName": "string",
"platformBuildVersionCode": "string",
"versionName": "string",
"versionCode": "string",
"icon": "string"
},
"ios": {
"plist": {
"CFBundleDisplayName": "string",
"CFBundleSupportedPlatforms": ["string"],
"MinimumOSVersion": "string",
"CFBundleIdentifier": "string",
"CFBundleShortVersionString": "string",
"CFBundleVersion": "string",
"CFBundleName": "string",
"CFBundleIcons": ["string"],
"UIDeviceFamily": ["string"]
},
"mobileprovision": {
"ExpirationDate": "2019-08-24T14:15:22Z",
"TeamIdentifier": "string",
"ProvisionsAllDevices": true,
"TeamName": "string",
"ProvisionedDevices": "string",
"signingType": "ad-hoc"
}
},
"pkg": {
"CFBundleDisplayName": "string",
"CFBundleIdentifier": "string",
"CFBundleShortVersionString": "string",
"CFBundleVersion": "string",
"CFBundleName": "string"
}
},
"size": 0,
"processTime": 0,
"queuedTime": 0,
"versionCode": "string",
"os": "ios",
"deployer": {
"name": "string",
"info": {
"commitMessage": "string",
"commit": "string",
"branch": "string",
"triggerTimestamp": "string",
"buildUrl": "string",
"ciUrl": "string",
"repositoryUrl": "string",
"buildNumber": "string",
"tag": "string"
}
},
"uploadedBy": {
"id": "string",
"email": "[email protected]",
"firstName": "string",
"lastName": "string",
"picture": "string"
},
"originalExtension": "string",
"storageProvider": {
"id": "string",
"name": "string",
"region": "string"
},
"updatedAt": "2019-08-24T14:15:22Z",
"createdAt": "2019-08-24T14:15:22Z"
}
}
{
"status": false,
"error": {
"code": 5024,
"message": "Slug already used"
}
}
{
"status": false,
"error": {
"code": 3002,
"message": "Token Expired"
}
}
{
"status": false,
"error": {
"code": 3001,
"message": "Entity not found"
}
}
The build status in the response will initially be pending. Applivery processes the build asynchronously — the status will update to success or error once processing is complete. Use the GET – Build details endpoint to poll for the final status if needed.
For a full list of error codes returned during build processing, see Build Processing Codes.
Workspace API
Use this endpoint when you need to upload builds at the workspace level — for example, in platform engineering workflows where a single credential manages multiple apps across an organisation.
Authentication uses a Service Account token, which is workspace-scoped and not tied to any individual app. The app context is provided explicitly via path parameters.
To create a Service Account, see Service Accounts.
Endpoint
POST https://upload.applivery.io/v1/organizations/{organizationId}/apps/{applicationId}/builds
Path Parameters
Parameter | Type | Required | Description |
|---|---|---|---|
| String | Yes | The unique identifier of your Applivery organization. |
| String | Yes | The unique identifier of the app to upload the build to. |
Authentication
Authorization: Bearer <your_service_account_token>
Request format
multipart/form-data
Parameters
The Workspace API accepts the same build file, metadata, notification, and deployer parameters as the Integrations API.
Example Request
curl 'https://upload.applivery.io/v1/organizations/ORG_ID/apps/APP_ID/builds' \
-X POST \
-H 'Authorization: Bearer YOUR_SERVICE_ACCOUNT_TOKEN' \
-F '[email protected]' \
-F 'versionName=v3.1.0' \
-F 'changelog=Performance improvements' \
-F 'notifyCollaborators=true' \
-F 'deployer.name=Internal Deploy Bot' \
-F 'deployer.info.branch=main' \
-F 'deployer.info.buildNumber=88'