Feedback AnalyticsFeedback Analytics

Developers

Feedback Analytics API

Gebruik de Feedback Analytics API om formulieren, responses, datatables en events te integreren in je eigen applicaties, dashboards en automatiseringen.

REST APIJSONAPI Key AuthOpenAPIRate Limited

Base URL

https://feedback-analytics.com/api/v1

Intro

Eén REST API voor alles: workspaces en formulieren opvragen (incl. schema en analytics), formulierresponses ophalen (met antwoorden, score, koppeling aan datatable), datatabellen beheren (CRUD op rijen), e-mailhistorie en events. API-key authenticatie. Geschikt voor Zapier, Make, n8n en eigen apps.

Quick start

Stap 1: maak een API key

API-sleutel aanmaken: Ga in Feedback Analytics naar je workspace → Instellingen → sectie "API-sleutels" en klik op "Nieuwe sleutel". Bewaar de sleutel (begint met fa_); hij wordt maar één keer getoond.

Stuur de key mee via de header X-API-Key.

Stap 2: doe je eerste request

bash
curl https://feedback-analytics.com/api/v1/workspaces \
  -H "X-API-Key: YOUR_API_KEY"

Stap 3: begrijp de response

Elke succes-response heeft hetzelfde envelope: data, meta, links, request_id.

json
{
  "data": [
    {
      "id": "ws_123",
      "name": "Main workspace",
      "link": "my-workspace"
    }
  ],
  "meta": {},
  "links": {},
  "request_id": "req_abc123"
}

Authenticatie

Stuur bij elk request de header X-API-Key met je API-sleutel. Sleutels beginnen met fa_. Je API-sleutel heeft toegang tot één of meerdere workspaces; je mag alleen resources van die workspaces opvragen.

Maak een API-sleutel aan in Workspace instellingen → API-sleutels (na inloggen). Bewaar je sleutel veilig en deel deze nooit in frontend-code of publieke repos.

bash
curl "https://feedback-analytics.com/api/v1/workspaces" \
  -H "X-API-Key: fa_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Response format

Elke succes-response heeft exact vier top-level velden. Errors hebben error en request_id.

data

De resource of lijst resources.

meta

Extra metadata, o.a. paginering (limit, has_more).

links

Navigatie: self, next, prev (bij lijsten).

request_id

Unieke id voor debugging en support.

json
{
  "data": {},
  "meta": {},
  "links": {},
  "request_id": "req_abc123"
}

Foutcodes

Bij een fout retourneert de API JSON met error, message en optioneel details.

json
{
  "error": {
    "code": "resource_not_found",
    "message": "Resource not found",
    "status": 404
  },
  "request_id": "req_abc123"
}

Error codes

CodeHTTPWanneer
invalid_api_key401Ontbrekende of ongeldige API-key.
api_key_expired401Key ingetrokken of verlopen.
insufficient_scope403Key mist vereiste scope.
workspace_access_denied403Geen toegang tot deze workspace.
resource_not_found404Resource niet gevonden of geen toegang.
validation_error400Ongeldige body/query; zie details.
conflict409Bijv. dubbele unieke waarde.
idempotency_replay409Zelfde Idempotency-Key, andere body.
rate_limit_exceeded429Retry na Retry-After header.
internal_error500Serverfout; retry met backoff.

Pagination

Cursor-based: gebruik limit (standaard 20, max 100) en cursor voor de volgende pagina. Gebruik links.next voor de volgende URL.

bash
curl "https://feedback-analytics.com/api/v1/workspaces/WORKSPACE_ID/responses?limit=20&cursor=resp_123" \
  -H "X-API-Key: YOUR_API_KEY"
  • • default limit = 20, max limit = 100
  • • cursor-based; geen page/offset
  • • meta.has_more geeft aan of er meer pagina's zijn

Filtering & sort

Query parameters per resource. Veelvoorkomend: form_id, created_after, created_before, score_gte, score_lte. Sort: sort=veld:richting (asc of desc).

bash
curl "https://feedback-analytics.com/api/v1/workspaces/WORKSPACE_ID/responses?form_id=form_123&limit=20" \
  -H "X-API-Key: YOUR_API_KEY"
bash
curl "https://feedback-analytics.com/api/v1/workspaces/WORKSPACE_ID/responses?created_after=2026-01-01&score_gte=8" \
  -H "X-API-Key: YOUR_API_KEY"
bash
curl "https://feedback-analytics.com/api/v1/workspaces/WORKSPACE_ID/responses?sort=created_at:desc" \
  -H "X-API-Key: YOUR_API_KEY"

Resources

Alle endpoints zijn genest onder /api/v1/workspaces/{workspace_id}. Vervang workspace_id met de id uit GET /workspaces.

Waar vind ik workspace_id en table_id?

In de app gebruik je vaak de link van je workspace. De API gebruikt daarentegen de interne workspace_id en table_id (lange CUID-strings).

  • workspace_id: Haal de lijst op met GET /api/v1/workspaces; de response bevat voor elke workspace een id (en name, link). Gebruik die id als workspace_id in alle andere endpoints.
  • table_id of datatable_id: Na GET …/tables of …/datatables krijg je een lijst met id en name; gebruik de id in …/datatables/{datatable_id}/rows.

Workspaces

Workspaces die de API-key kan benaderen. Gebruik de id als workspace_id in alle andere endpoints.

GET/api/v1/workspaces

Lijst workspaces

GET/api/v1/workspaces/{workspace_id}

Eén workspace ophalen

bash
curl "https://feedback-analytics.com/api/v1/workspaces" -H "X-API-Key: YOUR_API_KEY"

Forms

Je kunt de formulieren in een workspace opvragen (lijst en details), het formulierschema ophalen (vragen, types, opties, validatie; handig voor integraties) en een analytics-samenvatting (totaal responses, gemiddelde score, laatste response). Het schema-endpoint ondersteunt If-None-Match / ETag voor caching. Zie het overzicht hieronder en de OpenAPI-specificatie voor alle parameters.

GET/api/v1/workspaces/{workspace_id}/forms

Lijst formulieren

GET/api/v1/workspaces/{workspace_id}/forms/{form_id}

Eén formulier, ?include=questions

GET/api/v1/workspaces/{workspace_id}/forms/{form_id}/schema

Formulierschema (ETag)

GET/api/v1/workspaces/{workspace_id}/forms/{form_id}/analytics/summary

Analytics-samenvatting

Questions

Vragen horen bij een formulier. Alleen lezen in v1.

GET/api/v1/workspaces/{workspace_id}/forms/{form_id}/questions

Lijst vragen

GET/api/v1/workspaces/{workspace_id}/forms/{form_id}/questions/{question_id}

Eén vraag

Responses

Haal formulierresponses op: lijst met paginering, filter en sort, of één response op ID. Elke response bevat antwoorden, score, koppeling aan formulier en datatable (row_id). Wanneer iemand het formulier via een e-maillink heeft ingevuld, krijg je respondent_email en email_id. Met include_table_data=true krijg je de datatable-rij zoals die was op het moment van invullen. Ideaal voor rapportages, CRM-sync of eigen dashboards.

GET/api/v1/workspaces/{workspace_id}/responses

Lijst responses (alle formulieren)

GET/api/v1/workspaces/{workspace_id}/responses/{response_id}

Eén response

GET/api/v1/workspaces/{workspace_id}/forms/{form_id}/responses

Lijst responses van één formulier

Veelgebruikte filters

form_id, created_after, created_before, score_gte, score_lte

bash
curl "https://feedback-analytics.com/api/v1/workspaces/WORKSPACE_ID/responses?form_id=form_123&limit=20" \
  -H "X-API-Key: YOUR_API_KEY"
json
{
  "data": [
    {
      "id": "resp_123",
      "form_id": "form_123",
      "score": 8,
      "created_at": "2026-03-10T12:00:00Z",
      "answers": [],
      "respondent_email": null,
      "row_id": null
    }
  ],
  "meta": { "limit": 20, "has_more": false },
  "links": { "self": "...", "next": null, "prev": null },
  "request_id": "req_abc123"
}

Datatables

Beheer rijen in je datatabellen: lijst tabellen, velden ophalen, rijen lezen met filter en sort, één rij of meerdere rijen toevoegen/bijwerken (upsert op data.id), of verwijderen.

GET/api/v1/workspaces/{workspace_id}/datatables

Lijst datatables

GET/api/v1/workspaces/{workspace_id}/datatables/{datatable_id}

Eén datatable, ?include=fields

Rows (datatable-rijen)

CRUD op rijen binnen een datatable. Server wijst row_id toe bij POST. PATCH voor partiële update, DELETE voor verwijderen.

GET/api/v1/workspaces/{workspace_id}/datatables/{datatable_id}/rows

Lijst rijen

GET/api/v1/workspaces/{workspace_id}/datatables/{datatable_id}/rows/{row_id}

Eén rij

POST/api/v1/workspaces/{workspace_id}/datatables/{datatable_id}/rows

Rij aanmaken

PATCH/api/v1/workspaces/{workspace_id}/datatables/{datatable_id}/rows/{row_id}

Rij bijwerken

DELETE/api/v1/workspaces/{workspace_id}/datatables/{datatable_id}/rows/{row_id}

Rij verwijderen (204)

bash
curl -X POST "https://feedback-analytics.com/api/v1/workspaces/WORKSPACE_ID/datatables/DATATABLE_ID/rows" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"data": {"email": "jan@voorbeeld.nl", "naam": "Jan"}}'
json
{
  "data": {
    "row_id": "row_abc",
    "email": "jan@voorbeeld.nl",
    "naam": "Jan",
    "created_at": "2026-03-10T12:00:00Z",
    "updated_at": "2026-03-10T12:00:00Z"
  },
  "meta": {},
  "links": {},
  "request_id": "req_abc123"
}

Email events

Haal de historie van e-mail-events op: verzendingen, opens, clicks, bounces, etc. gekoppeld aan email_id, row_id, form_id en flow_id. Handig voor rapportages of sync met je CRM.

GET/api/v1/workspaces/{workspace_id}/email-events

Lijst e-mail events

GET/api/v1/workspaces/{workspace_id}/emails/{email_id}/events

Events voor één e-mail (convenience)

Filters: email_id, type, created_after, created_before, recipient

bash
curl "https://feedback-analytics.com/api/v1/workspaces/WORKSPACE_ID/email-events?limit=20&sort=created_at:desc" \
  -H "X-API-Key: YOUR_API_KEY"

Webhook endpoints

Beheer webhook-URLs voor events. POST om aan te maken, DELETE om te verwijderen.

GET/api/v1/workspaces/{workspace_id}/webhook-endpoints

Lijst webhooks

POST/api/v1/workspaces/{workspace_id}/webhook-endpoints

Webhook aanmaken

GET/api/v1/workspaces/{workspace_id}/webhook-endpoints/{endpoint_id}

Eén webhook

DELETE/api/v1/workspaces/{workspace_id}/webhook-endpoints/{endpoint_id}

Webhook verwijderen (204)

API keys

Lijst metadata van API-keys (geen secrets). POST om een key aan te maken; de secret wordt één keer getoond. DELETE om te revoken.

GET/api/v1/workspaces/{workspace_id}/api-keys

Lijst keys (metadata)

POST/api/v1/workspaces/{workspace_id}/api-keys

Key aanmaken (secret 1x in response)

DELETE/api/v1/workspaces/{workspace_id}/api-keys/{key_id}

Key revoken (204)

Rate limit

Er geldt een rate limit per API-key (ongeveer 60 requests per minuut). De response-headers X-RateLimit-Limit, X-RateLimit-Remaining en X-RateLimit-Reset geven je huidige gebruik weer.

Elke response bevat de headers X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (Unix seconden).

OpenAPI specification

De machine-readable OpenAPI 3.0-spec kun je gebruiken voor client generation, Postman/Insomnia import, tooling en SDK-generation.

OpenAPI spec (JSON)

GET https://feedback-analytics.com/api/v1/openapi

Gebruik in Postman of Insomnia de optie "Import" → "Link" en plak: /api/v1/openapi (met hetzelfde domein als deze pagina).

Deze documentatie volgt de implementatiespecificatie docs/API-ARCHITECTURE-DESIGN.md. Endpointmatrix: docs/API-ENDPOINT-MATRIX.md. Gap-analyse: docs/API-GAP-ANALYSIS.md. OpenAPI: GET /api/v1/openapi. Paginering: cursor + limit (standaard 20, max 100).

API-sleutel nodig?

Maak een sleutel aan in Workspace → Instellingen → API-sleutels, of neem contact op voor ondersteuning.

Geen creditcard · Gratis tot 3 formulieren · Annuleer altijd