Wrap-up code always null in analytics/conversations/voice/detail query

I am building a reporting service for our custom agent desktop and I need the specific wrap-up code for every completed voice interaction. I have been querying the Analytics API for a few days now and the result is always the same. The wrapUpCode field comes back as null even though the agents clearly selected a code in the desktop UI.

I am using the GET /api/v2/analytics/conversations/voice/detail endpoint. I have tried adding wrapUpCode to the select parameter list as the documentation suggests. I also tried leaving the select list empty to get all fields, hoping it was a filtering issue. Nothing works. The JSON response contains the agent ID, the conversation ID, and the duration, but the wrap-up code is missing.

Here is the query parameters I am using in Postman. I am using an OAuth token with analytics:read scope.

GET /api/v2/analytics/conversations/voice/detail
?dateFrom=2023-10-01T00:00:00.000Z
&dateTo=2023-10-31T23:59:59.999Z
&groupBy=conversationId
&select=conversationId,agentId,wrapUpCode,duration
&limit=10

The response body looks like this:

{
 "items": [
 {
 "conversationId": "abc-123-def",
 "agentId": "agent-uuid-here",
 "duration": 120000,
 "wrapUpCode": null
 }
 ]
}

I checked the conversation history in the admin UI and the wrap-up code is definitely there. It is not empty. So the data exists in the system. I am wondering if this is a known limitation of the detail query. Maybe the analytics engine does not capture this field at the time of ingestion. Or maybe I am missing a specific parameter in the request. I have looked at the API docs for wrapUpCode and it says it is available for voice conversations. I am stuck on this. I need this field for our compliance reports. Any ideas why it is returning null?