diff --git a/api/lab/save_formulario.php b/api/lab/save_formulario.php
index e74bccb..d2e7b1a 100644
--- a/api/lab/save_formulario.php
+++ b/api/lab/save_formulario.php
@@ -22,6 +22,21 @@ try {
jsonOk(['id' => (int)$datos['id']], 'Formulario eliminado');
}
+ // Clonar
+ if (!empty($datos['id']) && !empty($datos['clonar'])) {
+ $original = $form->obtener((int)$datos['id']);
+ if (!$original) jsonError('Formulario no encontrado', 404);
+ $nuevoId = $form->crear([
+ 'nombre' => 'Copia de ' . $original['nombre'],
+ 'descripcion' => $original['descripcion'] ?? null,
+ 'categoria' => $original['categoria'] ?? 'otro',
+ 'esquema' => $original['esquema'] ?? '[]',
+ 'permite_firma' => $original['permite_firma'] ?? 0,
+ 'requiere_firma' => $original['requiere_firma'] ?? 0,
+ ], $admin);
+ jsonOk(['id' => $nuevoId], 'Formulario clonado');
+ }
+
// Editar
if (!empty($datos['id'])) {
$id = (int)$datos['id'];
diff --git a/lab_formularios.php b/lab_formularios.php
index a96c004..ea93d47 100644
--- a/lab_formularios.php
+++ b/lab_formularios.php
@@ -445,6 +445,8 @@ function renderFormularios() {
Enviar
${PUEDE_ESCRIBIR ? `
+