Looking for advice on a persistent 500 Internal Server Error when trying to export quality evaluation data for digital channels via the api. we are running a legal discovery request and need the full chain of custody for webchat sessions evaluated in the last 30 days.
the endpoint is POST /api/v2/quality/evaluations/export. the payload includes the date range and a filter for channel_type equal to webchat. when we run this for voice recordings it works fine. the job completes and we get the csv with the expected metadata including the chain_of_custody headers. but for webchat, the job starts with status pending, then immediately fails with status failed. the error message in the response body is just generic: internal server error. no specific details on what field caused the issue.
we are using the genesys cloud rest api directly from our python script. version is current. the environment is eu-west-1. we have verified that the evaluations exist in the ui and that the metadata is populated correctly for those sessions. the chain_of_custody object is present in the single evaluation GET response for those webchat sessions. so the data is there, but the bulk export fails.
is this a known issue with the quality export api for digital channels? or is there a specific limit on the size of the metadata payload that causes the 500 error? we have tried reducing the date range to 1 day, but it still fails. we have also tried filtering by specific evaluator, but same result.
any ideas on how to troubleshoot this further? we need this data for a court order and the timeline is tight. any help would be appreciated. thanks.
TL;DR: The 500 error is likely a backend timeout caused by the export job trying to process too many digital channel metadata objects simultaneously. Break the date range into smaller chunks.
The easiest way to fix this is to stop sending the full 30-day range in a single POST request. The Quality API export endpoint has a hard limit on how much metadata it can aggregate before the worker thread times out, especially for digital channels where the payload structure is more complex than voice recordings.
When you filter for channel_type: webchat, the system attempts to pull interaction logs, transcript blobs, and agent metadata for every session. If the volume exceeds the internal processing threshold, the server returns a generic 500 instead of a 429 or timeout error. This is a known quirk in the current API version.
Try splitting your request into daily or weekly chunks. Here is a sample payload for a single day:
{
"dateFrom": "2023-10-01T00:00:00Z",
"dateTo": "2023-10-01T23:59:59Z",
"filters": [
{
"field": "channelType",
"operation": "equal",
"value": "webchat"
}
],
"columns": [
"id",
"interaction.id",
"agentName",
"score"
]
}
Run this in a loop using JMeter or a simple script. Set a concurrency of 1 request per 5 seconds to avoid hitting the rate limiter. If you still see 500s, reduce the dateFrom to dateTo window to 12 hours. The export job will complete faster for smaller datasets, and you can stitch the CSVs together later. This approach bypasses the internal timeout trigger by keeping the memory footprint of the export job low.
Check your dateRange parameters in the POST body. The suggestion to chunk the dates is correct, but ensure you are using ISO 8601 format with explicit timezone offsets to avoid backend parsing failures that trigger 500s.