What you're doing won't give you the same answer because it's not how that page is getting it.
The activity page runs
/api/v2/analytics/conversations/aggregates/query
"interval": "2021-07-15T05:00:00.000Z/2021-07-15T13:30:00.000Z",
"groupBy": [
"queueId",
"mediaType"
],
"granularity": "PT30M",
"metrics": [
"nOffered",
"tAnswered",
"tAbandon",
"oServiceLevel",
"oServiceTarget",
"tHandle",
"tTalkComplete",
"tHeldComplete",
"tAcw",
"tWait",
"nTransferred",
"nOutbound",
"tFlowOut",
"tVoicemail",
"nOutboundAttempted",
"tShortAbandon",
"nOverSla"
],
and
/api/v2/analytics/queues/observations/query
for
"detailMetrics": [
"oWaiting",
"oInteracting"
],
"metrics": [
"oWaiting",
"oInteracting",
"oMemberUsers",
"oActiveUsers",
"oUserRoutingStatuses",
"oUserPresences",
"oOnQueueUsers",
"oOffQueueUsers"
],
All those "interval/Day" labels are simply telling you they're a sum of the current days intervals, because it's bringing back a full aggregate set for the current day broken out by 30 minute intervals every time it runs. As far as I understand the only way you can recreate that with a Notification is you keep a running total of the results in your code layer, reset at midnight, and don't lose any thing.