---
title: "Enlace al PDF de un documento"
method: POST
path: "/v1/tools/notta.dte.enlace_pdf/execute"
tags: ["notta"]
---

# Enlace al PDF de un documento

`POST /v1/tools/notta.dte.enlace_pdf/execute`

## Request

- Base URL: `https://connect.emisso.ai/api`
- URL: `https://connect.emisso.ai/api/v1/tools/notta.dte.enlace_pdf/execute`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://connect.emisso.ai/authorize`, token URL `https://connect.emisso.ai/token`, scopes: `notta:read`)

Devuelve un enlace temporal a la representación impresa (PDF) de un documento emitido. El enlace sirve el archivo sin sesión ni credencial y vence a los 15 minutos, así que se entrega apenas se recibe y no se guarda. Un documento recién emitido todavía no está firmado, y hasta entonces el PDF no existe.

## Headers

- `X-Connect-Connection` string, required

## Request body

- object
  - `input` NottaDteEnlacePdfInput, required
    - `id` string, uuid, required: UUID del documento en Notta. Es el identificador que piden `GET /dtes/{id}`, `/pdf-url`, `/xml-url`, `/events` y `/refresh-status`. No es el folio ni el TrackID del SII.

## Response `200`

La tool corrió bien. 'data' es la salida de la tool tal cual, y 'meta' trae el 'request_id' que identifica esta llamada en la bitácora.

- object
  - `data` NottaDteEnlacePdfOutput, required
    - `url` string, required: Enlace-capacidad de un solo documento (`https://app.notta.cl/d/<token>`). Sirve el PDF SIN sesión ni Bearer: el token es la credencial. Vence a los 15 minutos (D12).
    - `expires_at` string, required: Vencimiento del enlace, ISO 8601.
  - `meta` ResponseMeta
    - `request_id` string, required: Identificador que el servidor le da a esta llamada (req_…). Correlaciona con la fila de la bitácora y es lo primero que pide soporte: guárdalo en tus logs.
    - `operation_request_id` string, uuid: Identidad del intento e-Boleta original. Se conserva al reproducir el resultado del journal; request_id identifica la llamada actual.
    - `tool_id` string, required: La tool que se ejecutó, con su id punteado.
    - `plane` 'action' | 'read', required: 'read' = la llamada escribió en el plano persistido (un sync). 'action' = efímera, no persistió nada de negocio: actuar afuera, o leer lo que un sync ya dejó.
    - `latency_ms` integer, required: Cuánto tardó la ejecución, en milisegundos.
    - `audit_status` 'recorded' | 'degraded', required: 'recorded' = la bitácora recibió la fila de esta llamada. 'degraded' = la acción se hizo pero el registro cayó a un respaldo duradero. Nunca convierte una acción exitosa en un error, porque reintentar por eso sería pagar o emitir dos veces.
    - `idempotency` 'replayed': Presente solo cuando una tool destructiva devolvió la respuesta guardada de un intento previo con la misma Idempotency-Key. Significa que en ESTA llamada no ocurrió ningún efecto nuevo.

## Other responses

- `400`: validation_error (400)
- `401`: unauthorized (401)
- `403`: scope_not_granted | connection_scope_not_enabled | alcance_not_enabled
- `404`: tool_not_found (404)
- `409`: connection_ambiguous | connection_busy
- `428`: connection_credential_required (428)
- `500`: internal_error (500)

---

[API](https://skmtc.dev/emisso/apis/emisso-connect-api.md) · [All operations](https://skmtc.dev/emisso/apis/emisso-connect-api/llms.txt) · [OpenAPI document](https://skmtc.dev/emisso/apis/emisso-connect-api/revisions/e766c01ef2a0?raw)
