Umami是一款开源、隐私优先的网站分析工具,其自托管版提供完整的REST API。使用前需通过登录获取Token进行认证。API涵盖网站管理(如创建、查询、更新网站)、会话统计(获取访问量、访客详情等数据)以及自定义事件追踪等功能,支持程序化获取和管理分析数据。
Umami 是一款开源的网站分析工具,主打隐私优先。除了通过 Web 界面查看数据,Umami 还提供了完整的 REST API,让你可以程序化地获取和管理分析数据。本文将详细介绍 Umami 自托管版的所有 API 接口及使用方法。
自托管版 Umami 需要先登录获取 Token,然后在后续请求中携带 Token。
curl -X POST https://你的umami域名/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "你的密码"}'
curl -X POST https://你的umami域名/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "你的密码"}'返回示例:
{
"token": "eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A",
"user": {
"id": "xxx",
"username": "admin",
"role": "admin"
}
}
在后续所有 API 请求中添加 Authorization 头:
curl https://你的umami域名/api/websites \
-H "Authorization: Bearer <token>"
curl -X POST https://你的umami域名/api/auth/verify \
-H "Authorization: Bearer <token>"
curl -X POST https://你的umami域名/api/auth/verify \
-H "Authorization: Bearer <token>"
GET /api/websites
GET /api/websites参数:
includeTeams- 是否包含团队网站search- 搜索关键词page- 页码pageSize- 每页数量
POST /api/websites
Content-Type: application/json
{
"name": "我的网站",
"domain": "example.com"
}
POST /api/websites
Content-Type: application/json
{
"name": "我的网站",
"domain": "example.com"
}
GET /api/websites/:websiteId # 获取详情
POST /api/websites/:websiteId # 更新
DELETE /api/websites/:websiteId # 删除
POST /api/websites/:websiteId/reset # 重置数据
GET /api/websites/:websiteId # 获取详情
POST /api/websites/:websiteId # 更新
DELETE /api/websites/:websiteId # 删除
POST /api/websites/:websiteId/reset # 重置数据这是最常用的 API,用于获取访问统计数据。
GET /api/websites/:websiteId/sessions?startAt=1704067200000&endAt=1704153600000
GET /api/websites/:websiteId/sessions?startAt=1704067200000&endAt=1704153600000返回每个访客的详细信息:浏览器、操作系统、设备、国家、城市、访问次数等。
GET /api/websites/:websiteId/sessions/stats?startAt=xxx&endAt=xxx
GET /api/websites/:websiteId/sessions/stats?startAt=xxx&endAt=xxx返回:
{
"pageviews": {"value": 2924},
"visitors": {"value": 905},
"visits": {"value": 1050},
"countries": {"value": 84},
"events": {"value": 517}
}
GET /api/websites/:websiteId/sessions/weekly?timezone=Asia/Shanghai
GET /api/websites/:websiteId/sessions/weekly?timezone=Asia/Shanghai
GET /api/websites/:websiteId/sessions/:sessionId # 会话信息
GET /api/websites/:websiteId/sessions/:sessionId/activity # 活动记录
GET /api/websites/:websiteId/sessions/:sessionId/properties # 会话属性
GET /api/websites/:websiteId/sessions/:sessionId # 会话信息
GET /api/websites/:websiteId/sessions/:sessionId/activity # 活动记录
GET /api/websites/:websiteId/sessions/:sessionId/properties # 会话属性用于追踪自定义事件(如按钮点击、表单提交等)。
GET /api/websites/:websiteId/events?startAt=xxx&endAt=xxx
GET /api/websites/:websiteId/events?startAt=xxx&endAt=xxx
GET /api/websites/:websiteId/event-data # 按事件分组
GET /api/websites/:websiteId/event-data/events # 事件名统计
GET /api/websites/:websiteId/event-data/fields # 事件字段
GET /api/websites/:websiteId/event-data/properties # 属性统计
GET /api/websites/:websiteId/event-data/values # 属性值统计
GET /api/websites/:websiteId/event-data/stats # 聚合统计
GET /api/websites/:websiteId/event-data # 按事件分组
GET /api/websites/:websiteId/event-data/events # 事件名统计
GET /api/websites/:websiteId/event-data/fields # 事件字段
GET /api/websites/:websiteId/event-data/properties # 属性统计
GET /api/websites/:websiteId/event-data/values # 属性值统计
GET /api/websites/:websiteId/event-data/stats # 聚合统计
GET /api/teams # 获取所有团队
POST /api/teams # 创建团队
POST /api/teams/join # 加入团队(需要 accessCode)
GET /api/teams/:teamId # 获取团队
POST /api/teams/:teamId # 更新团队
DELETE /api/teams/:teamId # 删除团队
GET /api/teams # 获取所有团队
POST /api/teams # 创建团队
POST /api/teams/join # 加入团队(需要 accessCode)
GET /api/teams/:teamId # 获取团队
POST /api/teams/:teamId # 更新团队
DELETE /api/teams/:teamId # 删除团队
GET /api/teams/:teamId/users # 成员列表
POST /api/teams/:teamId/users # 添加成员
POST /api/teams/:teamId/users/:userId # 更新角色
DELETE /api/teams/:teamId/users/:userId # 移除成员
GET /api/teams/:teamId/users # 成员列表
POST /api/teams/:teamId/users # 添加成员
POST /api/teams/:teamId/users/:userId # 更新角色
DELETE /api/teams/:teamId/users/:userId # 移除成员角色类型:team-owner、team-manager、team-member、team-view-only
仅自托管版管理员可用。
POST /api/users # 创建用户
GET /api/users/:userId # 获取用户
POST /api/users/:userId # 更新用户
DELETE /api/users/:userId # 删除用户
GET /api/users/:userId/websites # 用户网站
GET /api/users/:userId/teams # 用户团队
角色类型:admin、user、view-only
大部分统计接口支持以下过滤参数:
| 参数 | 说明 |
|---|---|
| startAt | 开始时间(毫秒时间戳) |
| endAt | 结束时间(毫秒时间戳) |
| path | URL 路径 |
| referrer | 来源 |
| browser | 浏览器 |
| os | 操作系统 |
| device | 设备类型(Mobile/Desktop) |
| country | 国家 |
| city | 城市 |
| page | 页码 |
| pageSize | 每页数量 |
获取昨天到今天的访问统计:
#!/bin/bash
# 配置
UMAMI_URL="https://your-umami.example.com"
USERNAME="admin"
PASSWORD="your-password"
WEBSITE_ID="your-website-id"
# 登录获取 Token
TOKEN=$(curl -s -X POST "$UMAMI_URL/api/auth/login" \
-H "Content-Type: application/json" \
-d "{\"username\": \"$USERNAME\", \"password\": \"$PASSWORD\"}" \
| jq -r '.token')
# 计算时间范围(昨天到现在)
START_AT=$(date -d "yesterday" +%s)000
END_AT=$(date +%s)000
# 获取统计
curl -s "$UMAMI_URL/api/websites/$WEBSITE_ID/sessions/stats?startAt=$START_AT&endAt=$END_AT" \
-H "Authorization: Bearer $TOKEN" \
| jq '.'
Umami 的 API 设计简洁直观,覆盖了从认证、网站管理、数据统计到团队协作的全部功能。你可以用它来:
- 构建自定义数据看板
- 定时导出分析报告
- 与其他系统集成
- 自动化网站管理
完整 API 文档:https://umami.is/docs/api

暂无评论
要发表评论,您必须先 登录