VERINODE|API

Verinode Developer

Events & process mining

Stream any activity to feed process mining.

POST /v1/events (and /events/batch for up to 1,000 at once) accepts the classic case / activity / timestamp triple and maps it straight onto Verinode's process model. This is how you replay a tool's job history, or stream live milestones, so the whole Processes view lights up.

POST /v1/events
{ "activity": "job_completed",
  "occurred_at": "2026-07-01T16:30:00Z",
  "case": { "job_id": "…" },       // or { "claim_number": "…" }
  "domain": "field",
  "attributes": { "crew": "A" },
  "external_id": "dash-evt-88123" }  // your id → idempotent

Cases resolve by job_id or claim_number; an unresolvable reference fails loud (422) rather than landing unattached. case itself is optional — omit it (or send null) and the event is recorded unattached to any job, which is legitimate for activity that isn't job-scoped. A claim_number matching more than one job is also a 422 rather than a guess.

Events carrying a canonical milestone activity also fill the matching job date, so imported history feeds both the event log and the milestone map. Existing dates always win — the fill never overwrites.

#Retries: use external_id

Idempotency-Key does nothing on either events endpoint. Events dedupe on external_id instead: give each event your own stable id and re-sending it is a no-op that returns status: "duplicate" with id: null.

The corollary matters more: an event with no external_id is written again on every retry. Retry a 1,000-event batch after a timeout and every event in it lacking an external_id is double-counted in your process model. Treat it as required for anything you might re-send.

#Limits

Events are free — no Intelligence Units, ever. Requires write. POST /v1/events allows 5,000 calls/hour; POST /v1/events/batch allows 500 calls/hour of up to 1,000 events each (over 1,000 returns 413). Batches are per-event independent: one malformed event never fails the batch, and the response reports accepted, rejected, and a per-item result you should always inspect — a 200 does not mean all 1,000 landed.