Solved

Strange empty response from api query

  • 29 December 2023
  • 1 reply
  • 80 views

Badge +5

Hello, I am very confused on why I am getting a weird empty response using the query metric aggregates endpoint.
 

import requests


api_key = "MY_API_KEY"
metric_id = "R3rQ9W"
page_size = 500
interval = "month"
start_date = "2022-12-30T00:00:00"
end_date = "2023-12-29T23:59:59"
measurement = "count"
by = "$message_send_cohort"


url = "https://a.klaviyo.com/api/metric-aggregates/"

payload = {
"data": {
"type": "metric-aggregate",
"attributes": {
"metric_id": metric_id,
"interval": interval,
"page_size": page_size,
"timezone": "US/Eastern",
"measurements": [measurement],
"filter": [
f"greater-or-equal(datetime,{start_date})",
f"less-than(datetime,{end_date})",
],
"by": [by],
},
}
}

headers = {
"accept": "application/json",
"revision": "2023-02-22",
"content-type": "application/json",
"Authorization": f"Klaviyo-API-Key {api_key}",
}

response = requests.post(url, json=payload, headers=headers)

response_json = response.json()
results_data = response_json["data"]

 

This is returning a response with no data:

 

{'type': 'metric-aggregate',
'id': '-6647815704978276286',
'attributes': {'dates': ['2022-12-01T05:00:00+00:00',
'2023-01-01T05:00:00+00:00',
'2023-02-01T05:00:00+00:00',
'2023-03-01T05:00:00+00:00',
'2023-04-01T04:00:00+00:00',
'2023-05-01T04:00:00+00:00',
'2023-06-01T04:00:00+00:00',
'2023-07-01T04:00:00+00:00',
'2023-08-01T04:00:00+00:00',
'2023-09-01T04:00:00+00:00',
'2023-10-01T04:00:00+00:00',
'2023-11-01T04:00:00+00:00',
'2023-12-01T05:00:00+00:00'],
'data': []},
'links': {'self': 'https://a.klaviyo.com/api/metric-aggregates/'}}

 

Strangely, if I change the time zone to US/Pacific, or if I change the metric, it works fine. If I change month to week instead, it works fine. Some date changes work, but not all. If I change the by to $message it works. I am a bit lost to how this could happen. It seems like somehow this is the perfect set of parameters that doesn’t work lol. Does anyone have any idea? The metric is received email. 

icon

Best answer by saulblum 30 December 2023, 00:11

View original

1 reply

Userlevel 5
Badge +7

Could you try it without the by parameter in the request body, to see if you get the raw Received Email counts you see in the metrics page in the Klaviyo admin?

Reply