umami
umami
Umami open-source web analytics — privacy-friendly alternative to Google Analytics
Source: Umami Analytics REST API
Coverage
100% (89 of ~89 endpoints)
Focus: authentication, me, websites, statistics, metrics, pageviews, events, event-data, sessions, session-data, realtime, users, teams, reports, share, links, pixels, admin
Missing: none
Setup
- Log into your Umami instance as admin
- Navigate to Settings → Users or use the API login endpoint
- POST /api/auth/login with {username, password} to get a JWT token
- The token is returned in the response body as 'token'
Environment variable: CREDENTIAL_UMAMI_API_TOKEN
Umami is self-hosted. Replace the URL with your instance address. Token is a JWT obtained via /auth/login.
Install
Add to your backends.yaml:
- name: umami
transport: rest
dadl: /app/dadl/umami.dadl
url: "https://your-umami-instance.com/api"
Set the credential:
CREDENTIAL_UMAMI_API_TOKEN=your-token-here Tools (89)
POST login Authenticate with Umami. Returns a JWT token for subsequent API calls. Send username and password in the request body. POST verify_token Verify if the current JWT token is still valid. Returns user info if valid. GET get_me Get the current authenticated user's profile info based on the JWT token. GET get_my_teams Get all teams the current authenticated user belongs to. GET get_my_websites Get all websites the current authenticated user has access to. POST send_event Register a pageview or custom event. No authentication required. Requires a User-Agent header. Used by the tracking script. GET list_websites List all websites registered in Umami. Returns website IDs, names, domains, and creation dates. GET get_website Get details of a specific website by its ID. POST create_website Create a new website to track. Provide name and domain. POST update_website Update website properties. Only include fields you want to change. POST transfer_website Transfer a website to a different user or team. IMPORTANT: Only the current owner of the website can transfer it — there is no admin bypass. Use teamId to assign to a team (requester must own the website and be a team member with transfer permission). Use userId to claim a team-owned website back to yourself (requester must be in the team with transfer permission). To remove from a team, pass teamId: null. DELETE delete_website Delete a website and all its analytics data. Irreversible. POST reset_website Reset a website by removing all its analytics data. The website itself is preserved but all stats are deleted. Irreversible. GET get_website_active Get the number of active visitors on a website right now (last 5 minutes). GET get_website_daterange Get the date range of available analytics data for a website. GET get_website_stats Get summarized website statistics: pageviews, visitors, visits, bounces, and total time. Timestamps are Unix milliseconds. GET get_website_pageviews Get pageview time series within a given time range. Returns pageviews and sessions arrays with timestamps. Unit auto-scales if range exceeds maximum for chosen unit. GET get_website_metrics Get metrics for a website grouped by type. Types: path, entry, exit, title, query, referrer, channel, domain, country, region, city, browser, os, device, language, screen, event, hostname, tag, distinctId. Returns [{x: value, y: count}]. GET get_website_metrics_expanded Get expanded metrics with pageviews, visitors, visits, bounces, and totaltime per entry. Same parameters as get_website_metrics. GET get_website_events Get custom event details for a website within a time range. GET get_website_events_series Get custom events within a time range as time series. Returns [{x: event_name, t: timestamp, y: count}]. GET get_website_events_stats Get aggregated event statistics for a website within a time range. GET get_event_data Get event data grouped by name for a website. GET get_event_data_by_id Get event data for a specific individual event. GET get_event_data_events Get event names and their property counts. GET get_event_data_fields Get event property names and their value counts. GET get_event_data_properties Get event names and their associated property counts. GET get_event_data_values Get event data counts for a specific event and property combination. GET get_event_data_stats Get aggregated event data statistics: total events, properties, and records count. GET list_sessions List sessions for a website within a time range. GET get_sessions_stats Get aggregated session statistics for a website. GET get_sessions_weekly Get sessions grouped by hour-of-weekday (heatmap data). GET get_session Get details of a specific session. GET get_session_activity Get activity log for a specific session (pageviews, events). GET get_session_properties Get custom properties stored for a specific session. GET get_session_data_properties Get session data counts grouped by property name. GET get_session_data_values Get session data counts for a specific property. GET get_realtime Get realtime statistics for a website (last 30 minutes). Returns countries, urls, referrers, events, series, totals, and timestamp. POST create_user Create a new user. Admin only. Roles: admin, user, view-only. GET get_user Get a user by ID. Admin only. POST update_user Update a user. Admin only. Only include fields you want to change. DELETE delete_user Delete a user. Admin only. Irreversible. GET get_user_websites Get all websites accessible by a specific user. GET get_user_teams Get all teams a specific user belongs to. GET list_teams List all teams. POST create_team Create a new team. POST join_team Join a team using an access code. GET get_team Get a team by ID. POST update_team Update team properties. Only include fields you want to change. DELETE delete_team Delete a team. Irreversible. GET list_team_users List all members of a team. POST add_team_user Add a user to a team. Roles: team-member, team-view-only, team-manager. GET get_team_user Get a specific team member. POST update_team_user Update a team member's role. DELETE remove_team_user Remove a user from a team. GET list_team_websites List all websites assigned to a team. GET list_reports List all reports for a website. POST create_report Create a new report. GET get_report Get a report by ID. POST update_report Update a report. DELETE delete_report Delete a report. Irreversible. POST run_attribution_report Run an attribution report. Models: firstClick, lastClick. Types: path, event. POST run_breakdown_report Run a breakdown report to cross-reference multiple dimensions. POST run_funnel_report Run a funnel report. Requires at least 2 steps, each with type (path/event) and value. POST run_goal_report Run a goal report. Type: path or event. POST run_journey_report Run a journey/path report. Steps must be 3-7. POST run_performance_report Run a web vitals performance report. Metrics: lcp, inp, cls, fcp, ttfb. POST run_retention_report Run a retention/cohort report. POST run_revenue_report Run a revenue report. POST run_utm_report Run a UTM campaign report. POST create_share Create a share page. Share types: 1=website, 2=link, 3=pixel, 4=board. GET get_share Get a share page by its ID. POST update_share Update a share page. DELETE delete_share Delete a share page. Irreversible. GET list_website_shares List all share pages for a website. POST create_website_share Create a share page for a specific website. GET list_links List all tracked links. POST create_link Create a tracked link. Slug must be at least 8 characters. GET get_link Get a tracked link by ID. POST update_link Update a tracked link. DELETE delete_link Delete a tracked link. Irreversible. GET list_pixels List all tracking pixels. POST create_pixel Create a tracking pixel. Slug must be at least 8 characters. GET get_pixel Get a tracking pixel by ID. POST update_pixel Update a tracking pixel. DELETE delete_pixel Delete a tracking pixel. Irreversible. GET admin_list_users List all users in the Umami instance. Admin only. GET admin_list_websites List all websites across all users. Admin only. GET admin_list_teams List all teams in the Umami instance. Admin only.