Ingestion API

Capture events

Track product usage. Send one event, or up to 100 at once.

Endpoint

POST/api/v1/events

Body

Send one event object, or { "events": [ ... ] } with up to 100.

FieldTypeDescription
eventstringRequired. Event name (letters, numbers, spaces and _ . : -).
anonymousIdstringVisitor id when the user isn't known yet.
sessionIdstringGroups events into a session.
timestampstringISO date. Defaults to now.
propertiesobjectEvent details (max 8 KB).
externalCustomerIdstringYour id for the customer (preferred). Alias: customerId.
emailstringCustomer email. Used when there's no external id.
namestringCustomer name.
companystringCustomer's company.
planstringPlan name, e.g. "pro".
mrrnumberMonthly revenue from this customer (major units).
currencystring3-letter code for mrr, e.g. USD.
Each event needs externalCustomerId, email or anonymousId.

Lifecycle events

EventUpdates the customer's
user_signed_upSignup date
user_activatedActivation date
trial_startedTrial start
subscription_startedPaid date
subscription_renewedRenewal date
subscription_cancelledChurn date

Example

cURL
curl -X POST https://YOUR-CORVANEOS-HOST/api/v1/events \
  -H "Authorization: Bearer atl_sk_..." \
  -H "Content-Type: application/json" \
  -d '{ "events": [
    { "event": "user_signed_up", "externalCustomerId": "cus_42", "email": "ana@acme.com" },
    { "event": "create_project", "externalCustomerId": "cus_42", "properties": { "template": "blank" } }
  ] }'
Response · 202
{ "success": true, "accepted": 2, "receivedAt": "2026-09-29T10:12:00.000Z" }