Skip to content

umami

umami

Umami open-source web analytics — privacy-friendly alternative to Google Analytics

Source: Umami Analytics REST API

Credits: Dunkel Cloud GmbH -- maintainer Updated: 2026-03-31

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

Last reviewed: 2026-03-31

Setup

  1. Log into your Umami instance as admin
  2. Navigate to Settings → Users or use the API login endpoint
  3. POST /api/auth/login with {username, password} to get a JWT token
  4. The token is returned in the response body as 'token'

Environment variable: CREDENTIAL_UMAMI_API_TOKEN

Authentication docs ↗

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.