Users

Identify a runtime user

Upserts a user by external id, captures identity traits, and registers contact channels / preferred channel. Idempotent on (app, external id); safe to call before any event is tracked. Stamps the user as identified and, when anonymous_id is sent, promotes the anonymous user behind that handle into this user (the customer's SDK is the authoritative source of that transition). For an app that ingests asynchronously the call is validated, durably queued behind the app's earlier track calls and answered 202 {"processing":"queued"}; the user is upserted (and the anonymous user promoted) when the queue reaches it. A call whose User-Agent is a known crawler or bot is answered 202 {"processing":"queued"} and dropped: no user is created or changed.

post/v1/identify

Request

  • Base URL: https://api.whisperr.net
  • URL: https://api.whisperr.net/v1/identify
  • Auth: API key in header Authorization

Request body

anonymous_idstring

The device's anonymous handle. With external_user_id, when an anonymous user exists behind it, that user is promoted into this one in the same transaction: its events and push channels move over (on the same token the identified user's channel wins), its runtime state is merged, the handle stays on this user so later events sent under it attach here, and the anonymous row is removed. An unknown handle is not an error.

external_user_idstring

The customer's own user id. Optional when anonymous_id is sent.

preferred_channel'email' | 'sms' | 'push'
traitsobject

Identity traits, merged on each call. Max 50KB. Each key is stored and registered for the app, except: a key that is empty, longer than 64 characters, has surrounding whitespace, or contains "/" or control characters. Values identify must not store are removed, nested fields and array items one by one: a secret (card number, IBAN, token, or a string under a key such as password or card_number); a value that holds an email address or is a phone number (send these as channels; a key name alone, such as marketing_email: true, is kept); and a value under a special-category key (health_condition, medical_, religion, sexual_orientation, ethnicity, political_, trade_union, biometric_data, genetic_*) the app has not allowed. Dropped key paths are counted, without values, in the dashboard traits panel.

Response

User upserted.

Changes

No recorded changes to this operation across all 1 revision of this API.