# Filters
Every analytics endpoint, the MCP analysis tools and the dashboard URL use one filter. On REST
GET endpoints it is the query string; in MCP tools and POST bodies it is a JSON object with the same
snake_case keys.
curl -H "Authorization: Bearer $X3_SECRET_KEY" \
"https://api.3x.example/v1/projects/my-site/analytics/overview?preset=30d&channel=linkedin&has=quiz_submitted&min_relevance=30"
{ "filter": { "preset": "30d", "channel": "linkedin", "has": ["quiz_submitted"], "min_relevance": 30 } }
# Semantics
Days are calendar days in the project time zone , inclusive on both ends. Session metrics
bucket by session start, pageview metrics by pageview start.All conditions are combined with AND ; values match exactly (no prefix or substring match). Test traffic (?x3_test=1, preset test parameters such as cm_test) is excluded unless
include_test=true.Lists accept repeated parameters or commas: has=cta&has=video equals has=cta,video. Booleans accept true, false, 1, 0. An unknown parameter is a 422 – typos never silently widen a report.
# Date range
Key Values from, toYYYY-MM-DD; from wins over preset; to defaults to todaypresettoday, yesterday, 7d, 14d, 30d (default), 90d, 365d, this_month, last_month, all (last 731 days)
# Pages
Key Meaning pageCanonical path such as /pricing (query strings and trailing slashes are normalized away) page_groupA page group key from the project's tracking config page_modeFor session metrics: any (a pageview on the page, default), entry (entered there), exit (left there) variantPage variant of the entry pageview (A/B tests: the URL parameter named in the tracking config's variantParam)
# Campaigns and acquisition
Key Meaning channelDerived channel: google_ads, google_organic, bing, search_other, meta, linkedin, tiktok, social_other, email, ai_assistant, referral, direct, other – see Attribution and channels utm_source, utm_medium, utm_campaign, utm_content, utm_term, utm_idFirst-touch UTM values of the session (exact) ref_hostEntry referrer host, e.g. www.google.com click_idany, none, or a specific key: gclid, gbraid, wbraid, fbclid, li_fat_id, ttclid, msclkidtrafficpaid = an ad click id or a paid utm_medium (cpc, paid, ppc, …); organic = neither
# Visitor and technology
Key Values devicedesktop, mobile, tablet, unknownbrowserchrome, safari, firefox, edge, samsung, opera, otheroswindows, macos, ios, android, linux, chromeos, otherscreenxs, sm, md, lg, xl – only known for sessions with consentcountryISO code, uppercase (DE) langTwo-letter page language from <html lang> consenttrue = the session granted consentstitchHow the session was continued: new, memory, storage, hash – see Cookieless sessions
# Behaviour and outcomes
Key Meaning hasBehaviour flags, all must hold: quiz_started, quiz_submitted, quiz_viewed, quiz_contact, booked, whatsapp, cta, video, video_completed, calculator, form_submit, identified, confirmed_conversion, bounced goalSessions that reached all of these goal keys (max 10) eventSessions with at least one of each of these event names (max 10) convertedtrue = reached a conversion goal, false = nonemin_relevance, max_relevanceRelevance score bounds 0–100 – see Relevance score relevance_tierTier key of the project's relevance config, e.g. hot include_testInclude test traffic
# Ads
Key Meaning ad_platformgoogle_ads, meta_ads, linkedin_ads, tiktok_adsad_account_id, ad_campaign_id, ad_adset_id, ad_idSessions matched to this ad entity (Matching ) ad_matchmatched / unmatched – sessions with or without an ad-entity match
# Breakdown dimensions
GET …/analytics/breakdown?dimension=… groups by one of: channel, the six UTM keys, ref_host,
entry_page, entry_group, exit_page, exit_group, entry_host, variant, device,
browser, os, country, lang, screen, stitch, attr_from, click_id, converted,
quiz_answers, consent, relevance_tier, goal, ad_platform, ad_campaign, ad_adset,
ad, day, week, month, hour_of_day, weekday.
Rates in responses are fractions between 0 and 1, durations are seconds, money is in the project
currency.