Generate Report
Generates a BIK report for a store and delivers it to the specified email addresses.
Request Parameters
| Name | Type | Required/Optional | Description |
|---|---|---|---|
reportType | ReportTypes | Required | The type of report to generate. Check the ReportTypes here. |
reportName | ReportNames | Required | The name of the report to generate. This value is case-sensitive and must match the report names displayed in BIK. Check the ReportNames list here. |
dateRange | DateRange | Required | Object specifying the start and end dates for the report. Check the DateRange type here. |
emails | string[] | Required | List of email addresses to receive the generated report. |
reportDescription | string | Optional | Description of the report. |
filters | Filters | Optional | Filters to apply to the report. Check the Filters type here. |
cursor | string | Optional | Resume cursor returned by a previous partial export (via Get Report By ID). When provided, the report picks up from where the previous run stopped instead of starting from the beginning. See Resuming Partial Exports below. |
Request Information
| Category | Value |
|---|---|
| HTTP request | POST |
| URL | https://bikapi.bikayi.app/integrations/bikPlatformFunctions-generateReport |
Sample Request
curl --location --request POST 'https://bikapi.bikayi.app/integrations/bikPlatformFunctions-generateReport' \
--header 'Authorization: Basic AUTH_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
"reportName": "Agent Engagement",
"dateRange": {
"startDate": "2025-07-27T18:30:00.540Z",
"endDate": "2025-08-29T18:29:59.540Z"
},
"filters": {
"channel": "whatsapp",
"groupBy": "week"
},
"reportType": "Helpdesk",
"emails": ["example@example.com"]
}'
JSON response example:
{
"status": 200,
"success": true,
"data": {
"reportHistoryId": 44589
}
}
Response parameters
| Name | Type | Description |
|---|---|---|
status | number | HTTP status code |
success | boolean | Indicates whether the request succeeded |
data.reportHistoryId | number | Unique identifier for the report history entry (used to retrieve the report by ID) |
Report Types
| Name | Type | Description |
|---|---|---|
Overall | string | Overall reports category |
Campaigns | string | Campaigns reports category |
Helpdesk | string | Helpdesk reports category |
Journeys | string | Journeys reports category |
Widgets | string | Widgets reports category |
Report Names
| Name |
|---|
Popup Conversions |
Campaign(s) Message Failure Overview |
Whatsapp Payment Report |
Agent Engagement |
Overall CSAT/NPS |
Channel Engagement |
Label Engagement |
Customer Conversations |
Events conversion report |
Ticket's Overview |
Journey overall report |
Campaign Summary Report |
Campaign(s) Opt-Out and Bounce |
Campaign(s) Conversion Events Report |
Ledger report |
Agent SLA report |
Price please automation report |
Customer Delivery Failure Report |
Overall customers report |
Popup Insights |
Customer Conversion Summary report |
Customer ticket report (with forms) |
Journey keywords report |
All Conversations Report |
Date Range Type
| Name | Type | Description |
|---|---|---|
startDate | string | ISO string for the start date timestamp for the report. |
endDate | string | ISO string for the end date timestamp for the report. |
Filters Type
| Name | Type | Description |
|---|---|---|
channel | Channels | Channel to filter report data by (applicable to supported reports only). Check the Channels type here. |
groupBy | string | Time interval ("day" | "week" | "month") for grouping the data (applicable to supported reports only). |
Channels Type
| Name | Type | Description |
|---|---|---|
whatsapp | string | Whatsapp channel identifier |
email | string | Email channel identifier |
instagram | string | Instagram channel identifier |
messenger | string | Messenger channel identifier |
livechat | string | Livechat channel identifier |
Resuming Partial Exports
Some high-volume reports may contain more rows than a single export can return (currently capped at 50,000 rows). When this happens, the report completes successfully but only contains a partial result. Currently, the All Conversations Report is the only report that supports cursor-based pagination. To retrieve the remaining data:
- Call Get Report By ID with the
reportHistoryIdfrom the generate response. - If the response includes a non-null
cursorfield, it means the export was partial and more data remains. - Call Generate Report again with the same parameters, adding the
cursorvalue from step 2. - Repeat until
cursorisnull, which indicates all data has been exported.
Each partial export produces its own downloadable CSV file. The caller is responsible for combining the files if needed.
Sample Resume Request
curl --location --request POST 'https://bikapi.bikayi.app/integrations/bikPlatformFunctions-generateReport' \
--header 'Authorization: Basic AUTH_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
"reportName": "All Conversations Report",
"dateRange": {
"startDate": "2025-07-27T18:30:00.540Z",
"endDate": "2025-08-29T18:29:59.540Z"
},
"reportType": "Helpdesk",
"emails": ["example@example.com"],
"cursor": "2025-08-15T13:56:33.906Z"
}'
Errors
| Error Code | Meaning |
|---|---|
| 400 | Invalid payload! -- Your request is invalid/invalid parameters. |
| 401 | Unauthorized -- User is not authenticated. |
| 404 | Not Found -- The specified API could not be found. |
| 500 | Internal Server Error -- We had a problem with our server. Try again later. |
Error response example:
{
"status": 400,
"errors": [
{
"message": "Invalid payload!"
}
]
}