用户旅程统计 REST API
查询统计数据,包括「旅程整体统计」「消息发送统计」「WebHook发送统计」
用户旅程统计
可查询旅程的「参与人次、目标转化、提前退出、正常退出、过程中」的数据
调用地址
GET /v1/stats/journey
调用验证
EngageLab REST API 采用 HTTP 基本认证 的验证方式:HTTP Header(头)里加 Authorization:
Authorization: Basic ${base64_auth_string}
Authorization: Basic ${base64_auth_string}
此代码块在浮窗中显示
上述 base64_auth_string 的生成算法为:base64(api_key:api_secret)
- Header 名称是 "Authorization",值是 base64 转换过的 "username:password" 对(中间有个冒号)。
- 在 MA API 的场景里,username 是 APIKey,password 是 APISecret。请在数据来源中添加 API 类型的数据源获得 APIKey 与 API Secret。
请求示例
curl -X GET 'https://ma-api.engagelab.com/v1/stats/journey?journey_id=123&time_unit=DAY&start_time=2026-06-01&end_time=2026-06-07' \
-H 'Authorization: Basic OTY0NDFlNGQ3MzIwN2E2NTE3YWJmYmJjOmFwaV9zZWNyZXRfeHh4'
curl -X GET 'https://ma-api.engagelab.com/v1/stats/journey?journey_id=123&time_unit=DAY&start_time=2026-06-01&end_time=2026-06-07' \
-H 'Authorization: Basic OTY0NDFlNGQ3MzIwN2E2NTE3YWJmYmJjOmFwaV9zZWNyZXRfeHh4'
此代码块在浮窗中显示
请求参数
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
| journey_id | String | 是 | 旅程ID,多个ID用英文逗号分隔,最多支持100个 |
| time_unit | String | 是 | 时间单位。有2个取值:HOUR:小时,DAY:天 |
| start_time | String | 是 | 开始时间,格式为 yyyy-MM-dd |
| end_time | String | 是 | 结束时间,格式为 yyyy-MM-dd-结束时间 >= 开始时间 - 开始与结束的区间最长 31 天。 |
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
| code | Integer | 接口调用是否成功,0 表示成功或者部分成功,其他值代表失败 |
| message | String | 接口调用结果描述,对返回码的说明,成功为 success |
| data | Array | 返回的统计信息 |
| journey_id | Long | 旅程ID |
| time_unit | String | 时间单位。有2个取值:HOUR:小时,DAY:天 |
| error_code | Int | Journey 的统计信息是否获取成功,0 代表成功,其他值代表失败 |
| detail | Array | 每小时/每日明细 |
| time | String | 响应中的统计日期,格式为 yyyy-MM-dd、yyyy-MM-dd HH |
| entry_count | Long | 进入的人次 |
| conversion_count | Long | 转化的人次 |
| completion_count | Long | 正常退出的人次 |
| early_exit_count | Long | 提前退出的人次 |
| in_progress_count | Long | 过程中的人次,截至 end_time 或者 time 下仍在旅程内的人次 |
全部成功
{
"code": 0,
"message": "success",
"data": [
{
"journey_id":123,
"time_unit": "DAY",
"error_code": 0,
"detail": [
{
"time": "2026-05-28",
"entry_count": 312,
"conversion_count": 24,
"early_exit_count": 41,
"completion_count": 247,
"in_progress_count": 156
}
]
},
{
"journey_id":234,
"time_unit": "DAY",
"error_code": 0,
"detail": [
{
"time": "2026-05-28",
"entry_count": 312,
"conversion_count": 24,
"early_exit_count": 41,
"completion_count": 247,
"in_progress_count": 156
}
]
}]
}
{
"code": 0,
"message": "success",
"data": [
{
"journey_id":123,
"time_unit": "DAY",
"error_code": 0,
"detail": [
{
"time": "2026-05-28",
"entry_count": 312,
"conversion_count": 24,
"early_exit_count": 41,
"completion_count": 247,
"in_progress_count": 156
}
]
},
{
"journey_id":234,
"time_unit": "DAY",
"error_code": 0,
"detail": [
{
"time": "2026-05-28",
"entry_count": 312,
"conversion_count": 24,
"early_exit_count": 41,
"completion_count": 247,
"in_progress_count": 156
}
]
}]
}
此代码块在浮窗中显示
全部失败
{
"code": 50219,
"message": "The number of JourneyIDs exceeds 100."
}
{
"code": 50219,
"message": "The number of JourneyIDs exceeds 100."
}
此代码块在浮窗中显示
部分成功
{
"code": 0,
"message": "success",
"data": [
{
"journey_id": 123,
"time_unit": "DAY",
"error_code": 0,
"detail": [
{
"time": "2026-05-28",
"entry_count": 312,
"conversion_count": 24,
"early_exit_count": 41,
"completion_count": 247,
"in_progress_count": 156
}
]
},
{
"journey_id": -1,
"error_code": 50221
}]
}
{
"code": 0,
"message": "success",
"data": [
{
"journey_id": 123,
"time_unit": "DAY",
"error_code": 0,
"detail": [
{
"time": "2026-05-28",
"entry_count": 312,
"conversion_count": 24,
"early_exit_count": 41,
"completion_count": 247,
"in_progress_count": 156
}
]
},
{
"journey_id": -1,
"error_code": 50221
}]
}
此代码块在浮窗中显示
消息发送统计
可查询旅程中每一个消息组件的「发送、送达、点击」等数据
调用地址
GET /v1/stats/journey/message
请求示例
curl -X GET 'https://ma-api.engagelab.com/v1/stats/journey/message?journey_id=123&time_unit=DAY&start_time=2026-06-01&end_time=2026-06-07' \
-H 'Authorization: Basic OTY0NDFlNGQ3MzIwN2E2NTE3YWJmYmJjOmFwaV9zZWNyZXRfeHh4'
curl -X GET 'https://ma-api.engagelab.com/v1/stats/journey/message?journey_id=123&time_unit=DAY&start_time=2026-06-01&end_time=2026-06-07' \
-H 'Authorization: Basic OTY0NDFlNGQ3MzIwN2E2NTE3YWJmYmJjOmFwaV9zZWNyZXRfeHh4'
此代码块在浮窗中显示
请求参数
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
| journey_id | String | 是 | 旅程ID,多个ID用英文逗号分隔,最多支持100个 |
| time_unit | String | 是 | 时间单位。有2个取值:HOUR:小时,DAY:天 |
| start_time | String | 是 | 开始时间,格式为 yyyy-MM-dd |
| end_time | String | 是 | 结束时间,格式为 yyyy-MM-dd-结束时间 >= 开始时间 - 开始与结束的区间最长 31 天。 |
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
| code | Integer | 接口调用是否成功,0 表示成功或者部分成功,其他值代表失败 |
| message | String | 接口调用结果描述,对返回码的说明,成功为 success |
| data | Array | 返回的统计信息 |
| journey_id | Long | 旅程ID |
| time_unit | String | 时间单位。有2个取值:HOUR:小时,DAY:天 |
| error_code | Int | Journey 的统计信息是否获取成功,0 代表成功,其他值代表失败 |
| detail | Array | 每小时/每日明细 |
| time | String | 响应中的统计日期,格式为 yyyy-MM-dd、yyyy-MM-dd HH。 |
| component_id | Long | 消息组件 ID。 |
| component_name | String | 消息组件名称,例如 APP_PUSH_1、EMAIL_2。 |
| channel | String | 通道类型。 |
| entry_count | Long | 进入人次。 |
| plan_count | Long | 计划目标数。 |
| send_count | Long | 发送数。 |
| delivery_count | Long | 送达数。 |
| impression_count | Long | 展示数。 |
| open_count | Long | 打开数。 |
| click_count | Long | 点击数。 |
| conversion_count | Long | 转化数。 |
| revenue_count | Long | 产生收入的次数。 |
| revenue_amount | Number | 收入金额合计。 |
全部成功
{
"code": 0,
"message": "success",
"data": [
{
"journey_id": 123,
"time_unit": "DAY",
"error_code": 0,
"detail": [
{
"component_id": 8801,
"component_name": "EMAIL_1",
"channel": "Email",
"time": "2026-05-28",
"entry_count": 320,
"plan_count": 312,
"send_count": 290,
"delivery_count": 270,
"impression_count": 198,
"open_count": 155,
"click_count": 24,
"conversion_count": 8,
"revenue_count": 7,
"revenue_amount": 488.50
},
{
"component_id": 8801,
"component_name": "EMAIL_1",
"channel": "Email",
"time": "2026-05-29",
"entry_count": 305,
"plan_count": 298,
"send_count": 280,
"delivery_count": 261,
"impression_count": 185,
"open_count": 144,
"click_count": 19,
"conversion_count": 6,
"revenue_count": 5,
"revenue_amount": 312.00
}
]
}
]
}
{
"code": 0,
"message": "success",
"data": [
{
"journey_id": 123,
"time_unit": "DAY",
"error_code": 0,
"detail": [
{
"component_id": 8801,
"component_name": "EMAIL_1",
"channel": "Email",
"time": "2026-05-28",
"entry_count": 320,
"plan_count": 312,
"send_count": 290,
"delivery_count": 270,
"impression_count": 198,
"open_count": 155,
"click_count": 24,
"conversion_count": 8,
"revenue_count": 7,
"revenue_amount": 488.50
},
{
"component_id": 8801,
"component_name": "EMAIL_1",
"channel": "Email",
"time": "2026-05-29",
"entry_count": 305,
"plan_count": 298,
"send_count": 280,
"delivery_count": 261,
"impression_count": 185,
"open_count": 144,
"click_count": 19,
"conversion_count": 6,
"revenue_count": 5,
"revenue_amount": 312.00
}
]
}
]
}
此代码块在浮窗中显示
WebHook 发送统计
可查询旅程中每一个 WebHook 组件的「请求、成功」等数据
调用地址
GET /v1/stats/journey/webhook
请求示例
curl -X GET 'https://ma-api.engagelab.com/v1/stats/journey/webhook?journey_id=123&time_unit=DAY&start_time=2026-06-01&end_time=2026-06-07' \
-H 'Authorization: Basic OTY0NDFlNGQ3MzIwN2E2NTE3YWJmYmJjOmFwaV9zZWNyZXRfeHh4'
curl -X GET 'https://ma-api.engagelab.com/v1/stats/journey/webhook?journey_id=123&time_unit=DAY&start_time=2026-06-01&end_time=2026-06-07' \
-H 'Authorization: Basic OTY0NDFlNGQ3MzIwN2E2NTE3YWJmYmJjOmFwaV9zZWNyZXRfeHh4'
此代码块在浮窗中显示
请求参数
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
| journey_id | String | 是 | 旅程ID,多个ID用英文逗号分隔,最多支持100个 |
| time_unit | String | 是 | 时间单位。有2个取值:HOUR:小时,DAY:天 |
| start_time | String | 是 | 开始时间,格式为 yyyy-MM-dd |
| end_time | String | 是 | 结束时间,格式为 yyyy-MM-dd-结束时间 >= 开始时间 - 开始与结束的区间最长 31 天。 |
返回参数
| 字段 | 类型 | 说明 |
|---|---|---|
| code | Integer | 接口调用是否成功,0 表示成功或者部分成功,其他值代表失败 |
| message | String | 接口调用结果描述,对返回码的说明,成功为 success |
| data | Array | 返回的统计信息 |
| journey_id | Long | 旅程ID |
| time_unit | String | 时间单位。有2个取值:HOUR:小时,DAY:天 |
| error_code | Int | Journey 的统计信息是否获取成功,0 代表成功,其他值代表失败 |
| detail | Array | 每小时/每日明细 |
| time | String | 响应中的统计日期,格式为 yyyy-MM-dd、yyyy-MM-dd HH。 |
| component_id | Long | 消息组件 ID。 |
| component_name | String | 消息组件名称,例如 APP_PUSH_1、EMAIL_2。 |
| entry_count | Long | 进入 Webhook 组件人次。 |
| send_count | Long | 请求成功数。 |
| send_failure_count | Long | 请求失败数。 |
全部成功
{
"code": 0,
"message": "success",
"data": [
{
"journey_id": 123,
"time_unit": "DAY",
"error_code": 0,
"detail": [
{
"component_id": 9001,
"component_name": "WEBHOOK_1",
"time": "2026-05-28",
"entry_count": 520,
"send_count": 498,
"send_failure_count": 22
},
{
"component_id": 9001,
"component_name": "WEBHOOK_1",
"time": "2026-05-29",
"entry_count": 610,
"send_count": 600,
"send_failure_count": 10
}
]
}
]
}
{
"code": 0,
"message": "success",
"data": [
{
"journey_id": 123,
"time_unit": "DAY",
"error_code": 0,
"detail": [
{
"component_id": 9001,
"component_name": "WEBHOOK_1",
"time": "2026-05-28",
"entry_count": 520,
"send_count": 498,
"send_failure_count": 22
},
{
"component_id": 9001,
"component_name": "WEBHOOK_1",
"time": "2026-05-29",
"entry_count": 610,
"send_count": 600,
"send_failure_count": 10
}
]
}
]
}
此代码块在浮窗中显示
错误码
通用错误码
| HTTP 状态码 | code | message | 说明 |
|---|---|---|---|
| 401 | 40050 | authorization invalid | 鉴权失败。 |
| 429 | 55110 | Too many requests, please try again later. | 请求频率超限。 |
| 400 | 40001 | http参数不合法 | HTTP 报文或必填 path/query 参数不合法。 |
| 400 | 40002 | 业务参数不合法 | 参数格式、枚举或类型校验失败。 |
| 400 | 50034 | 项目不存在 | APIKey 绑定的项目不存在。 |
| 500 | -1 | 服务器内部错误 | 服务异常。 |
旅程统计错误码
| HTTP 状态码 | code | message | 说明 |
|---|---|---|---|
| 400 | 50202 | Journey does not exist. | 旅程不存在,或不属于当前项目。 |
| 400 | 50217 | Invalid time range. | start_time > end_time,或查询区间超过 31 天。 |
| 400 | 50219 | The number of JourneyIDs exceeds 100. | JourneyID 数量超过 100 个上限。 |
| 400 | 50220 | Invalid time_unit. | time_unit 值非法,仅支持 HOUR 和 DAY。 |
| 400 | 50221 | Invalid journey_id format. | 单个 JourneyID 格式非法(error_code 字段,标识某条旅程查询失败)。 |










