Batch track events
Events
Batch track events
POST /api/v1/events/batch — emit multiple events in one POST.
POST
Batch track events
Emit multiple events in a single POST. Useful for backfills, data-warehouse syncs, and any path where per-event HTTP overhead dominates.
Request
Body
Array of events. Each event has the same shape as the single-event endpoint body (
external_user_id, name, properties). Maximum 100 events per batch.When
true, every tracked user touched by this batch is marked as historical — trigger rules (welcome, onboarding stall, etc.) will not fire for those users retroactively, even if the events would otherwise match. Use this when seeding your existing user base into Vibefollow so customers don’t get a “welcome” email weeks or months after they actually signed up.Mechanics: every TrackedUser created or first-seen by a suppressed batch gets suppressTriggersUntil set to a far-future date. The trigger-rules cron skips users with a non-null suppressTriggersUntil. The watermark dissolves automatically the first time the user emits a normal (non-suppressed) event, so going live after a backfill is a one-flip switch.Defaults to false — live signups DO fire welcomes, the normal case.Response
Always
true on success. The response confirms the batch was enqueued. Per-event validation happens server-side.If one event in the batch fails validation, the whole batch is rejected with
422 and errors[0].field indicates the offending event index (e.g. events[3].external_user_id).Examples
Common errors
401 auth_required
401 auth_required
Missing or malformed
Authorization header.422 validation_failed
422 validation_failed
Any event in the batch failed validation;
errors[0].field indicates the offending index.429 rate_limited
429 rate_limited
Wait
Retry-After seconds.5xx server_error
5xx server_error
Retry — the
Idempotency-Key prevents duplicates.Sizing
Max events per batch
100
Max event name length
64 characters
Max body size
5 MB
If you hit these limits, split the batch on your side. The SDK’s
events.batch() defaults to maxSize: 100, which matches the server-side ceiling exactly.