Voor ontwikkelaars

Een eenvoudige REST API

Lees én beheer je formulieren en inzendingen vanuit je eigen systeem, Zapier, Make of je eigen AI-agent. Authenticeer met een account-API-sleutel, krijg nette JSON terug. Per sleutel kies je lezen of ook schrijven — account-veilig.

Aan de slag

Alle requests gaan naar de basis-URL en sturen je sleutel mee als Bearer-token; het antwoord is altijd application/json. Per sleutel bepaal je per onderdeel (formulieren, inzendingen) of die mag lezen of ook mag schrijven — schrijfrechten worden nooit automatisch verleend.

Basis-URL

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

Authenticatie

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

Maak een sleutel aan in de app onder Account → API & koppelingen. Je ziet de volledige sleutel maar één keer — bewaar 'm veilig. Een sleutel geeft toegang tot de gegevens van jouw account; je kunt 'm op elk moment intrekken. API-toegang zit in de grotere pakketten (zie tarieven).

Endpoints

GET
/me
Verifieert je sleutel en geeft je account-id terug — handig om een koppeling te testen.
GET
/forms
Formulieren van je account (id, titel, slug, actief, aantal inzendingen). Gepagineerd met ?page en ?limit.
GET
/forms/{id}
Eén formulier, inclusief de velddefinities (id, type, label, verplicht).
GET
/forms/{id}/submissions
Inzendingen van een formulier, nieuwste eerst. Pagineer met ?page en ?limit (max 100); haal alleen nieuwe op met ?since=<ISO-datum> — ideaal voor poll-koppelingen.
GET
/submissions/{id}
Eén inzending met alle ingevulde velden in data.
POST
/forms
Maak een formulier aan. scope forms:write
PATCH
/forms/{id}
Werk een formulier bij (titel, velden, instellingen). scope forms:write
POST
/forms/{id}/publish · /duplicate · /open · /close
Publiceer, dupliceer of open/sluit een formulier. scope forms:write
POST
/submissions/{id}/approve · /reject · /note · /reminder
Keur goed of af, plaats een interne notitie of stuur een betaalherinnering. scope submissions:write
DELETE
/submissions/{id}
Verwijder een inzending incl. geüploade bestanden (AVG-gelogd). scope submissions:write

Voorbeeld: inzendingen ophalen

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

Antwoord

{
  "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 & realtime events

Liever dat de gegevens naar jóú toe komen? Stel per formulier webhooks in: wij POST'en een JSON-bericht naar jouw HTTPS-URL zodra er iets gebeurt — of naar een koppelaar als Zapier of Make. Een melding in je team kan ook, rechtstreeks naar Slack of Microsoft Teams.

Gebeurtenissen om op mee te luisteren

EVENT
submission.created · submission.paid
Nieuwe inzending ontvangen en betaling voltooid.
EVENT
submission.approved
Inzending goedgekeurd in een beoordelingsworkflow.
EVENT
ticket.checked_in · waitlist.joined
Ticket ingecheckt aan de deur, of een wachtlijst-aanmelding.
EVENT
subscription.started · subscription.cancelled
Terugkerende betaling gestart of opgezegd.
EVENT
form.published
Een nieuwe versie van je formulier is gepubliceerd.

Elk bericht is ondertekend met HMAC-SHA256, bij een storing proberen we het automatisch opnieuw (oplopend tot enkele uren) en je ziet per formulier een afleverlog. De exacte payloads, alle headers en kant-en-klare verificatiecode (Node.js & Python) staan in de interactieve documentatie.

→ Interactieve API-documentatie  ·  OpenAPI-spec (JSON)

Fouten & limieten

400
Ongeldige aanvraag — een veld in de body ontbreekt of klopt niet.
401
Sleutel ontbreekt, is ongeldig of ingetrokken.
403
Je pakket bevat geen API-toegang (upgrade via tarieven), of je sleutel mist de vereiste schrijf-scope voor deze actie.
404
Niet gevonden, of het formulier/de inzending hoort niet bij jouw account.
409
Conflict — bijvoorbeeld een gekozen eigen URL die al in gebruik is.
429
Te veel verzoeken. Er geldt een ruime limiet per sleutel per uur.

Elke sleutel ziet uitsluitend de gegevens van het eigen account. We tonen nooit je formulierinstellingen of betaalkoppelingen via de API — alleen de velddefinities en de inzendingen.

Liever kant-en-klaar koppelen?

Gebruik webhooks, of zet je formulier in je eigen website — geen code nodig.