Skip to content

REST API

Use the REST API when no SDK exists for your platform or language. Any HTTP client can send events to Vortex Analytics.

Base URL: https://in.vortexanalytics.io
Content-Type: application/json
Body size limit: 1 MB per request


Every request must include your Tenant ID — either as a query parameter (GET requests) or as the tenant_id field in the JSON body (POST requests). There is no API key header.

Your Tenant ID is available in the Vortex dashboard.


MethodPathDescription
GET/validateVerify your tenant ID is valid
POST/trackSend a single event
POST/batchSend multiple events in one request

Verify your tenant ID before sending events. Call this on startup.

GET /validate?tenant_id={YOUR_TENANT_ID}

Query parameters

ParameterTypeRequiredDescription
tenant_idstringYesYour project tenant identifier

Responses

CodeMeaning
200Tenant is valid — safe to send events
400tenant_id query parameter is missing
403Tenant not found or unauthorized
Terminal window
curl "https://in.vortexanalytics.io/validate?tenant_id=mygame"

Send one event immediately.

POST /track

Request body

{
"tenant_id": "mygame",
"tracking": {
"name": "level_complete",
"value": "{\"level\": 3, \"time\": 94.2}",
"identity": "550e8400-e29b-41d4-a716-446655440000",
"session_id": "b1e2f3a4-c5d6-7890-abcd-ef1234567890",
"platform": "STEAM",
"app_version": "1.4.2",
"timestamp": "2026-05-16T14:30:00.000Z",
"custom": "{\"region\": \"EU\", \"premium\": true}"
}
}

Fields

FieldTypeRequiredDescription
tenant_idstringYesYour project tenant identifier
tracking.namestringYesEvent name, e.g. level_complete
tracking.identitystringYesPersistent device or user identifier (UUID recommended)
tracking.session_idstringYesSession identifier — a new UUID per app launch
tracking.platformstringYesPlatform string, e.g. STEAM, IOS, ANDROID, WEB
tracking.app_versionstringYesApplication version string, e.g. 1.4.2
tracking.valuestringNoJSON-encoded event payload. Max 70 KB. Must be valid JSON if provided
tracking.timestampstringNoISO 8601 UTC timestamp. Server time is used if omitted or zero
tracking.customstringNoJSON-encoded metadata attached to this event. Max 70 KB. Must be valid JSON if provided

Responses

CodeMeaning
200Event accepted
400Invalid JSON, missing required fields, or oversized value / custom
403Tenant not found or unauthorized
415Content-Type header present but not application/json
Terminal window
curl -X POST "https://in.vortexanalytics.io/track" \
-H "Content-Type: application/json" \
-d '{
"tenant_id": "mygame",
"tracking": {
"name": "level_complete",
"value": "{\"level\": 3}",
"identity": "550e8400-e29b-41d4-a716-446655440000",
"session_id": "b1e2f3a4-c5d6-7890-abcd-ef1234567890",
"platform": "WEB",
"app_version": "1.0.0"
}
}'

Send multiple events in a single HTTP request. More efficient than individual calls when tracking several events at once.

POST /batch

Request body

{
"tracks": [
{
"tenant_id": "mygame",
"tracking": {
"name": "tutorial_step_1",
"identity": "550e8400-e29b-41d4-a716-446655440000",
"session_id": "b1e2f3a4-c5d6-7890-abcd-ef1234567890",
"platform": "STEAM",
"app_version": "1.4.2"
}
},
{
"tenant_id": "mygame",
"tracking": {
"name": "tutorial_step_2",
"identity": "550e8400-e29b-41d4-a716-446655440000",
"session_id": "b1e2f3a4-c5d6-7890-abcd-ef1234567890",
"platform": "STEAM",
"app_version": "1.4.2"
}
}
]
}

Each object inside tracks follows the same structure as the /track body. Invalid tracks are skipped server-side without failing the whole batch.

Responses

CodeMeaning
200Batch processed (individual invalid tracks are skipped, not rejected)
400Request body is not valid JSON
415Content-Type header present but not application/json
Terminal window
curl -X POST "https://in.vortexanalytics.io/batch" \
-H "Content-Type: application/json" \
-d '{
"tracks": [
{
"tenant_id": "mygame",
"tracking": {
"name": "tutorial_step_1",
"identity": "550e8400-e29b-41d4-a716-446655440000",
"session_id": "b1e2f3a4-c5d6-7890-abcd-ef1234567890",
"platform": "WEB",
"app_version": "1.0.0"
}
},
{
"tenant_id": "mygame",
"tracking": {
"name": "tutorial_step_2",
"identity": "550e8400-e29b-41d4-a716-446655440000",
"session_id": "b1e2f3a4-c5d6-7890-abcd-ef1234567890",
"platform": "WEB",
"app_version": "1.0.0"
}
}
]
}'

ConceptRecommendation
identityA persistent UUID tied to the device or user. Generate once and store it (e.g. in local storage or a file). Reuse across sessions.
session_idA new UUID generated each time the application starts.
timestampISO 8601 UTC, e.g. 2026-05-16T14:30:00.000Z. Omit to let the server record arrival time.