Try it in the API playground
This endpoint is also published as OpenAPI — open the interactive playground to send a real request against your app.
Request
endpoint
Route throttle 60 requests/minute per client, plus a per-form × IP event budget (default 120 events/minute).
web middleware, no auth required (public fill pages are anonymous). Only active forms accept events.string
required
A UUID identifying the visitor’s fill session.
integer
Numeric form ID. Either this or
form_slug is required.string
The form’s public slug, if
form_id isn’t known client-side.array
required
1–20 event objects per batch.
Event object
string
required
One of:
visit_start, page_view, page_leave, field_interact, started_answering, submit, heartbeat.string
Which page/block the event refers to.
string
ISO timestamp within now − 5 minutes … now + 2 minutes. Outside that window the batch is rejected (422). Omitted timestamps use server time.
integer
0 to 86,400,000 (24h ceiling).
string
Parsed client hints, sent as plain strings.
string
ISO-2 country code and city, when geo IP resolution is enabled.
string
Standard UTM parameters captured from the visit.
string
A hashed key used to de-duplicate a respondent across events without exposing PII.
Response
boolean
true when the batch was accepted and queued for processing.integer
Number of events accepted from the batch.
Events are queued for asynchronous processing (
RecordAnalyticsEventsJob) — a 200 response means the batch was accepted, not that Insights has been recomputed yet. Bot/crawler traffic is flagged and excluded from Insights KPIs during processing, not at ingestion time.