# Token y URL de Descarga

> Descarga Builds de Applivery de forma programática mediante la API. Genera tokens de descarga y resuelve URLs de descarga para archivos .apk, .ipa y .aab.

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

**Answers:** ¿Cómo descargo una Build de Applivery de forma programática? · ¿Qué tipo de token se necesita para generar un token de descarga? · ¿Cuál es el endpoint para generar un token de descarga? · ¿Qué parámetros se necesitan para generar un token de descarga? · ¿Qué hace el parámetro type al generar un token de descarga? · ¿Cuál es el endpoint para resolver la URL de descarga? · ¿Qué método HTTP se usa para resolver la URL de descarga? · ¿Qué ocurre si el token de descarga ha caducado?

---

**TL;DR:** Descarga builds de Applivery de forma programática generando un token de descarga de corta duración con una Cuenta de servicio o un App API Token.

Descargar una Build de forma programática requiere un **proceso de dos pasos**: primero generar un token de descarga de corta duración y luego usar ese token para resolver la URL de descarga real. La URL de descarga se sirve mediante una respuesta de redirección.

:::warning
A diferencia de otros endpoints de builds, el endpoint de token de descarga **solo está disponible a través de la Workspace API** y requiere un **token de una cuenta de servicio** o un token de sesión de usuario obtenido al iniciar sesión. La Integrations API (App API Token) no admite este endpoint.
:::

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

* * *

## Resumen: flujo de descarga

```
Paso 1: Genera un token de descarga
  GET /v1/organizations/{organizationId}/apps/{applicationId}/builds/{buildId}/downloadToken
  → devuelve { token, expiresAt }

Paso 2: Resuelve la URL de descarga
  GET https://download-api.applivery.io/v1/download/{token}
  → redirección HTTP 302 a la URL real del archivo
```

* * *

**Genera un token de descarga**

Genera un token de corta duración y uso único que autoriza la descarga de un archivo de Build concreto.

**Endpoint**

```
GET https://api.applivery.io/v1/organizations/{organizationId}/apps/{applicationId}/builds/{buildId}/downloadToken
```

**Autenticación**

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

**Parámetros de ruta**

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `organizationId` | String | Sí | El identificador único (o slug) de tu organización en Applivery. |
| `applicationId` | String | Sí | El identificador único de la App a la que pertenece la Build. |
| `buildId` | String | Sí | El identificador único de la Build que quieres descargar. Devuelto por POST – Subir una Build y GET – Lista de Builds. |

**Parámetros de consulta**

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `type` | String | Sí | Especifica el formato de archivo para el que generar el token de descarga. Consulta los valores a continuación. |

**Valores de `type`**

| Valor | Descripción |
| --- | --- |
| `auto` | Comportamiento por defecto. Devuelve un `.apk` para Builds Android, o el manifest (`.plist`) para Builds Apple. Esta es la opción estándar para flujos de instalación OTA. |
| `file` | Devuelve el archivo binario original. Para Builds Apple, es el archivo `.ipa` o `.pkg` en lugar del manifest. Úsalo cuando necesites el archivo real en vez de un enlace de instalación OTA. |
| `aab` | Para Builds Android subidos originalmente como `.aab`, devuelve el archivo `.aab` original en lugar del `.apk` universal que genera Applivery. |

**Ejemplo de petición**

```bash
curl 'https://api.applivery.io/v1/organizations/MY_ORG_SLUG/apps/MY_APP_ID/builds/MY_BUILD_ID/downloadToken?type=file' \
  -X GET \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer YOUR_SERVICE_ACCOUNT_TOKEN'
```

**Respuestas**

**✓ 200 OK**

```json
{
  "status": true,
  "data": {
    "token": "string",
    "expiresAt": "string"
  }
}
```

**✗ 400 Bad Request**

Build aún no procesada. La Build existe pero aún no ha terminado de procesarse. Solo las Builds con `status: processed` pueden generar tokens de descarga.

```json
{
  "status": false,
  "error": {
    "code": 5014,
    "message": "Build Not Processed"
  }
}
```

**✗ 401 Unauthorized**

```json
{
  "status": false,
  "error": {
    "code": 4002,
    "message": "No auth token"
  }
}
```

**✗ 404 Not Found**

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

| Campo | Descripción |
| --- | --- |
| `token` | La cadena del token de descarga. Pásalo como parámetro de ruta en el paso 2 para resolver la URL de descarga. |
| `expiresAt` | Timestamp ISO 8601 que indica cuándo caduca el token. Los tokens son de corta duración — úsalos pronto tras generarlos. |

**Resuelve la URL de descarga**

Usa el token obtenido en el paso 1 para obtener la URL de descarga real del archivo. La API responde con una redirección HTTP `302 Found` al almacenamiento del archivo.

:::warning
**No se requiere autenticación**. Este endpoint es público — el propio token actúa como credencial. Cualquier persona con el token puede descargar el archivo, así que trátalo como información sensible y no lo compartas más allá del destinatario previsto.
:::

**Endpoint**

```
GET https://download-api.applivery.io/v1/download/{token}
```

**Parámetros de ruta**

| Parámetro | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `token` | String | Sí | El token de descarga devuelto en el paso 1. |

**Ejemplo de petición**

```bash
curl -L 'https://download-api.applivery.io/v1/download/YOUR_DOWNLOAD_TOKEN' \
  -o downloaded_build.ipa
```

:::info
El flag `-L` indica a curl que siga la redirección `302` automáticamente. Sin él, recibirás la respuesta de redirección con la cabecera `Location` que contiene la URL real del archivo, pero el archivo no se descargará.
:::

**Comportamiento de redirección por plataforma**

La URL en la cabecera de redirección `Location` varía según la plataforma y el valor del parámetro `type` usado en el paso 1:

| Plataforma | Valor de `type` | Destino de la redirección |
| --- | --- | --- |
| **Android** | `auto` | Archivo `.apk` universal |
| **Android** | `aab` | Archivo `.aab` original |
| **Apple** | `auto` | Manifest OTA (`.plist`) — para instalación OTA mediante MDM o enlace directo |
| **Apple** | `file` | Binario original — `.ipa` para iOS, `.pkg` para macOS |

**Respuestas**

**✓ 302 Found**

Redirección a la URL del archivo.
La respuesta no tiene cuerpo. La URL de descarga real está en la cabecera de respuesta `Location`. Sigue la redirección para descargar el archivo.

**✗ 401 Unauthorized**

Token caducado. Los tokens de descarga son de corta duración. Si ha caducado, genera uno nuevo desde el paso 1.

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

**✗ 404 Not Found**

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

* * *

## Ejemplo completo: descargar un archivo de Build

```bash
# Paso 1: Genera el token de descarga
TOKEN=$(curl -s \
  'https://api.applivery.io/v1/organizations/MY_ORG/apps/MY_APP/builds/MY_BUILD/downloadToken?type=file' \
  -H 'Authorization: Bearer YOUR_SERVICE_ACCOUNT_TOKEN' \
  | jq -r '.data.token')

# Paso 2: Descarga el archivo siguiendo la redirección
curl -L \
  "https://download-api.applivery.io/v1/download/$TOKEN" \
  -o my_build.ipa
```
