Umami website screenshot

Umami

Umami is an open source, privacy-first web analytics platform that provides website traffic insights without cookies or personal data collection, serving as a simple and fast alternative to Google Analytics. The Umami API provides full programmatic access to analytics data, website management, session tracking, event data, and team collaboration features for both self-hosted and cloud instances.

1 APIs 8 Features
Cookieless TrackingOpen SourcePrivacyWeb AnalyticsWebsite Analytics

APIs

Umami API

The Umami API provides programmatic access to website analytics data including pageviews, sessions, events, and metrics, allowing developers to collect tracking data and retriev...

Collections

Pricing Plans

Umami Plans Pricing

3 plans

PLANS

Rate Limits

Umami Rate Limits

5 limits

RATE LIMITS

FinOps

Umami Finops

FINOPS

Features

Privacy-First Analytics

Tracks website traffic without cookies or personal data, fully GDPR compliant without consent banners.

Real-Time Data

Live visitor counts and real-time pageview tracking for immediate traffic insights.

Custom Events

Track custom user interactions and conversions with a simple JavaScript API.

Team Collaboration

Share analytics access across teams with role-based access control.

Self-Hosting Support

Deploy on your own infrastructure for complete data ownership and control.

Open Source

MIT-licensed open source software with active community development and full transparency.

Multi-Site Support

Manage and analyze multiple websites from a single Umami instance.

API Access

Full REST API for programmatic access to all analytics data and management functions.

Use Cases

Website Performance Monitoring

Track pageviews, unique visitors, bounce rates, and session duration for website optimization.

Privacy-Compliant Analytics

Replace Google Analytics with a cookieless solution that requires no consent banners under GDPR.

Marketing Analytics

Analyze traffic sources, referrers, and UTM campaign data to measure marketing effectiveness.

Custom Event Tracking

Track button clicks, form submissions, and custom conversions using the Umami event API.

Developer Dashboards

Build custom analytics dashboards using the REST API to display site metrics in your own apps.

Multi-Tenant Analytics

Provide analytics access to multiple clients or teams with shared infrastructure and access controls.

Integrations

Next.js

First-class integration with Next.js via the @umami/nextjs package for page view tracking.

WordPress

Track WordPress sites by adding the Umami tracking script via plugin or manual installation.

Vercel

Deploy Umami on Vercel with a one-click deployment for managed self-hosting.

Docker

Run Umami in any environment using the official Docker container image.

Cloudflare

Deploy tracking scripts behind Cloudflare for performance and abuse prevention.

Solutions

Umami Cloud

Hosted Umami instance at cloud.umami.is with managed infrastructure and API key authentication.

Umami Self-Hosted

Run your own Umami instance on any infrastructure with full data ownership and JWT authentication.

Semantic Vocabularies

Umami Context

0 classes · 0 properties

JSON-LD

API Governance Rules

Umami API Rules

31 rules · 13 errors 11 warnings 7 info

SPECTRAL

JSON Structure

Umami Active Visitors Structure

1 properties

JSON STRUCTURE

Umami Login Request Structure

2 properties

JSON STRUCTURE

Umami Login Response Structure

2 properties

JSON STRUCTURE

Umami Metric Structure

2 properties

JSON STRUCTURE

Umami Ok Response Structure

1 properties

JSON STRUCTURE

Umami Pageview Data Structure

2 properties

JSON STRUCTURE

Umami Session List Structure

4 properties

JSON STRUCTURE

Umami Session Stats Structure

5 properties

JSON STRUCTURE

Umami Session Structure

9 properties

JSON STRUCTURE

Umami Team List Structure

4 properties

JSON STRUCTURE

Umami Team Member Structure

6 properties

JSON STRUCTURE

Umami Team Request Structure

2 properties

JSON STRUCTURE

Umami Team Structure

8 properties

JSON STRUCTURE

Umami User Request Structure

3 properties

JSON STRUCTURE

Umami User Structure

6 properties

JSON STRUCTURE

Umami Website List Structure

4 properties

JSON STRUCTURE

Umami Website Request Structure

4 properties

JSON STRUCTURE

Umami Website Stats Structure

5 properties

JSON STRUCTURE

Umami Website Structure

10 properties

JSON STRUCTURE

Example Payloads

Umami Login Request Example

2 fields

EXAMPLE

Umami Login Response Example

2 fields

EXAMPLE

Umami Metric Example

2 fields

EXAMPLE

Umami Ok Response Example

1 fields

EXAMPLE

Umami Pageview Data Example

2 fields

EXAMPLE

Umami Session Example

9 fields

EXAMPLE

Umami Session List Example

4 fields

EXAMPLE

Umami Session Stats Example

5 fields

EXAMPLE

Umami Team Example

8 fields

EXAMPLE

Umami Team List Example

4 fields

EXAMPLE

Umami Team Member Example

6 fields

EXAMPLE

Umami Team Request Example

2 fields

EXAMPLE

Umami User Example

6 fields

EXAMPLE

Umami User Request Example

3 fields

EXAMPLE

Umami Website Example

10 fields

EXAMPLE

Umami Website List Example

4 fields

EXAMPLE

Umami Website Stats Example

5 fields

EXAMPLE

Resources

🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
📰
Blog
Blog
💰
Pricing
Pricing
👥
GitHub
GitHub
🔗
Login
Login
📝
Signup
Signup
🔗
SelfHosting
SelfHosting
💬
Support
Support
🔗
SpectralRules
SpectralRules
🔗
Vocabulary
Vocabulary

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Umami Analytics API
  version: '1.0'
request:
  auth:
    type: bearer
    token: '{{bearerToken}}'
items:
- info:
    name: Authentication
    type: folder
  items:
  - info:
      name: Umami Login
      type: http
    http:
      method: POST
      url: https://api.umami.is/api/auth/login
      body:
        type: json
        data: '{}'
    docs: Obtain a JWT bearer token for API authentication on self-hosted instances.
  - info:
      name: Umami Verify Token
      type: http
    http:
      method: POST
      url: https://api.umami.is/api/auth/verify
    docs: Validate that a JWT bearer token is still active and retrieve current user info.
- info:
    name: Websites
    type: folder
  items:
  - info:
      name: Umami List Websites
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/websites
      params:
      - name: includeTeams
        value: 'false'
        type: query
        description: Include team-owned websites
      - name: search
        value: mysite
        type: query
        description: Filter websites by name or domain
      - name: page
        value: '1'
        type: query
        description: Page number for pagination
      - name: pageSize
        value: '20'
        type: query
        description: Number of results per page
    docs: Retrieve all websites accessible to the authenticated user.
  - info:
      name: Umami Create Website
      type: http
    http:
      method: POST
      url: https://api.umami.is/api/websites
      body:
        type: json
        data: '{}'
    docs: Add a new website to Umami for tracking.
  - info:
      name: Umami Get Website
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/websites/:websiteId
      params:
      - name: websiteId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Website identifier
    docs: Retrieve a specific website by its ID.
  - info:
      name: Umami Update Website
      type: http
    http:
      method: POST
      url: https://api.umami.is/api/websites/:websiteId
      params:
      - name: websiteId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Website identifier
      body:
        type: json
        data: '{}'
    docs: Modify settings for an existing website.
  - info:
      name: Umami Delete Website
      type: http
    http:
      method: DELETE
      url: https://api.umami.is/api/websites/:websiteId
      params:
      - name: websiteId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Website identifier
    docs: Remove a website and all associated data from Umami.
- info:
    name: Website Statistics
    type: folder
  items:
  - info:
      name: Umami Website Stats
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/websites/:websiteId/stats
      params:
      - name: websiteId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Website identifier
      - name: startAt
        value: '1704067200000'
        type: query
        description: Start timestamp in milliseconds
      - name: endAt
        value: '1704153600000'
        type: query
        description: End timestamp in milliseconds
    docs: Retrieve summarized statistics for a website within a given time range.
  - info:
      name: Umami Website Pageviews
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/websites/:websiteId/pageviews
      params:
      - name: websiteId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Website identifier
      - name: startAt
        value: '1704067200000'
        type: query
        description: Start timestamp in milliseconds
      - name: endAt
        value: '1704153600000'
        type: query
        description: End timestamp in milliseconds
      - name: unit
        value: day
        type: query
        description: Time bucket unit
      - name: timezone
        value: America/New_York
        type: query
        description: IANA timezone name
    docs: Retrieve pageview data bucketed by time unit within a given date range.
  - info:
      name: Umami Website Metrics
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/websites/:websiteId/metrics
      params:
      - name: websiteId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Website identifier
      - name: startAt
        value: '1704067200000'
        type: query
        description: Start timestamp in milliseconds
      - name: endAt
        value: '1704153600000'
        type: query
        description: End timestamp in milliseconds
      - name: type
        value: url
        type: query
        description: Metric dimension to retrieve
      - name: limit
        value: '20'
        type: query
        description: Maximum number of results
    docs: Retrieve metrics for a website broken down by a specific dimension.
  - info:
      name: Umami Active Visitors
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/websites/:websiteId/active
      params:
      - name: websiteId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Website identifier
    docs: Retrieve the number of currently active visitors on a website.
- info:
    name: Sessions
    type: folder
  items:
  - info:
      name: Umami List Sessions
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/websites/:websiteId/sessions
      params:
      - name: websiteId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Website identifier
      - name: startAt
        value: '1704067200000'
        type: query
        description: Start timestamp in milliseconds
      - name: endAt
        value: '1704153600000'
        type: query
        description: End timestamp in milliseconds
      - name: page
        value: '1'
        type: query
        description: Page number
      - name: pageSize
        value: '20'
        type: query
        description: Results per page
    docs: Retrieve session details for a website within a given time range.
  - info:
      name: Umami Session Stats
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/websites/:websiteId/sessions/stats
      params:
      - name: websiteId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Website identifier
      - name: startAt
        value: '1704067200000'
        type: query
        description: Start timestamp in milliseconds
      - name: endAt
        value: '1704153600000'
        type: query
        description: End timestamp in milliseconds
    docs: Retrieve summarized session statistics for a website.
- info:
    name: Events
    type: folder
  items:
  - info:
      name: Umami Event Series
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/websites/:websiteId/events/series
      params:
      - name: websiteId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Website identifier
      - name: startAt
        value: '1704067200000'
        type: query
        description: Start timestamp in milliseconds
      - name: endAt
        value: '1704153600000'
        type: query
        description: End timestamp in milliseconds
      - name: unit
        value: day
        type: query
        description: Time bucket unit
      - name: timezone
        value: America/New_York
        type: query
        description: IANA timezone name
    docs: Retrieve custom events within a given time range for a website.
- info:
    name: Users
    type: folder
  items:
  - info:
      name: Umami Create User
      type: http
    http:
      method: POST
      url: https://api.umami.is/api/users
      body:
        type: json
        data: '{}'
    docs: Create a new user account. Only available for admin users on self-hosted instances.
  - info:
      name: Umami Get User
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/users/:userId
      params:
      - name: userId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: User identifier
    docs: Retrieve a user account by ID. Only available for admin users on self-hosted instances.
  - info:
      name: Umami Delete User
      type: http
    http:
      method: DELETE
      url: https://api.umami.is/api/users/:userId
      params:
      - name: userId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: User identifier
    docs: Remove a user account. Only available for admin users on self-hosted instances.
- info:
    name: Teams
    type: folder
  items:
  - info:
      name: Umami List Teams
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/teams
      params:
      - name: page
        value: '1'
        type: query
        description: Page number
      - name: pageSize
        value: '20'
        type: query
        description: Results per page
    docs: Retrieve all teams accessible to the authenticated user.
  - info:
      name: Umami Create Team
      type: http
    http:
      method: POST
      url: https://api.umami.is/api/teams
      body:
        type: json
        data: '{}'
    docs: Create a new team for collaborative website management.
  - info:
      name: Umami Join Team
      type: http
    http:
      method: POST
      url: https://api.umami.is/api/teams/join
      body:
        type: json
        data: '{}'
    docs: Join an existing team using an access code.
  - info:
      name: Umami Get Team
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/teams/:teamId
      params:
      - name: teamId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Team identifier
    docs: Retrieve details for a specific team including members.
  - info:
      name: Umami Delete Team
      type: http
    http:
      method: DELETE
      url: https://api.umami.is/api/teams/:teamId
      params:
      - name: teamId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Team identifier
    docs: Remove a team and all associated memberships.
  - info:
      name: Umami Team Websites
      type: http
    http:
      method: GET
      url: https://api.umami.is/api/teams/:teamId/websites
      params:
      - name: teamId
        value: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        type: path
        description: Team identifier
      - name: search
        value: mysite
        type: query
        description: Filter by name or domain
      - name: page
        value: '1'
        type: query
        description: Page number
      - name: pageSize
        value: '20'
        type: query
        description: Results per page
    docs: Retrieve all websites belonging to a specific team.
bundled: true