---
title: "Emitir un token de App Installation"
description: "Autentica una Developer Application con una aserción RS256 de un solo uso y emite un token de corta duración para una App Installation aprobada."
---
<nav class="docs-breadcrumb" aria-label="Breadcrumb"><a href="/es/docs/">Documentación de CloudPrint</a><span aria-hidden="true">/</span><span>Referencia de la API</span></nav>

# Emitir un token de App Installation

<p class="docs-lead">Autentica una Developer Application con una aserción RS256 de un solo uso y emite un token de corta duración para una App Installation aprobada.</p>

<div class="api-endpoint-summary"><span class="api-method api-method-post">POST</span><code>/developer-api/v1/app-installations/{installationId}/access-tokens</code><span><strong>Versión de la API:</strong> v1</span><span><strong>operationId:</strong> <code>issueInstallationAccessToken</code></span><a href="/es/docs/api/v1/app-installations/access-token/index.md">Ver como Markdown</a></div>

## Qué hace este método

Autentica una Developer Application con una aserción RS256 de un solo uso y emite un token de corta duración para una App Installation aprobada.

## Autenticación

Envía una aserción RS256 de un solo uso de la Developer Application en `Authorization: Bearer <application_assertion>`. No es un token de acceso de Public API.

## Solicitud

**URL de producción:** `https://public-api.cloudprint.me/developer-api/v1/app-installations/{installationId}/access-tokens`

### Parámetros

| Nombre | Ubicación | Tipo | Obligatorio | Descripción | Restricciones |
| --- | --- | --- | --- | --- | --- |
| `installationId` | path | `string (uuid)` | sí | UUID estable de la App Installation asociada por el integrador. | — |
| `X-Request-Id` | header | `string` | no | Identificador opcional para rastrear la solicitud; CloudPrint devuelve un valor seguro en la cabecera de respuesta. | maxLength: 128; example: `"order-100045-attempt-1"` |

### Cuerpo de la solicitud

**Tipo de contenido:** `application/json`

| Nombre | Tipo | Obligatorio | Descripción | Restricciones |
| --- | --- | --- | --- | --- |
| `permissions` | `array` | no | Permisos aprobados para la App Installation. | — |

### Ejemplos de solicitud

#### cURL

```bash
curl -sS https://public-api.cloudprint.me/developer-api/v1/app-installations/$INSTALLATION_ID/access-tokens \
  -H "Authorization: Bearer $APPLICATION_ASSERTION" \
  -H 'Content-Type: application/json' \
  -d '{"permissions":["documents:write","print_jobs:write"]}'
```

## Respuesta

**Estado HTTP:** `200` — Solicitud completada.

### Campos de respuesta

| Nombre | Tipo | Obligatorio | Descripción | Restricciones |
| --- | --- | --- | --- | --- |
| `access_token` | `string` | sí | Token Bearer OAuth2 de corta duración para solicitudes a Public API. | example: `"eyJ..."` |
| `token_type` | `string` | sí | Tipo de token OAuth2; Public API usa `Bearer`. | enum: `Bearer` |
| `expires_in` | `integer` | sí | Duración del token de acceso en segundos desde su emisión. | min: 1; example: `3600` |
| `installation_id` | `string (uuid)` | sí | UUID estable de la App Installation asociada al recurso. | — |
| `account_id` | `string (uuid)` | sí | UUID estable de la cuenta CloudPrint propietaria del recurso. | — |
| `permissions` | `array` | sí | Permisos aprobados para la App Installation. | — |

### Ejemplo de respuesta

```json
{
  "access_token": "eyJ...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "installation_id": "11111111-1111-4111-8111-111111111111",
  "account_id": "11111111-1111-4111-8111-111111111111",
  "permissions": [
    "agents:read"
  ]
}
```

## Errores

| Estado HTTP | Descripción |
| --- | --- |
| `401` | Falta la autenticación o no es válida. |
| `422` | Uno o varios campos no son válidos. |
| `429` | Se superó el límite de solicitudes; respeta Retry-After. |
| `500` | Error interno de CloudPrint. |

## Recomendaciones de integración

- Crea una aserción nueva para cada solicitud: RS256, el `kid` activo, el `client_id` en `iss` y `sub`, la URL exacta del método en `aud`, una duración máxima de cinco minutos y un `jti` único.
- Asocia el `installation_id` estable a tu cliente. El método no acepta el identificador externo del cliente.
- No se emite un token de actualización. Conserva el token hasta poco antes de `expires_in` y emite otro sin repetir la instalación.

## Documentación relacionada

<div class="docs-card-grid"><a class="docs-card" href="/es/docs/developer-platform/installations/"><strong>Instalaciones y tokens de acceso</strong><span>Instala una aplicación en cuentas de clientes y emite tokens limitados para cada instalación.</span></a>
<a class="docs-card" href="/es/docs/api/v1/authentication/client-context/"><strong>Obtener el contexto actual del cliente API</strong><span>Confirma qué cuenta, aplicación cliente y permisos representa el token de acceso actual.</span></a>
<a class="docs-card" href="/es/docs/api/v1/errors/"><strong>Errores y reintentos de la API de CloudPrint</strong><span>Gestiona estados HTTP, errores legibles por máquina, límites de solicitudes, trazabilidad y reintentos seguros.</span></a></div>

<nav class="docs-resource-links" aria-label="Siguientes pasos"><a href="https://cloudprint.me/status/">Estado del servicio</a><a href="/es/docs/api/v1/explorer/">OpenAPI</a><a href="https://developer.cloudprint.me">Developer Portal</a><a href="https://my.cloudprint.me">Abrir cuenta</a><a href="/docs/legal/privacy/">Política de privacidad</a><a href="/docs/legal/terms/">Términos de uso</a><a href="/docs/legal/payments-and-refunds/">Pagos y reembolsos</a><a href="/docs/legal/data-processing/">Tratamiento de datos</a><a href="/docs/legal/service-level-agreement/">Service Level Agreement</a></nav>