---
title: "Upload Application Bundle"
method: POST
path: "/applications/installations/{identifier}/bundles"
tags: ["Applications"]
---

# Upload Application Bundle

`POST /applications/installations/{identifier}/bundles`

## Request

- Base URL: `https://api.crowdin.com/api/v2`
- URL: `https://api.crowdin.com/api/v2/applications/installations/{identifier}/bundles`
- Auth: none declared
- TypeScript: <https://skmtc.dev/crowdin/apis/crowdin-api-v2/docs/applications/installations/:identifier/bundles/post.ts> (a function with typed inputs; its response is checked against the schema)

**Required scopes:** `application.installation` (Read and Write).

Upload a bundle archive for a serverless app installed from manifest content. The bundle must be a ZIP archive that contains a non-empty `app.js` entry point at its root.

## Path parameters

- `identifier` string, required

## Request body

- ApplicationInstallationBundleCreateForm
  - `storageId` integer, required: Storage Identifier. Get via [List Storages](#operation/api.storages.getMany).<br><br>Storage file must be a ZIP archive containing the application bundle

## Response `201`

Application Bundle was successfully uploaded

- ApplicationInstallationResource: Base schema of resource container. Container is a wrapper object that contains payload in required `data` property and provides space for adding any other metadata.
  - `data` ApplicationInstallationResponseModel, required: Application Installation Response Model
    - `identifier` string
    - `name` string
    - `installedBy` object, nullable
      - `id` integer
      - `username` string
      - `fullName` string
      - `avatarUrl` string
    - `description` string, nullable
    - `logo` string
    - `logoUrl` string, nullable: Absolute URL the logo is served from.
    - `agent` object, nullable
      - `id` integer
      - `username` string
      - `fullName` string
      - `avatarUrl` string
    - `baseUrl` string, nullable
    - `manifestUrl` string, nullable
    - `manifest` object, nullable: The manifest of the installation as authored - the application fields and module definitions as they were installed or last updated, without server-resolved values. `null` for applications installed from a manifest URL
    - `createdAt` string, date-time, nullable
    - `manifestUpdatedAt` string, date-time, nullable: When the installation's manifest was last synced
    - `isManifestOutdated` boolean: Whether the installed manifest is outdated compared to the latest available manifest
    - `modules` union[]
      - union
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `name` string
          - `description` string, nullable
          - `url` string
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `modes` object
          - `scopes` object
          - `iframe` object
          - `fileNamePattern` string
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `modes` object
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
          - `severity` 'high' | 'medium' | 'low'
          - `category` 'context'
          - `refreshPolicy` 'hourly' | 'daily'
          - `title` string
          - `summary` string, nullable: Short one-line summary shown on the inspector card chrome below the title.
          - `recheckUrl` string, nullable
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `scopes` object, nullable
          - `configuratorIframe` object, nullable
          - `compileUrl` string
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `chatCompletionsUrl` string
          - `modelsUrl` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `name` string
          - `placement` 'header-alert' | 'glossary': Where the module is allowed to place its announcements
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `scopes` object, nullable
          - `identifier` string
          - `inputSchemaUrl` string, nullable
          - `outputSchemaUrl` string, nullable
          - `iframe` object, nullable
          - `executeUrl` string
          - `validateSettingsUrl` string, nullable
          - `invocationWaitMode` 'sync' | 'taskToken', nullable
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object, nullable
          - `iframe` object
          - `logo` string, nullable
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `name` string
          - `mode` string
          - `baseUrl` string
          - `options` object
          - `signaturePatterns` object
          - `description` string
        - object: Class CrowdsourcePanelModuleResponseModel
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `name` string
          - `logoUrl` string
          - `signaturePatterns` object
          - `fileType` string
          - `multilingual` boolean
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `name` string
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `modes` object
          - `scopes` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `modes` string[]
          - `options` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `modes` object
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `getBatchSizeUrl` string
          - `runQaCheckUrl` string
          - `supportsSynchronousRun` boolean: If `true`, the app is called while a translation is being saved and can refuse the save. If `false`, the app is called after the translation is saved and can only report an issue.
          - `scopes` object, nullable
          - `iframe` object, nullable
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `name` string
          - `logoUrl` string
          - `signaturePatterns` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `name` string
          - `type` string
          - `data` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `scopes` object
          - `iframe` object
        - object: Class WorkflowStepTypeModuleResponseModel
          - `key` string
          - `type` string
          - `data` object
          - `permissions` ApplicationsInstallationsModulesModulePermissions
            - `user` ApplicationsInstallationsModulePermissionsUser
              - …
          - `authenticationType` string
          - `identifier` string
          - `updateSettingsUrl` string, nullable
          - `deleteSettingsUrl` string, nullable
          - `editorMode` string, nullable
          - `boundaries` object
          - `scopes` object, nullable
          - `iframe` object, nullable
    - `scopes` string[]
    - `permissions` ApplicationsInstallationsPermissions
      - `user` ApplicationsInstallationsPermissionsUser: Use modules permissions instead
        - `value` 'owner' | 'managers' | 'all' | 'guests' | 'restricted'
        - `ids` integer[]: Ids is available only for restricted value
      - `project` ApplicationsInstallationsPermissionsProject
        - `value` 'own' | 'restricted'
        - `ids` integer[]
    - `defaultPermissions` ApplicationsInstallationsDefaultPermissions
      - `user` 'owner'
      - `project` 'own'
    - `limitReached` boolean
    - `stringBasedAvailable` boolean
    - `bundle` union: Where the app is loaded from. Either Crowdin hosts the app in its own storage (`internal`) or the app is served from an external URL such as a local dev server (`external`).
      - ApplicationBundleInternal
        - `mode` 'internal', required: The app is hosted by Crowdin in its own storage (no external URL).
      - ApplicationBundleExternal
        - `mode` 'external', required: The app is served from an external URL (e.g. a local dev server).
        - `url` string, required: URL the app is served from; for local development this is your dev server, e.g. `http://localhost:8080/`.

## Other responses

- `400`: Invalid Request Parameters
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Application installation with specified identifier was not found
- `405`: Method Not Allowed

---

[API](https://skmtc.dev/crowdin/apis/crowdin-api-v2.md) - [All operations](https://skmtc.dev/crowdin/apis/crowdin-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/crowdin/apis/crowdin-api-v2/revisions/27aae7751699?raw)
