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.
| Base URL | https://<project-ref>.sovarias.in — your project URL from Connect. |
| Keys | Send the project's key as apikey. Calls made for a signed-in user also send Authorization: Bearer <access token>. |
| Errors | A status code and {"detail": …} — a sentence, or {code, message} for errors your code may branch on (HTTP API). |
#Endpoints
GET/api/v1/analytics/consent
- 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/consent
Query parameters
anon_idstring | nulloptional
Responses
- 200Success.
- 401No valid session or key.
curl -s "$URL/api/v1/analytics/consent" \
-H "apikey: $ANON_KEY" \
-H "Authorization: Bearer $ACCESS_TOKEN"PUT/api/v1/analytics/consent
The app user's own analytics consent (DPDP s.6): opting out stops collection for every device at once.
- 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/consent
Body
grantedbooleanrequiredanon_idstring | nulloptional- 0–64 characters
notice_versionstringoptional- 0–32 characters
erasebooleanoptionaldefaultfalse
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/consent" \
-H "apikey: $ANON_KEY" \
-H "Authorization: Bearer $ACCESS_TOKEN"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
daysintegeroptionaldefault30- 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
daysintegeroptionaldefault30- 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 | nulloptionaluntilstring | nulloptionalformatstringoptionaldefaultcsv- One of
csv,ndjson namesstring | nulloptional- 0–2,000 characters
limitintegeroptionaldefault1000000- 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_hoursintegeroptionaldefault24- 1.0–2160.0
daysintegeroptionaldefault30- 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 | nulloptionallimitintegeroptionaldefault100- 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
daysintegeroptionaldefault30- 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
periodstringoptionaldefaultweek- One of
week,day periodsintegeroptionaldefault8- 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
limitintegeroptionaldefault50- 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
limitintegeroptionaldefault100- 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
daysintegeroptionaldefault1- 1–7
envstring | nulloptional- 0–400 characters
limitintegeroptionaldefault50- 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
slowestbooleanoptionaldefaultfalsedaysintegeroptionaldefault1- 1–365
limitintegeroptionaldefault50- 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
daysintegeroptionaldefault7- 1–365
routestring | nulloptional- 0–120 characters
releasestring | nulloptional- 0–100 characters
platformstring | nulloptional- 0–30 characters
qnumberoptionaldefault0.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
daysintegeroptionaldefault7- 1–365
kindstring | nulloptional- One of
vital,network,app_start,screen,trace releasestring | nulloptional- 0–100 characters
platformstring | nulloptional- 0–30 characters
bystringoptionaldefaultname- One of
name,route limitintegeroptionaldefault100- 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"