AutomatizaciónFormularios
Automatización

Formularios

Formularios públicos personalizables con respuestas y datos de contacto

curl https://app.getplea.com/api/forms \
  -H "Authorization: Bearer TOKEN" \
  -H "x-organization-id: ORG_ID"
[
  {
    "id": "form-uuid-1",
    "title": "Formulario de contacto",
    "slug": "contacto",
    "isActive": true,
    "responsesCount": 28,
    "publicUrl": "https://app.getplea.com/f/contacto",
    "createdAt": "2026-01-10T09:00:00Z"
  },
  {
    "id": "form-uuid-2",
    "title": "Consulta laboral",
    "slug": "consulta-laboral",
    "isActive": true,
    "responsesCount": 12,
    "publicUrl": "https://app.getplea.com/f/consulta-laboral",
    "createdAt": "2026-02-01T10:00:00Z"
  }
]
curl https://app.getplea.com/api/forms/form-uuid-1 \
  -H "Authorization: Bearer TOKEN" \
  -H "x-organization-id: ORG_ID"
{
  "id": "form-uuid-1",
  "title": "Formulario de contacto",
  "description": "Complete el formulario y nos pondremos en contacto en 24h",
  "slug": "contacto",
  "isActive": true,
  "fields": [
    {"id": "f1", "type": "text", "label": "Nombre completo", "required": true},
    {"id": "f2", "type": "email", "label": "Email", "required": true},
    {"id": "f3", "type": "phone", "label": "Teléfono", "required": false},
    {"id": "f4", "type": "select", "label": "Tipo de consulta", "required": true, "options": ["Civil", "Laboral", "Penal", "Mercantil", "Otro"]},
    {"id": "f5", "type": "textarea", "label": "Descripción del caso", "required": true}
  ],
  "settings": {
    "submitButtonText": "Enviar consulta",
    "successMessage": "Gracias por su consulta. Le contactaremos en breve.",
    "notifyEmail": "info@despacho.com",
    "createClient": true
  }
}
curl -X POST https://app.getplea.com/api/forms \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -H "x-organization-id: ORG_ID" \
  -d '{
    "title": "Solicitud de presupuesto",
    "slug": "presupuesto",
    "fields": [
      {"type": "text", "label": "Nombre", "required": true},
      {"type": "email", "label": "Email", "required": true},
      {"type": "textarea", "label": "Describa su caso", "required": true}
    ],
    "settings": {
      "submitButtonText": "Solicitar presupuesto",
      "successMessage": "Recibirá su presupuesto en 48 horas",
      "createClient": true
    }
  }'
{
  "id": "form-uuid-new",
  "title": "Solicitud de presupuesto",
  "slug": "presupuesto",
  "isActive": true,
  "publicUrl": "https://app.getplea.com/f/presupuesto",
  "createdAt": "2026-03-07T12:00:00Z"
}
curl https://app.getplea.com/api/forms/form-uuid-1/responses \
  -H "Authorization: Bearer TOKEN" \
  -H "x-organization-id: ORG_ID"
[
  {
    "id": "resp-uuid-1",
    "formId": "form-uuid-1",
    "data": {
      "Nombre completo": "Laura Sánchez Pérez",
      "Email": "laura.sanchez@email.com",
      "Teléfono": "+34 633 444 555",
      "Tipo de consulta": "Laboral",
      "Descripción del caso": "Necesito asesoramiento sobre un despido improcedente..."
    },
    "createdClientId": "client-uuid-auto",
    "submittedAt": "2026-03-06T15:30:00Z"
  }
]
curl https://app.getplea.com/api/public/forms/contacto
{
  "title": "Formulario de contacto",
  "description": "Complete el formulario y nos pondremos en contacto en 24h",
  "fields": [
    {"id": "f1", "type": "text", "label": "Nombre completo", "required": true},
    {"id": "f2", "type": "email", "label": "Email", "required": true},
    {"id": "f3", "type": "phone", "label": "Teléfono", "required": false},
    {"id": "f4", "type": "select", "label": "Tipo de consulta", "required": true, "options": ["Civil", "Laboral", "Penal", "Mercantil", "Otro"]},
    {"id": "f5", "type": "textarea", "label": "Descripción del caso", "required": true}
  ],
  "settings": {
    "submitButtonText": "Enviar consulta"
  }
}
curl -X POST https://app.getplea.com/api/public/forms/contacto/responses \
  -H "Content-Type: application/json" \
  -d '{
    "data": {
      "Nombre completo": "Miguel Torres García",
      "Email": "miguel@email.com",
      "Tipo de consulta": "Civil",
      "Descripción del caso": "Necesito reclamar una deuda de 5.000€"
    }
  }'
{
  "message": "Gracias por su consulta. Le contactaremos en breve.",
  "responseId": "resp-uuid-new"
}

Endpoints para crear formularios públicos embebibles en páginas web, recoger respuestas de potenciales clientes y gestionar los datos recibidos.

GET /api/forms

Lista los formularios de la organización.


GET /api/forms/:id

Obtiene la configuración completa de un formulario con sus campos.

path
idstring
Required

UUID del formulario.


POST /api/forms

Crea un nuevo formulario.

body
titlestring
Required

Título del formulario.

body
descriptionstring

Descripción para el usuario.

body
slugstring
Required

URL amigable (debe ser única).

body
fieldsarray
Required

Array de campos con type, label, required, y opcionales options, placeholder.

body
settingsobject

Configuración: submitButtonText, successMessage, notifyEmail, createClient.


GET /api/forms/:id/responses

Lista las respuestas recibidas en un formulario.

path
idstring
Required

UUID del formulario.


Endpoints públicos

Estos endpoints no requieren autenticación y están diseñados para ser usados desde formularios embebidos en páginas web.

GET /api/public/forms/:slug

Obtiene la configuración del formulario para renderizarlo públicamente.

path
slugstring
Required

Slug del formulario.


POST /api/public/forms/:slug/responses

Envía una respuesta a un formulario público.

path
slugstring
Required

Slug del formulario.

body
dataobject
Required

Objeto con las respuestas (clave = label del campo, valor = respuesta).