用戶旅程統計 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<Object> | 回傳的統計資訊 |
| journey_id | Long | 旅程 ID |
| time_unit | String | 時間單位。有 2 個取值:HOUR:小時,DAY:天 |
| error_code | Int | Journey 的統計資訊是否取得成功,0 代表成功,其他值代表失敗 |
| detail | Array<Object> | 每小時/每日明細 |
| 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<Object> | 回傳的統計資訊 |
| journey_id | Long | 旅程 ID |
| time_unit | String | 時間單位。有 2 個取值:HOUR:小時,DAY:天 |
| error_code | Int | Journey 的統計資訊是否取得成功,0 代表成功,其他值代表失敗 |
| detail | Array<Object> | 每小時/每日明細 |
| 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<Object> | 回傳的統計資訊 |
| journey_id | Long | 旅程 ID |
| time_unit | String | 時間單位。有 2 個取值:HOUR:小時,DAY:天 |
| error_code | Int | Journey 的統計資訊是否取得成功,0 代表成功,其他值代表失敗 |
| detail | Array<Object> | 每小時/每日明細 |
| 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 欄位,標識某條旅程查詢失敗)。 |










