# Descargar XML

Descargar XML mediante una consulta autenticada.

POST https://api.datosperu.net/api/v1/sunat/xml

## Autenticación

Authorization: Bearer seguido de una API Key de DatosPerú. Cuenta verificada y permiso para el endpoint. Credencial solo en servidor. Una consulta exitosa consume un crédito.

## Esquema de entrada

```json
{
  "type": "object",
  "required": [
    "ruc",
    "usuario",
    "password",
    "proveedor",
    "tipo_doc",
    "serie",
    "correlativo"
  ],
  "properties": {
    "ruc": {
      "type": "string",
      "description": "RUC de la empresa",
      "pattern": "^[0-9]{11}$",
      "maxLength": 200,
      "minLength": 1
    },
    "usuario": {
      "type": "string",
      "description": "Usuario SOL",
      "maxLength": 200,
      "minLength": 1
    },
    "password": {
      "type": "string",
      "description": "Contraseña SOL",
      "maxLength": 200,
      "minLength": 1
    },
    "proveedor": {
      "type": "string",
      "description": "RUC del emisor del comprobante. Si es una venta (comprobante emitido por tu empresa), usa el mismo valor que el campo ruc. Si es una compra (comprobante que te emitió un tercero), indica el RUC de la empresa que te emitió la factura.",
      "pattern": "^[0-9]{11}$",
      "maxLength": 200,
      "minLength": 1
    },
    "tipo_doc": {
      "type": "string",
      "description": "Tipo de documento",
      "maxLength": 200,
      "minLength": 1
    },
    "serie": {
      "type": "string",
      "description": "Serie del comprobante",
      "maxLength": 200,
      "minLength": 1
    },
    "correlativo": {
      "type": "string",
      "description": "Número correlativo",
      "maxLength": 200,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
```

## Ejemplo ilustrativo (sustituye por datos autorizados)

```sh
curl --request POST 'https://api.datosperu.net/api/v1/sunat/xml' \
  --header "Authorization: Bearer $DATOSPERU_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
  "ruc": "20123456789",
  "usuario": "USUARIO_AUTORIZADO",
  "password": "CLAVE_SOL_DEL_TITULAR",
  "proveedor": "20123456789",
  "tipo_doc": "01",
  "serie": "F001",
  "correlativo": "1"
}'
```

## Schema de data

Una respuesta exitosa contiene success: true, data y meta: {request_id, timestamp}. Campos opcionales o nulos según la fuente.

```json
{
  "type": [
    "object",
    "null"
  ],
  "description": "Archivo ZIP en Base64 con el PDF del comprobante",
  "properties": {
    "pdf_base64": {
      "type": [
        "string",
        "null"
      ],
      "description": "Archivo ZIP codificado en Base64 que contiene el PDF generado"
    }
  },
  "additionalProperties": false
}
```

## Errores

- HTTP 401: API Key ausente, inválida o revocada. Revisa la credencial.
- HTTP 403: Cuenta, verificación o permiso insuficiente. Revisa tu acceso.
- HTTP 404: Sin resultados o ruta inexistente. Comprueba los datos y el endpoint.
- HTTP 422: Parámetros inválidos. Corrige el cuerpo antes de reintentar.
- HTTP 429: Límite por minuto o cuota del periodo. Revisa el código de error y tu consumo.
- HTTP 502 / 504: Error o demora de la fuente. Reintenta con espera y un máximo de intentos.
- HTTP 503: Servicio no disponible o pendiente de configuración. Consulta el estado.

[OpenAPI completo](https://datosperu.net/openapi.json) · [Versión HTML](https://datosperu.net/docs/sunat/xml)
