DocumentationIdentify API

Identify API

Called by linkUser() internally. Links a device to a real user identity on the backend.

POST /api/tracker/link-user/

bash
curl -X POST https://www.nohmo.in/api/tracker/link-user/ \
-H "Content-Type: application/json" \
-H "X-API-Key: pk_xxxx" \
-d '{
"deviceId": "a1b2c3d4...",
"userId": "user_123",
"email": "alice@example.com",
"meta": { "plan": "pro" }
}'
FieldRequiredDescription
deviceId✓The device to link. Must already exist — an unknown device returns 404
userId✓Your internal user ID
email—User email — shown in the dashboard and live feed
meta—Any extra JSON metadata to store on the device

Note: The field is email, not userEmail. Authentication is by API key alone, so there is no projectId to send.

Linking is retroactive: every event and session already recorded for this device that had no user attached is updated to this userId, so a signup keeps the anonymous journey that led to it.

Note: If the same userId has been seen on another device before, Nohmo merges the user email and metadata onto this device automatically.

POST /api/tracker/identify/

A different endpoint, for a different job: it creates or updates the device itself — platform, app version, OS — and is what the SDK calls on session start. It does not link a user; use link-user/ above for that.

FieldRequiredDescription
deviceId✓Stable device identifier
platform—web | ios | android. Anything else is coerced to web — unlike /track/, this endpoint does not accept "server"
stableId—Reinstall-stable identifier, used to re-link a device after an app reinstall
deviceInfo—Object with browser/OS/device details
appVersion—Build version — also records a release sighting
osVersion—Operating system version