Dataflow
Manage Dataflow Functions.
Retrieve KPI metrics for one or multiple queues within a specified time range. When multiple queues are specified, the system returns their averaged KPI metrics.
The start time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T00:00:00-04:00).
2025-09-28T00:00:00-04:00The end time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T15:00:00-04:00).
2025-09-28T15:00:00-04:00OK
Error
POST /api/dataflow/queues/summary HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 191
{
"queues": [
{
"number": "1001",
"sla_secs": 300
},
{
"number": "1002",
"sla_secs": 100
},
{
"number": "1003",
"sla_secs": 600
}
],
"start_time": "2025-09-28T00:00:00-04:00",
"end_time": "2025-09-28T15:00:00-04:00"
}{
"metrics": {
"offered": 412,
"accepted": 400,
"abandoned": 12,
"sla_pct": 85.5,
"aht_sec": 600,
"att_sec": 90,
"avg_wrap_time_sec": 1000,
"asa_sec": 300
}
}Retrieve call timeseries data for a specific queue within a specified time range.
The data is returned in intervals specified by the interval field.
Maximum supported time range is 24 hours.
Queue number.
8000The start time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T00:00:00-04:00).
2025-09-28T00:00:00-04:00The end time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T15:00:00-04:00).
2025-09-28T15:00:00-04:00Interval for aggregating timeseries points. Supported values: 1h, 2h, 3h, 4h, 6h, 8h
1hOK
Error
POST /api/dataflow/queues/timeseries HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 112
{
"queue": "8000",
"start_time": "2025-09-28T00:00:00-04:00",
"end_time": "2025-09-28T15:00:00-04:00",
"interval": "1h"
}{
"points": [
{
"t": "2025-09-29T10:00:00-04:00",
"offered": 62,
"accepted": 56,
"abandoned": 4,
"asa_sec": 18,
"cb_ok": 1,
"cb_fail": 2
},
{
"t": "2025-09-29T11:00:00-04:00",
"offered": 62,
"accepted": 56,
"abandoned": 4,
"asa_sec": 18,
"cb_ok": 1,
"cb_fail": 2
},
{
"t": "2025-09-29T12:00:00-04:00",
"offered": 62,
"accepted": 56,
"abandoned": 4,
"asa_sec": 18,
"cb_ok": 1,
"cb_fail": 2
},
{
"t": "2025-09-29T13:00:00-04:00",
"offered": 62,
"accepted": 56,
"abandoned": 4,
"asa_sec": 18,
"cb_ok": 1,
"cb_fail": 2
},
{
"t": "2025-09-29T14:00:00-04:00",
"offered": 62,
"accepted": 56,
"abandoned": 4,
"asa_sec": 18,
"cb_ok": 1,
"cb_fail": 2
},
{
"t": "2025-09-29T15:00:00-04:00",
"offered": 62,
"accepted": 56,
"abandoned": 4,
"asa_sec": 18,
"cb_ok": 1,
"cb_fail": 2
}
]
}Retrieve summary metrics for a specific agent in a specific queue within a given time range. Maximum supported time range is 24 hours.
Queue number.
8000Agent number.
101The start time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T00:00:00-04:00).
2025-09-28T00:00:00-04:00The end time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T15:00:00-04:00).
2025-09-28T15:00:00-04:00OK
Error
POST /api/dataflow/queues/agent/summary HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 110
{
"queue": "8000",
"agent": "101",
"start_time": "2025-09-28T00:00:00-04:00",
"end_time": "2025-09-28T15:00:00-04:00"
}{
"points": {
"total": 1000,
"accepted": 400,
"occupancy_pct": 85.5,
"aht_sec": 600,
"att_sec": 90,
"avg_wrap_time_sec": 1000,
"average_ring_time_sec": 300
}
}Retrieve segmented timeseries metrics for a specific agent in a specific queue within a given time range. The maximum supported time range is 24 hours.
Returned data is grouped into time intervals defined by the interval parameter.
Queue number.
8000Agent number.
101The start time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T00:00:00-04:00).
2025-09-28T00:00:00-04:00The end time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T15:00:00-04:00).
2025-09-28T15:00:00-04:00Interval for aggregating timeseries points. Supported values: 1h, 2h, 3h, 4h, 6h, 8h
1hOK
Error
POST /api/dataflow/queues/agent/timeseries HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 126
{
"queue": "8000",
"agent": "101",
"start_time": "2025-09-28T00:00:00-04:00",
"end_time": "2025-09-28T15:00:00-04:00",
"interval": "1h"
}{
"points": [
{
"t": "2025-09-29T10:00:00-04:00",
"occupancy_pct": 62.5,
"aht_sec": 56,
"att_sec": 4,
"accepted": 18
},
{
"t": "2025-09-29T11:00:00-04:00",
"occupancy_pct": 71.2,
"aht_sec": 64,
"att_sec": 5,
"accepted": 22
},
{
"t": "2025-09-29T12:00:00-04:00",
"occupancy_pct": 68.3,
"aht_sec": 60,
"att_sec": 6,
"accepted": 24
},
{
"t": "2025-09-29T13:00:00-04:00",
"occupancy_pct": 59.8,
"aht_sec": 52,
"att_sec": 5,
"accepted": 19
},
{
"t": "2025-09-29T14:00:00-04:00",
"occupancy_pct": 44.1,
"aht_sec": 40,
"att_sec": 3,
"accepted": 17
},
{
"t": "2025-09-29T15:00:00-04:00",
"occupancy_pct": 51.8,
"aht_sec": 46,
"att_sec": 3,
"accepted": 20
}
]
}Retrieve the call volume time series within a specified time range.
Supports up to 365 days range and a minimum of 1 day.
If the range is 1 day, results are grouped hourly (24 intervals).
If the range is multiple days, results are grouped daily.
Returned data includes total, answered, and not answered call counts.
Tenant users do not need to specify
tenantsand can only query their own data.System administrators can specify multiple tenant IDs, or leave
tenantsempty to query all tenants.
Array of tenant IDs.
- For tenant users, this field is ignored.
- For system administrators, leave empty to query all tenants.
[1030655834964623400,1030655834964623400]The start time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T00:00:00-04:00).
2025-09-28T00:00:00-04:00The end time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T15:00:00-04:00).
2025-09-28T15:00:00-04:00Interval for aggregating timeseries points. Supported values: 1h, 2h, 3h, 4h, 6h, 8h
1hSuccessful response
Error response
POST /api/dataflow/analytics/calls/timeseries HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 149
{
"tenants": [
1030655834964623400,
1030655834964623400
],
"start_time": "2025-09-28T00:00:00-04:00",
"end_time": "2025-09-28T15:00:00-04:00",
"interval": "1h"
}{
"points": [
{
"t": "2025-09-29T12:00:00-04:00",
"total": 118,
"answered": 62,
"not_answered": 56
},
{
"t": "2025-09-29T13:00:00-04:00",
"total": 118,
"answered": 62,
"not_answered": 56
},
{
"t": "2025-09-29T14:00:00-04:00",
"total": 118,
"answered": 62,
"not_answered": 56
}
]
}Retrieve detailed call history analytics within a specified time range.
Supports up to 365 days range.
Allows filtering by caller (
from), callee (to), duration, status, and session ID.Supports pagination via
topandskip.Time fields (
start_time,end_time,start_hour_of_day,end_hour_of_day) must include timezone information (e.g.,+08:00).The
statusfield is an enumeration with possible values:NONE,ANSWERED,NOT_ANSWERED.
Use the $count=true query option to include a count of entities that match the filter criteria.
falseUse the skip query parameter to set the number of items to skip at the start of a collection.
0Use the top query parameter to specify the page size of the result set.
100Caller number.
100Callee number.
110Call duration from start time in seconds.
100Call duration until end time in seconds.
200Specify the start hour of the call time range (0–23).
0Specify the end hour of the call time range (1–24).
24Call status.
The start time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T00:00:00-04:00).
2025-09-28T00:00:00-04:00The end time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T15:00:00-04:00).
2025-09-28T15:00:00-04:00Unique session ID for the call.
1040099039162400768Successful response
Total number of records
Error response
POST /api/dataflow/analytics/calls/history HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 241
{
"from": "101",
"to": "100",
"start_duration": 10,
"end_duration": 60,
"start_hour_of_day": 0,
"end_hour_of_day": 24,
"status": "ANSWERED",
"start_time": "2025-09-29T00:00:00-04:00",
"end_time": "2025-10-05T23:59:59-04:00",
"session_id": "1040099039162400768"
}{
"count": 1,
"items": [
{
"session_id": "123412312313132",
"caller": "101",
"caller_display_name": "101",
"caller_endpoint": "",
"call_id": "",
"service_number": "",
"service_name": "",
"service_type": "",
"callee": "102",
"callee_display_name": "102",
"callee_endpoint": "",
"started_at": "",
"rang_at": "",
"answered_at": "",
"ended_at": "",
"direction": "",
"end_reason": "",
"reroute_reason": "",
"status_code": 480,
"destination": "",
"outbound_caller_id": "",
"did": "",
"call_type": "",
"callback_id": "",
"billing_prefix": "",
"cost": 0,
"user_data": "",
"inbound_trunk": "",
"outbound_trunk": ""
}
]
}Retrieve detailed call user history analytics within a specified time range.
Supports up to 365 days range.
Allows filtering by caller (
from), callee (to), duration, status, and session ID.Supports pagination via
topandskip.Time fields (
start_time,end_time,start_hour_of_day,end_hour_of_day) must include timezone information (e.g.,+08:00).The
statusfield is an enumeration with possible values:NONE,ANSWERED,NOT_ANSWERED.
Use the $count=true query option to include a count of entities that match the filter criteria.
falseUse the skip query parameter to set the number of items to skip at the start of a collection.
0Use the top query parameter to specify the page size of the result set.
100Call duration from start time in seconds.
100Call duration until end time in seconds.
200Specify the start hour of the call time range (0–23).
0Specify the end hour of the call time range (1–24).
24Call status.
The start time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T00:00:00-04:00).
2025-09-28T00:00:00-04:00The end time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T15:00:00-04:00).
2025-09-28T15:00:00-04:00User number.
101Call party type, indicating the routing path of the call.
Call direction type, indicating the routing path of the call.
INBOUNDPossible values: Actual address of the callee, e.g., "sip:102@192.168.1.100:9002".
Successful response
Total number of records
Error response
POST /api/dataflow/analytics/calls/user/history HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 242
{
"from": "101",
"to": "100",
"start_duration": 10,
"end_duration": 300,
"start_hour_of_day": 0,
"end_hour_of_day": 24,
"status": "ANSWERED",
"start_time": "2025-09-29T00:00:00-04:00",
"end_time": "2025-10-05T23:59:59-04:00",
"session_id": "1040099039162400768"
}{
"count": 1,
"items": [
{
"session_id": "123412312313132",
"caller": "101",
"caller_display_name": "101",
"caller_endpoint": "",
"call_id": "",
"service_number": "",
"service_name": "",
"service_type": "",
"callee": "102",
"callee_display_name": "102",
"callee_endpoint": "",
"started_at": "",
"rang_at": "",
"answered_at": "",
"ended_at": "",
"direction": "",
"end_reason": "",
"reroute_reason": "",
"status_code": 480,
"destination": "",
"outbound_caller_id": "",
"did": "",
"call_type": "",
"callback_id": "",
"billing_prefix": "",
"cost": 0,
"user_data": "",
"inbound_trunk": "",
"outbound_trunk": ""
}
]
}Retrieve detailed call history for the specified session_id.
The session ID of the call to retrieve
Optional filters or additional request parameters
Successful response
Error response
POST /api/dataflow/analytics/calls/history/{session_id} HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
{
"count": 1,
"items": [
{
"session_id": "123412312313132",
"caller": "101",
"caller_display_name": "101",
"caller_endpoint": "",
"call_id": "",
"service_number": "",
"service_name": "",
"service_type": "",
"callee": "102",
"callee_display_name": "102",
"callee_endpoint": "",
"started_at": "",
"rang_at": "",
"answered_at": "",
"ended_at": "",
"direction": "",
"end_reason": "",
"reroute_reason": "",
"status_code": 480,
"destination": "",
"outbound_caller_id": "",
"did": "",
"call_type": "",
"callback_id": "",
"billing_prefix": "",
"cost": 0,
"user_data": "",
"inbound_trunk": "",
"outbound_trunk": ""
}
]
}Query detailed call history for a specific session_id.
The session ID of the call to retrieve.
Optional filters or additional request parameters
OK
Error
POST /api/dataflow/analytics/calls/user/history/{session_id} HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
{
"historys": [
{
"session_id": "123412312313132",
"caller": "101",
"caller_display_name": "101",
"caller_endpoint": "",
"call_id": "",
"service_number": "",
"service_name": "",
"service_type": "",
"callee": "102",
"callee_display_name": "102",
"callee_endpoint": "",
"started_at": "",
"rang_at": "",
"answered_at": "",
"ended_at": "",
"direction": "",
"end_reason": "",
"reroute_reason": "",
"status_code": 480,
"destination": "",
"outbound_caller_id": "",
"did": "",
"call_type": "",
"callback_id": "",
"billing_prefix": "",
"cost": 0,
"user_data": "",
"inbound_trunk": "",
"outbound_trunk": ""
}
]
}Retrieve the list of scheduled report job.
Use the filter query parameter to retrieve just a subset of a collection.
Use the $count=true query option to include a count of entities that match the filter criteria.
falseUse the orderby query parameter to specify the sort order of the items returned from server.
The default order is ascending order.
Use the skip query parameter to set the number of items to skip at the start of a collection.
0Use the top query parameter to specify the page size of the result set.
100OK
Total number of resource.
100Error
GET /api/dataflow/report_jobs HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"count": 2,
"items": [
{
"id": "1041260768550453248",
"report_id": "1041254768468557824",
"report_name": "User Statistics-13112025-246799",
"schedule_name": "My Daily Report",
"type": "USERSTATISTICS",
"format": "CSV",
"file_url": "/api/blobs/V5lc8N4e2xFDuNMj2TGIxAAAAPQmTXMO",
"create_time": "2025-11-13T15:58:32.912541+08:00",
"finish_time": "2025-11-13T15:58:33.075691+08:00",
"recipients": "user1@example.com;user2@example.com"
},
{
"id": "1041260768550453249",
"report_id": "1041254768468557824",
"report_name": "User Statistics-13112025-246788",
"schedule_name": "My Daily Report2",
"type": "USERSTATISTICS",
"format": "CSV",
"file_url": "/api/blobs/V5lc8N4e2xFDuNMj2TGIxAAAAPQ",
"create_time": "2025-11-13T11:58:32.912541+08:00",
"finish_time": "2025-11-13T11:59:33.075691+08:00",
"recipients": "user1@example.com;user2@example.com"
}
]
}Create a new analytics report task.
Report type, string enum.
Report file format:CSV、HTML
CSVPossible values: Report Job name
Start time; task will not run before this time
2025-09-30T10:00:00-04:00End time
2025-09-30T12:00:00-04:00gocron string, e.g.: Every day at 00:01 = 1 0 * * * Every month on 1st at 02:03 = 3 2 1 * * Every Tuesday at 01:02 = 2 1 * * 2
Whether the task is active
trueRecipient emails; multiple emails separated by semicolon
user1@gmail.com;user2@gmail.comTime zone, e.g., Asia/Shanghai
OK
The unique ID of the resource.
NzAwNTUxOTA5NzczMTQ4MTYwError
POST /api/dataflow/report_jobs HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 434
{
"type": "USERSTATISTICS",
"format": "CSV",
"schedule_name": "My User Statistics Report",
"start_time": "2025-10-01T00:00:00Z",
"end_time": "2025-10-31T23:59:59Z",
"params": {
"extension_number": "101;102-108;110",
"status": "ANSWERED",
"direction": "INBOUND",
"from": "2025-11-01T00:00:00Z",
"to": "2025-11-02T00:00:00Z",
"time_range": "TODAY"
},
"cron_expr": "0 0 * * *",
"active": true,
"recipients": "team@example.com;test2@qq.com",
"time_zone": "Asia/Shanghai"
}{
"id": [
"1017758181150949376"
]
}Get detailed information of a report execution job specified by id.
The unique ID of the resource.
NzAwNTUxOTA5NzczMTQ4MTYwSuccessful retrieval of the report job details.
The unique ID of the resource.
NzAwNTUxOTA5NzczMTQ4MTYwReport type, string enum.
Report file format:CSV、HTML
CSVPossible values: Report Job name
Start time; task will not run before this time
2025-09-30T10:00:00-04:00End time
2025-09-30T12:00:00-04:00gocron string, e.g.: Every day at 00:01 = 1 0 * * * Every month on 1st at 02:03 = 3 2 1 * * Every Tuesday at 01:02 = 2 1 * * 2
Recipient emails; multiple emails separated by semicolon
user1@gmail.com;user2@gmail.comWhether the task is active
trueTime zone, e.g., Asia/Shanghai
The timestamp of the most recent execution of the report job.
2025-11-13T11:19:02.738568+08:00Invalid input or retrieval failed.
GET /api/dataflow/report_jobs/{id} HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "NzAwNTUxOTA5NzczMTQ4MTYw",
"type": "USERSTATISTICS",
"format": "CSV",
"schedule_name": "text",
"start_time": "2025-09-30T10:00:00-04:00",
"end_time": "2025-09-30T12:00:00-04:00",
"params": {
"from": "2025-01-01T00:00:00Z",
"to": "2025-01-31T23:59:59Z",
"time_range": "TODAY",
"status": "NONE",
"direction": "NONE",
"extension_number": "101"
},
"cron_expr": "text",
"recipients": "user1@gmail.com;user2@gmail.com",
"active": true,
"time_zone": "text",
"last_run_time": "2025-11-13T11:19:02.738568+08:00"
}Update an existing analytics report Job. {id} is the report Jon ID.
The unique ID of the resource.
NzAwNTUxOTA5NzczMTQ4MTYwReport type, string enum.
Report file format:CSV、HTML
CSVPossible values: Report Job name
The start time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T00:00:00-04:00).
2025-09-28T00:00:00-04:00The end time of the report period.
Must include timezone in RFC3339 format (e.g. 2025-09-28T15:00:00-04:00).
2025-09-28T15:00:00-04:00gocron string, e.g.: Every day at 00:01 = 1 0 * * * Every month on 1st at 02:03 = 3 2 1 * * Every Tuesday at 01:02 = 2 1 * * 2
Whether the task is active
trueRecipient emails; multiple emails separated by semicolon
user1@gmail.com;user2@gmail.comTime zone, e.g., Asia/Shanghai
updated successfully.
No content
Invalid input or update failed.
POST /api/dataflow/report_jobs/{id} HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 434
{
"type": "USERSTATISTICS",
"format": "CSV",
"schedule_name": "My User Statistics Report",
"start_time": "2025-10-01T00:00:00Z",
"end_time": "2025-10-31T23:59:59Z",
"params": {
"extension_number": "101;102-108;110",
"status": "ANSWERED",
"direction": "INBOUND",
"from": "2025-11-01T00:00:00Z",
"to": "2025-11-02T00:00:00Z",
"time_range": "TODAY"
},
"cron_expr": "0 0 * * *",
"active": true,
"recipients": "team@example.com;test2@qq.com",
"time_zone": "Asia/Shanghai"
}No content
Permanently delete the report execution task specified by id.
The unique ID of the resource.
NzAwNTUxOTA5NzczMTQ4MTYwdeleted successfully.
No content
Invalid input or deleted failed.
POST /api/dataflow/report_jobs/{id}/destroy HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Get detailed information of a report execution job specified by id.
Use the filter query parameter to retrieve just a subset of a collection.
Use the $count=true query option to include a count of entities that match the filter criteria.
falseUse the orderby query parameter to specify the sort order of the items returned from server.
The default order is ascending order.
Use the skip query parameter to set the number of items to skip at the start of a collection.
0Use the top query parameter to specify the page size of the result set.
100OK
Total number of resource.
100Error
GET /api/dataflow/report_list HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"count": 2,
"items": [
{
"id": "1041260768550453248",
"report_id": "1041254768468557824",
"report_name": "User Statistics-13112025-246799",
"schedule_name": "My Daily Report",
"type": "USERSTATISTICS",
"format": "CSV",
"file_url": "/api/blobs/V5lc8N4e2xFDuNMj2TGIxAAAAPQmTXMO",
"create_time": "2025-11-13T15:58:32.912541+08:00",
"finish_time": "2025-11-13T15:58:33.075691+08:00",
"recipients": "user1@example.com;user2@example.com"
},
{
"id": "1041260768550453249",
"report_id": "1041254768468557824",
"report_name": "User Statistics-13112025-246788",
"schedule_name": "My Daily Report2",
"type": "USERSTATISTICS",
"format": "CSV",
"file_url": "/api/blobs/V5lc8N4e2xFDuNMj2TGIxAAAAPQ",
"create_time": "2025-11-13T11:58:32.912541+08:00",
"finish_time": "2025-11-13T11:59:33.075691+08:00",
"recipients": "user1@example.com;user2@example.com"
}
]
}Delete a specific report log entry by its unique identifier.
The unique ID of the resource.
NzAwNTUxOTA5NzczMTQ4MTYwdeleted successfully.
No content
Invalid input or deleted failed.
POST /api/dataflow/report_list/{id}/destroy HTTP/1.1
Host: HOSTNAME:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Last updated
Was this helpful?