> ## Documentation Index
> Fetch the complete documentation index at: https://docs.emiti.fravelabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Descargar KuDE

> Descarga directa del KuDE de un DE, disponible desde la emisión.

Endpoint de conveniencia para descargar el **KuDE** (Kuatia'i Documento Electrónico — representación visual del DE). **Redirige** a una URL pre-firmada de S3 con vigencia de 1 hora, así que tu cliente HTTP debe seguir el redirect.

```bash theme={null}
curl -L -o factura.pdf https://api.emiti.fravelabs.com/v1/de/{cdc}/kude \
  -H "Authorization: ApiKey emiti_k_..."
```

El flag `-L` de cURL sigue el redirect automáticamente.

## Disponible al instante

El KuDE está disponible **apenas emitís el documento**, en estado `P` (pendiente), para que puedas imprimirlo en el acto —por ejemplo, en la caja de un comercio— sin esperar la respuesta de SIFEN. Cuando SIFEN aprueba el documento, este endpoint sirve automáticamente la versión definitiva. Siempre devuelve la representación más reciente disponible.

## Estados posibles

| Status    | Significado                                                                                                                     |
| --------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **`302`** | KuDE listo. El header `Location` apunta a la URL S3 pre-firmada. Disponible desde la emisión (estado `P`) y tras la aprobación. |
| **`202`** | El KuDE aún se está generando. Reintentar en `retry_after_seconds`.                                                             |
| **`409`** | El DE existe pero todavía no tiene KuDE disponible (documentos emitidos antes de esta funcionalidad).                           |
| **`404`** | CDC no existe o pertenece a otro tenant.                                                                                        |
| **`400`** | CDC no tiene 44 caracteres.                                                                                                     |

## Alternativa: detalle del DE

Si ya estás consultando el [detalle completo](/api-reference/detalle), el response incluye `kude_url` con la URL pre-firmada directamente — sin necesidad de una segunda llamada.

## Formato del KuDE

El formato de impresión (hoja A4 o ticket térmico de 80mm) se configura por punto de expedición desde el panel de e-Miti, no como parámetro de este endpoint. La URL devuelta siempre sirve el KuDE en el formato configurado para el punto que emitió el documento.


## OpenAPI

````yaml GET /v1/de/{cdc}/kude
openapi: 3.1.0
info:
  title: eMiti API
  description: >-
    API de emisión de Documentos Tributarios Electrónicos (DTE) bajo SIFEN/DNIT
    Paraguay.
  version: 1.1.0
servers:
  - url: https://api.emiti.fravelabs.com
    description: Producción
  - url: https://api.qa.emiti.fravelabs.com
    description: QA
  - url: https://api.dev.emiti.fravelabs.com
    description: Desarrollo (Homologación SIFEN)
security:
  - ApiKeyAuth: []
paths:
  /v1/de/{cdc}/kude:
    get:
      summary: GET /v1/de/{cdc}/kude
      operationId: descargar_kude_v1_de__cdc__kude_get
      parameters:
        - required: true
          schema:
            type: string
            title: Cdc
          name: cdc
          in: path
      responses:
        '200':
          description: Successful Response
          content:
            application/json: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization

````