Autenticación

Envía tu API Key de DatosPerú en Authorization: Bearer. La cuenta debe estar verificada y la clave debe tener permiso para esta operación. Guarda la clave en tu servidor o en el almacén de credenciales de tu herramienta.

Cuerpo JSON

Envía Content-Type: application/json. Los valores de entrada se expresan como cadenas. Los parámetros adicionales se rechazan.

CampoObligatorioFormato
rucRUC de la empresa
^[0-9]{11}$
usuarioUsuario SOL
passwordContraseña SOL
proveedorRUC 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.
^[0-9]{11}$
tipo_docTipo de documento
serieSerie del comprobante
correlativoNúmero correlativo

Ejemplo cURL

Los números y las credenciales del ejemplo son ilustrativos. Sustitúyelos por datos cuya consulta tengas autorizada. Una petición exitosa utiliza créditos reales.

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 la respuesta

Una consulta exitosa devuelve success: true, data y meta. El siguiente esquema corresponde a data. Los campos opcionales dependen de la fuente; null indica ausencia de valor.

{
  "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
}

meta.request_id identifica la solicitud y meta.timestamp utiliza una fecha ISO 8601. No registres los datos personales o archivos completos cuando solo necesites identificar un incidente.

Errores y reintentos

Los errores devuelven success: false y un objeto error con code y message. Un error del proveedor libera la reserva de crédito. Evita reintentar entradas inválidas o claves revocadas.

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

Consumo y disponibilidad

Una consulta exitosa consume un crédito. Gratis incluye 100 créditos cada 30 días. Los planes pagados renuevan según su periodo contratado; cada plan conserva un límite por minuto. Revisa los valores vigentes en Precios.

La disponibilidad depende de la fuente y la configuración del servicio. DatosPerú es independiente de las entidades públicas mencionadas y utiliza JSON.pe como proveedor. Consulta solo los datos que estés autorizado a tratar.