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

Track analytics events

POST/api/v1/events

Send up to 100 events with stable eventUuid, timestamp, name and properties; retain eventUuid on retry. The server determines Customer identity. Local exposures must reference delivered flags or experiments; remote exposures are recorded by the server. Analytics events do not confirm payment or authorization.

API v1Updated

Make the request

Send up to 100 events with stable eventUuid, timestamp, name and properties; retain eventUuid on retry. The server determines Customer identity. Local exposures must reference delivered flags or experiments; remote exposures are recorded by the server. Analytics events do not confirm payment or authorization.

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.5" \  -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

skippedintegerRequired

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

min: 0 · max: 9007199254740991

analyticsConfigobjectRequired

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

Show child fields
eventsEnabledbooleanRequired

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

experimentViewsEnabledbooleanRequired

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

featureUsageEnabledbooleanRequired

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

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