---
title: "Save Energy Certificate Form"
method: POST
path: "/api/budget/energy-certificate-form"
tags: ["copilot_frontend", "copilot_budget"]
---

# Save Energy Certificate Form

`POST /api/budget/energy-certificate-form`

Guarda los datos del formulario de certificado energético.

Si existe un presupuesto del mismo email + comercial creado HOY, actualiza el campo datos_certificado_energetico.
Si no existe, crea un nuevo presupuesto con solo el email y datos_certificado_energetico.

**🔒 Protected Endpoint:** Requires JWT authentication and 'ui_comercial' or 'admin' role

Args:
    request: Datos del formulario (email, todos los campos del certificado)
    current_user: Current authenticated user
    db: Database session

Returns:
    SaveEnergyCertificateResponse: Resultado de la operación

Raises:
    ErrValidation: Si el usuario no tiene comercial_id asignado

## Request body

- SaveEnergyCertificateRequest — Request para guardar datos del certificado energético. Todos los campos son opcionales excepto email.
  - `email` string, required — Email del cliente
  - `presupuesto_id` integer, nullable — ID del presupuesto a actualizar (si existe)
  - `comercial_id` integer, nullable — ID del comercial (requerido para crear; admin puede pasarlo para actuar en nombre de otro comercial)
  - `dormitorios_simples` integer, nullable — Número de dormitorios simples
  - `dormitorios_dobles` integer, nullable — Número de dormitorios dobles
  - `tipo_instalacion_acs_id` integer, nullable — ID del tipo de instalación de ACS
  - `tipo_instalacion_climatizacion_id` integer, nullable — ID del tipo de instalación de climatización
  - `tipo_calefaccion_id` integer, nullable — ID del tipo de calefacción
  - `numero_aparatos_climatizacion` integer, nullable — Número de aparatos de calefacción/climatización
  - `tipo_climatizacion_centralizada_id` integer, nullable — ID del tipo de climatización centralizada
  - `caracteristica_cerramiento_id` integer, nullable — ID de la característica de cerramiento
  - `tipo_material_aislamiento_id` integer, nullable — ID del tipo de material de aislamiento
  - `tipo_carpinteria_id` integer, nullable — ID del tipo de carpintería exterior
  - `color_carpinteria_id` integer, nullable — ID del color de carpintería exterior
  - `tipo_vidrio_id` integer, nullable — ID del tipo de vidrio
  - `foto_fachada` union — URL, path o lista de archivos [{name, base64}] de fotos de fachada
    - string
    - object[]
  - `foto_referencia_catastral` union — URL, path o lista de archivos [{name, base64}] de fotos de referencia catastral
    - string
    - object[]
  - `observaciones_certificado_energetico` string, nullable — Observaciones del certificado energético
  - `espesor_del_aislamiento` string, nullable — Espesor del aislamiento
  - `instalacion_equipo_acs` string, nullable — Año de instalación de equipo de agua caliente sanitaria
  - `instalacion_equipo_climatizacion` string, nullable — Año de instalación de equipo de climatización
  - `energias_renovables` string, nullable — Energías renovables disponibles

## Response `200`

Successful Response

- SaveEnergyCertificateResponse — Response del guardado del certificado energético.
  - `success` boolean, required
  - `message` string, required
  - `budget_id` integer, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/hogarsolar/apis/hogarsolar-backend-api.md) · [All operations](https://skmtc.dev/hogarsolar/apis/hogarsolar-backend-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/hogarsolar/hogarsolar-backend-api/revisions/d9861e46bef8/schema)
