Choosing between /conversations and /analytics/conversations for real-time screen pop data

We are building a custom desktop application using the .NET SDK and need to pull conversation metadata to trigger screen pops. The team is debating which endpoint to use for this specific use case. The requirement is to get the most recent interaction details for an inbound call as soon as it connects to an agent.

The first option is the real-time GET /api/v2/conversations endpoint. This feels correct because it returns live data. We tried a simple query:

var apiInstance = new ConversationApi();
var result = await apiInstance.GetConversationsAsync("voice", 10, 1, null, null, null, null, null);

This works fine for active calls. The issue is when we need to fetch historical data for a call that just wrapped up or was transferred. The real-time endpoint drops the data once the state changes or after a short window. We don’t want to lose that data for our logging module.

The second option is GET /api/v2/analytics/conversations/details/query. This endpoint has everything we need including wrap-up codes and detailed timestamps. The problem is the latency. We are seeing a delay of 2-5 minutes before the data appears in the analytics response. This is too slow for a screen pop that needs to happen immediately. We tried adjusting the interval parameter but it didn’t help with the ingestion delay.

{
 "intervalStart": "2023-10-27T00:00:00.000Z",
 "intervalEnd": "2023-10-27T23:59:59.999Z",
 "groupByConversation": true,
 "select": ["id", "participantIds", "wrapUpCode"]
}

Is there a way to force the analytics endpoint to update faster? Or should we be using a different approach? We considered using webhooks for the initial pop and then falling back to analytics for the detailed record, but that adds a lot of complexity to our state management. We want to stick to REST calls if possible.

The documentation says analytics is for reporting, but it’s the only place we see the full lifecycle data. We are confused about the intended boundary between these two endpoints. We need a reliable way to get the full conversation object including the final disposition without waiting 5 minutes.

We are using the latest version of the Genesys Cloud .NET SDK. Any guidance on the best practice here would be appreciated. We are currently polling every 30 seconds which is not ideal for performance.