# Subir Build

> Applivery ofrece dos APIs para cargar Builds: la Integrations API para CI/CD y la Workspace API para gestión multi-app. Elige la que mejor se adapte a tu caso.

Source: https://docs.applivery.com/es/app-distribution/api/builds/upload-build/  •  Last updated: 2026-06-08

**Answers:** ¿Cuáles son las dos APIs de Applivery para cargar builds? · ¿Qué autenticación requiere la Integrations API de Applivery? · ¿Cuál es la URL base de la Integrations API de Applivery? · ¿Qué tipo de contenido debo usar para las peticiones a la Integrations API? · ¿Qué formatos de archivo admite la Integrations API para cargar builds? · ¿El parámetro buildPlatform es obligatorio en la Integrations API? · ¿Cómo puedo enviar notificaciones a los colaboradores al cargar una build? · ¿Qué información del deployer de CI/CD puedo incluir en la Integrations API?

---

**TL;DR:** Applivery ofrece dos APIs para subir builds: la API de Integraciones para CI/CD usando un App API Token, y la API de Workspace para escenarios multi-app usando una Cuenta de servicio.

Applivery proporciona **dos APIs independientes** para cargar Builds, cada una diseñada para un caso de uso diferente y que requiere una credencial de autenticación distinta. Es importante entender cuál aplica a tu flujo de trabajo antes de integrarte.

* * *

## Cómo elegir la API correcta

|  | Integrations API | Workspace API |
| --- | --- | --- |
| **Diseñada para** | Pipelines de CI/CD, herramientas de build e integraciones por app | Automatización a nivel de Workspace y gestión multi-app |
| **Autenticación** | App API Token (por app) | token de una cuenta de servicio (a nivel de Workspace) |
| **URL base** | `https://upload.applivery.io` | `https://upload.applivery.io` |
| **Contexto de app** | Implícito — el token ya está vinculado a una App | Explícito — se requieren `organizationId` y `applicationId` en la ruta |
| **Usuarios típicos** | Fastlane, Bitrise, Jenkins, Azure DevOps, scripts de CI propios | Platform engineers que gestionan varias Apps de forma programática |

:::warning
El acceso a las distintas APIs puede no estar disponible en tu plan actual. Consulta la disponibilidad en nuestra [página de precios](https://www.applivery.com/app-distribution-pricing/).
:::

* * *

## Integrations API

Usa este endpoint para cargar Builds desde un pipeline de CI/CD o cualquier integración que opere dentro del ámbito de una sola app. La autenticación usa un **App API Token**, vinculado a la App específica a la que estás subiendo.

Para crear un App API Token, consulta [Autenticación de la API de Apps](https://docs.applivery.com/en/app-distribution/api/app-api-token/).

### Endpoint

```
POST https://upload.applivery.io/v1/integrations/builds
```

### Autenticación

```
Authorization: Bearer <your_app_token>
```

### Formato de la petición

`multipart/form-data`

### Parámetros

**Archivo de build**

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `build` | File | Sí | El archivo de Build a cargar. Formatos admitidos: `.ipa`, `.apk`, `.aab`. Consulta las Plataformas de Build personalizadas para formatos adicionales. |
| `buildPlatform` | String | Condicional | Obligatorio al cargar una Plataforma de Build personalizada. Valores: `ios`, `android` o un identificador de plataforma personalizado. |
| `packageName` | String | Condicional | Obligatorio cuando el archivo de Build no puede procesarse automáticamente (p. ej., plataformas personalizadas). El identificador único de la App. |
| `packageVersion` | String | Condicional | Obligatorio cuando el archivo de Build no puede procesarse automáticamente. La cadena de versión de esta Build. |
| `packageIcon` | File | Condicional | Obligatorio cuando el archivo de Build no puede procesarse automáticamente. Debe ser `.png` o `.jpeg`. |

**Metadatos de la Build**

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `versionName` | String | No | Etiqueta de versión legible para esta Build. P. ej. `RC-1`, `v2.4.0-beta`. |
| `tags` | Array | No | Lista de etiquetas separadas por comas para categorizar la Build. P. ej. `staging, sprint-42, hotfix`. |
| `changelog` | String | No | Notas de la versión o descripción de los cambios en esta Build. Admite texto plano. |

**Notificaciones**

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `notifyCollaborators` | Boolean | No | Si se debe enviar una notificación por email a los Colaboradores de la app y del Workspace. Por defecto: `false`. |
| `notifyEmployees` | Boolean | No | Si se debe enviar una notificación por email a los empleados de la store. Por defecto: `false`. |
| `notifyMessage` | String | No | Mensaje personalizado para incluir en el email de notificación. P. ej. `¡Nuevo Build listo para pruebas!`. |
| `notifyLanguage` | String | No | Idioma del email de notificación. Valores admitidos: `en`, `es`, `fr`, `de`, `it`, `zh`, `pt`, `ru`. |
| `filter` | Array anidado | No | Limita las notificaciones a grupos de empleados específicos. Admite lógica AND/OR. Cada array interno es una cláusula AND; cada elemento externo es una cláusula OR. |

**Información del deployer de CI/CD**

Estos campos opcionales rellenan los metadatos de despliegue de la Build en el panel de Applivery, facilitando rastrear una Build hasta su origen en CI/CD.

| Parámetro | Tipo | Descripción |
| --- | --- | --- |
| `deployer.name` | String | Nombre visible del sistema CI/CD. P. ej. `Jenkins CI`, `Bitrise`, `GitHub Actions`. |
| `deployer.info.commitMessage` | String | Mensaje del commit de Git asociado a esta Build. |
| `deployer.info.commit` | String | SHA del commit de Git. P. ej. `f52ace0`. |
| `deployer.info.branch` | String | Nombre de la rama de Git. P. ej. `develop`, `release/2.4`. |
| `deployer.info.tag` | String | Etiqueta de Git asociada a esta Build. P. ej. `RC-1`, `v2.4.0`. |
| `deployer.info.triggerTimestamp` | String | Timestamp Unix (ms) de cuando se disparó la Build de CI. P. ej. `1558359012580`. |
| `deployer.info.buildUrl` | String | URL directa a la ejecución de la Build de CI. |
| `deployer.info.ciUrl` | String | URL base de la plataforma de CI. |
| `deployer.info.repositoryUrl` | String | URL del repositorio de control de versiones. |
| `deployer.info.buildNumber` | String | Número de build de la plataforma de CI. P. ej. `173`. |

### Ejemplo de petición

```bash
curl 'https://upload.applivery.io/v1/integrations/builds' \
  -X POST \
  --retry 5 \
  --fail \
  -H 'Authorization: Bearer YOUR_APP_TOKEN' \
  -F 'build=@file.ipa' \
  -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'
```

### Respuestas

**✓ 200 OK**

```json
{
  "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": "user@example.com",
      "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"
  }
}
```

**✗ 400 Bad Request**

```json
{
  "status": false,
  "error": {
    "code": 5024,
    "message": "Slug already used"
  }
}
```

**✗ 401 Unauthorized**

```json
{
  "status": false,
  "error": {
    "code": 3002,
    "message": "Token Expired"
  }
}
```

**✗ 404 Not Found**

```json
{
  "status": false,
  "error": {
    "code": 3001,
    "message": "Entity not found"
  }
}
```

:::info
El `status` de la Build en la respuesta será inicialmente `pending`. Applivery procesa la Build de forma asíncrona — el estado se actualizará a `success` o `error` una vez finalizado el procesamiento. Usa el endpoint [GET – Detalles de la Build](https://docs.applivery.com/en/app-distribution/api/builds/build-details/) para hacer polling del estado final si es necesario.
:::

Para la lista completa de códigos de error durante el procesamiento de builds, consulta [Códigos de procesamiento de Builds](https://docs.applivery.com/en/app-distribution/builds/processing-error-codes/).

* * *

## Workspace API

Usa este endpoint para cargar Builds a nivel de Workspace — por ejemplo, en flujos de trabajo de platform engineering donde una sola credencial gestiona varias Apps en una organización.

La autenticación usa un token de **cuenta de servicio**, con ámbito de Workspace y no vinculado a ninguna app individual. El contexto de la app se proporciona explícitamente mediante parámetros de ruta.

Para crear un token de una cuenta de servicio, consulta [Cuentas de servicio](https://docs.applivery.com/en/platform/api/service-accounts/).

### Endpoint

```
POST https://upload.applivery.io/v1/organizations/{organizationId}/apps/{applicationId}/builds
```

### Parámetros de ruta

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `organizationId` | String | Sí | El identificador único de tu organización en Applivery. |
| `applicationId` | String | Sí | El identificador único de la App a la que cargar la Build. |

### Autenticación

```
Authorization: Bearer <your_service_account_token>
```

### Formato de la petición

`multipart/form-data`

### Parámetros

La Workspace API acepta los mismos parámetros de archivo de build, metadatos, notificaciones y deployer que la Integrations API.

### Ejemplo de petición

```bash
curl 'https://upload.applivery.io/v1/organizations/ORG_ID/apps/APP_ID/builds' \
  -X POST \
  -H 'Authorization: Bearer YOUR_SERVICE_ACCOUNT_TOKEN' \
  -F 'build=@file.apk' \
  -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'
```
