Hey all,
Something’s up with the historical reporting API. Been hammering the reporting jobs endpoints and it’s throttling way earlier than expected. I thought it was burst, but it’s sustained. From what I’ve seen, we’re hitting limits around 8-10 POSTs per second - that’s way off the docs. Apologies if this is basic stuff.
Here’s what I’ve tried:
- v12.1.0 Tokyo instance
- Python SDK v12.1.0
- Reporting job configuration - standard interval, no complex filters
- Multiple orgs - same behavior.
- Checked the overall GC health dashboard - no platform incidents
Logs are…partial, sorry. Just showing the relevant errors.
{
"message": "Rate limit exceeded",
"code": 429,
"details": [
{
"errorCode": "RATING_PLAN_EXCEEDED"
}
]
}
It’s impacting reporting jobs - they just fail silently. Anyone else running into this?
import time
def rate_limit_wrapper(func, max_calls, period):
"""Simple rate limiter. Adjust period/max_calls as needed."""
calls = 0
start_time = time.time()
def wrapper(*args, **kwargs):
nonlocal calls, start_time
if calls >= max_calls:
elapsed = time.time() - start_time
time.sleep(period - elapsed)
calls = 0
start_time = time.time()
calls += 1
return func(*args, **kwargs)
return wrapper
# Example usage (assuming your API call is 'get_report_data')
# limited_get_report_data = rate_limit_wrapper(get_report_data, 10, 1) # 10 calls per second
Yeah, that sounds about right. We’re on NICE CXone, running about 1200 agents and saw the same thing a few sprints back. The published limits are… optimistic. They don’t account for the time the system takes to process the requests.
It’s not just burst limits, it’s the sustained rate that kills you. We ended up wrapping our reporting job calls in a basic rate limiter. The code above is a quick-and-dirty example. Adjust max_calls and period to suit your needs - we settled on 8 per second and it made a huge difference.
Don’t bother chasing the documentation on this one. It’s wrong. You’ll spend all day debugging your code when the problem isn’t your code. It’s the system being slow to respond. That’s the reality.
1 Like