Events
POST /v1/events
Records a conversion event. Authoritative source for revenue events — emit from your server, not the browser.
Request
POST /v1/eventsAuthorization: Bearer op_skl_xxxContent-Type: application/json
{ "userId": "user_abc", "type": "invoice_paid", "amount": 4900, "currency": "USD", "occurredAt": "2026-04-24T12:00:00Z"}| Field | Type | Required | Notes |
|---|---|---|---|
userId | string | yes | Must match the userId passed to op.identify() on the client. |
type | string | yes | Standard or custom event name. |
amount | integer | conditional | Required for events that drive commissions. Minor units. |
currency | string | conditional | ISO 4217. Required when amount is set. |
occurredAt | string | no | Defaults to server time. |
metadata | object | no | Free-form. Available in attribution rules. |
Response
{ "id": "evt_01HX9A...", "userId": "user_abc", "type": "invoice_paid", "amount": 4900, "currency": "USD", "createdAt": "2026-04-24T12:00:01.234Z"}Idempotency
Pass Idempotency-Key: <unique> to make event creation safe to retry. The same key returns
the original event without creating a duplicate.
GET /v1/events
List events for the authenticated principal. Admins see all; partners see events attributed to them.
GET /v1/events?cursor=evt_xxx&limit=50Authorization: Bearer op_skl_xxx