Para desarrolladores

Una sencilla API REST

Lee y gestiona tus formularios y envíos desde tu propio sistema, Zapier, Make o tu propio agente de IA. Autentícate con una clave API de tu cuenta y recibe respuestas JSON limpias. En cada clave eliges leer o también escribir — con seguridad a nivel de cuenta.

Primeros pasos

Todas las solicitudes se envían a la URL base y llevan tu clave como token Bearer; la respuesta siempre es application/json. Por cada clave determinas por componente (formularios, envíos) si puede leer o también puede escribir — los permisos de escritura nunca se conceden automáticamente.

URL base

https://app.formuliermet.nl/api/v1

Autenticación

curl https://app.formuliermet.nl/api/v1/me \
  -H "Authorization: Bearer fmb_je_sleutel_hier"

Crea una clave en la aplicación, en Cuenta → API e integraciones. Solo verás la clave completa una vez — guárdala en un lugar seguro. Una clave da acceso a los datos de tu cuenta; puedes revocarla en cualquier momento. El acceso a la API está incluido en los paquetes más completos (consulta las tarifas).

Endpoints

GET
/me
Verifica tu clave y devuelve el id de tu cuenta — útil para probar una integración.
GET
/forms
Formularios de tu cuenta (id, título, slug, activo, número de envíos). Paginado con ?page y ?limit.
GET
/forms/{id}
Un formulario, incluidas las definiciones de campos (id, tipo, etiqueta, obligatorio).
GET
/forms/{id}/submissions
Envíos de un formulario, los más recientes primero. Pagina con ?page y ?limit (máx. 100); obtén solo los nuevos con ?since=<fecha-ISO> — ideal para integraciones por sondeo (polling).
GET
/submissions/{id}
Un envío con todos los campos completados en data.
POST
/forms
Crea un formulario. scope forms:write
PATCH
/forms/{id}
Actualiza un formulario (título, campos, ajustes). scope forms:write
POST
/forms/{id}/publish · /duplicate · /open · /close
Publica, duplica o abre/cierra un formulario. scope forms:write
POST
/submissions/{id}/approve · /reject · /note · /reminder
Aprueba o rechaza, añade una nota interna o envía un recordatorio de pago. scope submissions:write
DELETE
/submissions/{id}
Elimina un envío, incluidos los archivos subidos (registrado según el RGPD). scope submissions:write

Ejemplo: obtener envíos

curl "https://app.formuliermet.nl/api/v1/forms/FORM_ID/submissions?limit=2" \
  -H "Authorization: Bearer fmb_je_sleutel_hier"

Respuesta

{
  "data": [
    {
      "id": "ckv8s2...",
      "formId": "ckv7a1...",
      "sequenceNumber": 42,
      "status": "paid",
      "amountCents": 2500,
      "email": "deelnemer@example.com",
      "paymentMethod": "ideal",
      "createdAt": "2026-06-01T14:30:00.000Z",
      "updatedAt": null,
      "data": { "naam": "Jan Jansen", "aantal": 2 }
    }
  ],
  "page": 1,
  "limit": 2,
  "total": 42
}

Webhooks y eventos en tiempo real

¿Prefieres que los datos lleguen directamente a ti? Configura webhooks por formulario: enviamos un mensaje JSON mediante POST a tu URL HTTPS en cuanto ocurre algo — o a un conector como Zapier o Make. También puedes recibir un aviso en tu equipo, directamente en Slack o Microsoft Teams.

Eventos a los que puedes suscribirte

EVENTO
submission.created · submission.paid
Nuevo envío recibido y pago completado.
EVENTO
submission.approved
Envío aprobado en un flujo de revisión.
EVENTO
ticket.checked_in · waitlist.joined
Entrada validada en la puerta, o una inscripción en la lista de espera.
EVENTO
subscription.started · subscription.cancelled
Pago recurrente iniciado o cancelado.
EVENTO
form.published
Se ha publicado una nueva versión de tu formulario.

Cada mensaje está firmado con HMAC-SHA256; si algo falla, lo reintentamos automáticamente (hasta varias horas) y ves un registro de entregas por formulario. Los payloads exactos, todas las cabeceras y código de verificación listo para usar (Node.js y Python) están en la documentación interactiva.

→ Documentación interactiva de la API  ·  Especificación OpenAPI (JSON)

Errores y límites

400
Solicitud no válida — falta un campo en el cuerpo o no es correcto.
401
Falta la clave, no es válida o ha sido revocada.
403
Tu paquete no incluye acceso a la API (mejora tu plan en tarifas), o a tu clave le falta el scope de escritura necesario para esta acción.
404
No encontrado, o el formulario/envío no pertenece a tu cuenta.
409
Conflicto — por ejemplo, una URL personalizada elegida que ya está en uso.
429
Demasiadas solicitudes. Se aplica un límite amplio por clave y por hora.

Cada clave ve exclusivamente los datos de su propia cuenta. Nunca mostramos la configuración de tu formulario ni tus integraciones de pago a través de la API — solo las definiciones de campos y los envíos.

¿Prefieres una integración lista para usar?

Usa webhooks, o incorpora tu formulario en tu propia web — sin necesidad de código.