Skip to content
Indiana
Dashboard
Docs
Browse docs / Track analytics events

Track analytics events

POST/api/v1/events

0.3 source candidate: send up to 100 events with stable eventUuid, timestamp, name and properties; retain eventUuid on retry. The server derives Customer identity and source context. Local exposures must name delivered flags or experiments; remote exposures are server-only. Analytics events are never payment or authorization evidence.

API v1Updated

Make the request

0.3 source candidate: send up to 100 events with stable eventUuid, timestamp, name and properties; retain eventUuid on retry. The server derives Customer identity and source context. Local exposures must name delivered flags or experiments; remote exposures are server-only. Analytics events are never payment or authorization evidence.

Credential
Server API key or customer token. Customer calls cannot select another customer.
Permission
events:write
Set the base URL and App ID from SDK setup. These examples use placeholders and do not execute requests. Never put a server key in browser code.
request.shShell
curl -X POST "$INDIANA_BASE_URL/api/v1/events" \  -H "Authorization: Bearer $INDIANA_CUSTOMER_TOKEN" \  -H "X-Indiana-Project: $INDIANA_PROJECT_ID" \  -H "X-Indiana-Protocol: 0.3" \  -H "X-Indiana-Environment: sandbox" \  -H "Content-Type: application/json" \  -d '{  "events": [    {      "eventUuid": "00000000-0000-4000-8000-000000000001",      "timestamp": "2026-10-03T12:00:00.000Z",      "name": "example"    }  ]}'

The response tab lists field types, not an example payload. Actual values depend on customer state.

Request parameters

JSON body

customerIduuidOptional

Indiana customer ID mapped from a verified identity on the server. Omit for customer-token calls, which use the token-bound customer.

eventsarrayRequired

The events value for this operation. Its accepted type and constraints are listed above and below.

minItems: 1 · maxItems: 100

Show child fields
eventUuiduuidRequired

The eventUuid value for this operation. Its accepted type and constraints are listed above and below.

timestampdate-timeRequired

The timestamp value for this operation. Its accepted type and constraints are listed above and below.

namestringRequired

Display name of the customer or object; not an identity key.

minLength: 1 · maxLength: 255

propertiesobjectOptional

Validated pricing properties used to match dimensions and multipliers.

default: {}

deviceIdstringOptional

The deviceId value for this operation. Its accepted type and constraints are listed above and below.

minLength: 1 · maxLength: 255

sessionIdstringOptional

The sessionId value for this operation. Its accepted type and constraints are listed above and below.

minLength: 1 · maxLength: 255

Response fields

Successful responses include requestId and scope. Use the actual business status or accepted field to determine the result. Optional fields are omitted when unavailable.

HTTP 200 · application/json

requestIduuidRequired

Server-generated HTTP request UUID. Include it when reporting a failed request.

scopeobjectRequired

The App and environment of this response. Headers only verify scope; they cannot switch key scope.

Show child fields
projectIdstringRequired

App ID bound to the credential.

minLength: 1

environmentenumRequired

Separate data scope: sandbox or live.

Show allowed values

"sandbox""live"

insertedintegerRequired

The inserted value for this operation. Its accepted type and constraints are listed above and below.

min: 0 · max: 9007199254740991

duplicatesintegerRequired

The duplicates value for this operation. Its accepted type and constraints are listed above and below.

min: 0 · max: 9007199254740991

rejectedintegerRequired

The rejected value for this operation. Its accepted type and constraints are listed above and below.

min: 0 · max: 9007199254740991

Handle errors

Common failures
CodeRecovery
UNAUTHENTICATEDVerify the key or refresh the expired customer token once.
FORBIDDENCheck current key permissions and customer access.
INVALID_REQUESTCheck field types, UUIDs, decimal strings and mutually exclusive fields.
SCOPE_MISMATCHUse the App and environment bound to the credential.

Common failures

  • UNAUTHENTICATED

    Recovery
    Verify the key or refresh the expired customer token once.
  • FORBIDDEN

    Recovery
    Check current key permissions and customer access.
  • INVALID_REQUEST

    Recovery
    Check field types, UUIDs, decimal strings and mutually exclusive fields.
  • SCOPE_MISMATCH

    Recovery
    Use the App and environment bound to the credential.

Related:All request and error conventions·Back to endpoint index