Docs

HTTP API: analytics, performance and remote config

Events your app logs and the active users, funnels, retention and live views built from them; app start, screen and network timings; and the remote config your app fetches.

Updated Oct 26, 2026
Base URLhttps://<project-ref>.sovarias.in — your project URL from Connect.
KeysSend the project's key as apikey. Calls made for a signed-in user also send Authorization: Bearer <access token>.
ErrorsA status code and {"detail": …} — a sentence, or {code, message} for errors your code may branch on (HTTP API).

#Endpoints

GET/api/v1/analytics/events

Event names with counts over the last days.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/events

Query parameters

daysintegeroptionaldefault 30
1–1825

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/analytics/events" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

POST/api/v1/analytics/events

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/events

Body

eventsarray<object>required
1–100 items
contextobjectoptional

Responses

  • 202Accepted — the work continues in the background.
  • 401No valid session or key.
  • 422The body is missing a required field or has a field of the wrong type.
curl -s -X POST "$URL/api/v1/analytics/events" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/analytics/events/{name}/trend

Daily count and distinct users of one event, and its common properties.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/events/{name}/trend

Path parameters

namestringrequired

Query parameters

daysintegeroptionaldefault 30
1–1825

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/analytics/events/welcome/trend" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/analytics/export

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/export

Query parameters

sincestring | nulloptional
untilstring | nulloptional
formatstringoptionaldefault csv
One of csv, ndjson
namesstring | nulloptional
0–2,000 characters
limitintegeroptionaldefault 1000000
How many to return.
1–5000000

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/analytics/export" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

POST/api/v1/analytics/funnel

Ordered funnel: users who did each step after the previous one within window_hours of step 1 (steps: [{name, where?}]).

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/funnel

Body

stepsarray<object>required
2–20 items
2 fields
namestringrequired
1–64 characters
whereobject | nulloptional
window_hoursintegeroptionaldefault 24
1.0–2160.0
daysintegeroptionaldefault 30
1.0–1825.0

Responses

  • 200Success.
  • 401No valid session or key.
  • 422The body is missing a required field or has a field of the wrong type.
curl -s -X POST "$URL/api/v1/analytics/funnel" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/analytics/live

Newest events received (debug view), optionally since an ISO time.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/live

Query parameters

sincestring | nulloptional
limitintegeroptionaldefault 100
How many to return.
1–200

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/analytics/live" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/analytics/overview

DAU, WAU, MAU, events, new users, top events, platforms and countries over the last days (capped by analytics.retention_days).

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/overview

Query parameters

daysintegeroptionaldefault 30
1–1825

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/analytics/overview" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/analytics/retention

Retention cohorts by first activity (or start_event), share active (or doing return_event) in each later week or day.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/retention

Query parameters

start_eventstring | nulloptional
0–64 characters
return_eventstring | nulloptional
0–64 characters
periodstringoptionaldefault week
One of week, day
periodsintegeroptionaldefault 8
2–31

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/analytics/retention" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/analytics/settings

Project analytics settings (require consent) and whether staff turned analytics off.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/settings

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/analytics/settings" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

PUT/api/v1/analytics/settings

Require consent: only app users who said yes (PUT /analytics/v1/consent) are recorded.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/settings

Body

require_consentbooleanrequired

Responses

  • 200Success.
  • 401No valid session or key.
  • 422The body is missing a required field or has a field of the wrong type.
curl -s -X PUT "$URL/api/v1/analytics/settings" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/analytics/usage

Analytics events accepted and dropped this month, and the plan's limits.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/usage

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/analytics/usage" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/analytics/users

Recently seen app users with their properties (q: prefix of user key or id).

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/users

Query parameters

qstringoptional
0–100 characters
limitintegeroptionaldefault 50
How many to return.
1–200

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/analytics/users" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

DELETE/api/v1/analytics/users/{user_key}

Erase one app user's analytics (events, properties, activity) and record that they opted out.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/users/{user_key}

Path parameters

user_keystringrequired

Responses

  • 200Success.
  • 401No valid session or key.
curl -s -X DELETE "$URL/api/v1/analytics/users/<user_key>" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/analytics/users/{user_key}

One app user: profile, consent and their latest events.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/analytics/v1/users/{user_key}

Path parameters

user_keystringrequired

Query parameters

limitintegeroptionaldefault 100
How many to return.
1–500

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/analytics/users/<user_key>" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

POST/api/v1/perf/events

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/perf/v1/events

Body

eventsarray<object>required
1–100 items

Responses

  • 202Accepted — the work continues in the background.
  • 401No valid session or key.
  • 422The body is missing a required field or has a field of the wrong type.
curl -s -X POST "$URL/api/v1/perf/events" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/perf/network

Client network time per route next to the gateway's server time for the same route.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/perf/v1/network

Query parameters

daysintegeroptionaldefault 1
1–7
envstring | nulloptional
0–400 characters
limitintegeroptionaldefault 50
How many to return.
1–200

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/perf/network" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/perf/samples

Raw client measurements (newest or slowest first), each with its trace id.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/perf/v1/samples

Query parameters

kindstring | nulloptional
One of vital, network, app_start, screen, trace
namestring | nulloptional
0–120 characters
routestring | nulloptional
0–120 characters
trace_idstring | nulloptional
0–40 characters
slowestbooleanoptionaldefault false
daysintegeroptionaldefault 1
1–365
limitintegeroptionaldefault 50
How many to return.
1–200

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/perf/samples" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/perf/series

One client metric's percentile over time.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/perf/v1/series

Query parameters

kindstringrequired
One of vital, network, app_start, screen, trace
namestringrequired
0–120 characters
daysintegeroptionaldefault 7
1–365
routestring | nulloptional
0–120 characters
releasestring | nulloptional
0–100 characters
platformstring | nulloptional
0–30 characters
qnumberoptionaldefault 0.75
0.5–0.99

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/perf/series" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/perf/summary

Client performance: p50/p75/p95, count and web-vitals ratings per metric (or per page/screen with by=route).

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/perf/v1/summary

Query parameters

daysintegeroptionaldefault 7
1–365
kindstring | nulloptional
One of vital, network, app_start, screen, trace
releasestring | nulloptional
0–100 characters
platformstring | nulloptional
0–30 characters
bystringoptionaldefault name
One of name, route
limitintegeroptionaldefault 100
How many to return.
1–500

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/perf/summary" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/perf/traces/{trace_id}

Client spans and the server trace for one trace id.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/perf/v1/traces/{trace_id}

Path parameters

trace_idstringrequired

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/perf/traces/<trace_id>" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/api/v1/perf/usage

Performance measurements accepted and dropped this month, and the plan's limits.

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.
Also at
/perf/v1/usage

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/api/v1/perf/usage" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

GET/config/v1/fetch

Who
Your app: the project's anon key (apikey: <anon key>), with the user's access token once they are signed in.

Query parameters

anon_idstringoptional
0–64 characters
platformstringoptional
0–20 characters
app_versionstringoptional
0–40 characters
countrystringoptional
0–2 characters
languagestringoptional
0–16 characters
attrsstring | nulloptional
0–4,096 characters

Responses

  • 200Success.
  • 401No valid session or key.
curl -s "$URL/config/v1/fetch" \
  -H "apikey: $ANON_KEY" \
  -H "Authorization: Bearer $ACCESS_TOKEN"