Profile analytics
Every analytics route is scoped to one of your profiles: /api/v1/analytics/profiles/{profile_id}/.... Get your profile id from GET /api/v1/profiles/me.
These routes are owner-only and use a session bearer token (Authorization: Bearer ...). Asking for a profile that is not yours returns 404 Profile not found, the same as a profile that does not exist.
Which routes need a paid plan
basic, view-activity, by-door and clicks work on any plan. funnel, leads, conversations, performance, topics, social-clicks and the full profile summary require a plan that includes analytics. Without one, the API returns 403. Check your plan with GET /api/v1/billing/status, and see Subscription Tiers.
Basic stats
/api/v1/analytics/profiles/{profile_id}/basicHeadline counts for one of your profiles.
total_viewsnumberOptionalAll profile views.
views_this_weeknumberOptionalViews in the last 7 days.
qr_scansnumberOptionalViews that came from a QR scan.
qr_scans_this_weeknumberOptionalQR scans in the last 7 days.
saved_countnumberOptionalPeople who saved your contact.
Recent view activity
A feed of recent views, newest first. Each event has an id, a viewed_at timestamp and a source (qr or link). It does not include viewer identity.
/api/v1/analytics/profiles/{profile_id}/view-activityRecent views and scans for your profile.
daysnumberOptionalLook-back window in days, 1 to 400. Defaults to 365.
limitnumberOptionalNumber of events to return, 1 to 100. Defaults to 50.
The response contains events, count and days.
Where views come from
Two routes show how people reach you.
/api/v1/analytics/profiles/{profile_id}/by-doorPer-door breakdown of visits, conversations and leads.
A door is one of the ways people reach your AI Representative. The response has by_door, one row per door with ingress_id, ingress_name, views, scans, saves, visits, conversations and leads. It also returns top_topics, the questions visitors asked your Rep most often, each with a count. Both lists are empty when there is no data yet.
/api/v1/analytics/profiles/{profile_id}/performanceDaily views and scans, plus totals by source.
This route returns period_days, a daily timeline (date, views, scans) and by_source, a map of view totals by source. The recorded source is qr or link, so a QR scan is one channel among several. Use the days query parameter (1 to 365, default 30).
Full profile summary
/api/v1/analytics/profiles/{profile_id}Views, unique viewers, source breakdown and daily timeline.
Accepts days (1 to 365, default 30). The response includes period_days, total_views, unique_viewers, by_source, recent_viewers and timeline.
Outcomes: funnel, leads and topics
/api/v1/analytics/profiles/{profile_id}/funnelVisits, conversations and leads with conversion rates.
Returns visits, conversations, leads, conversation_rate and lead_rate.
/api/v1/analytics/profiles/{profile_id}/leadsPaginated leads captured through your profile.
Accepts limit (1 to 100, default 20), offset, and door to filter by door id. Returns items, total, limit and offset. Each lead can include name, email, phone, company, the door it came through and the question that started the conversation. A single lead is available at GET /api/v1/analytics/leads/{lead_id}.
/api/v1/analytics/profiles/{profile_id}/topicsWhat visitors ask your Rep about, grouped into intents and themes.
Returns intents and themes, each with a label and a count. Accepts an optional door filter. To see the actual questions inside one theme, call GET /api/v1/analytics/profiles/{profile_id}/topics/{label}.
Conversations behind these numbers are listed at GET /api/v1/analytics/profiles/{profile_id}/conversations (same limit, offset and door parameters, plus theme).
Social link clicks
/api/v1/analytics/profiles/{profile_id}/social-clicksClick totals per social platform.
Returns items (each with platform, total_clicks, last_clicked_at) and total_clicks. For who clicked on one platform, call GET /api/v1/analytics/profiles/{profile_id}/social-clicks/{platform}.
A simpler summary with a daily trend, available on any plan, is at GET /api/v1/analytics/profiles/{profile_id}/clicks (accepts days, 1 to 365, default 30). It returns total_clicks, by_platform and trend.
Read it with contacts
Compare views and conversations with saved contacts in the Contacts API to see which doors turn visits into real follow-ups.