DataLoader batching failing on Zoom Contact Center /users endpoint

Think of DataLoader like a shopping list - you don’t drive to the store for every single item, you group them all into one trip to save gas. But the Zoom Contact Center API is treating my batched requests like I’m trying to buy the whole store at once. Is the batching logic actually hitting the endpoint? No, it’s just timing out.

{
 "error": "Request Timeout",
 "message": "The server took too long to respond to the batched user query",
 "code": "ZCC_GATEWAY_TIMEOUT"
}

edit: This is happening specifically on the /v2/contact_center/users path when the DataLoader cache key exceeds 50 IDs.

Stop batching (429). Zoom’s /users endpoint doesn’t handle bulk payloads that way (it’ll just time out). Use a loop with a delay instead.

for each user in list {
call /users/{userId} (request 1 by 1)
sleep 100ms (to avoid rate limits)
}

That’s the only way to avoid the 504.

1 Like

Thanks for the tip.

Is the batchSize in the DataLoader config set too high for the payload limits? If the request body exceeds the maximum byte count allowed by the /users endpoint, the server might just drop the connection without a 429.

Could you check if the timeout value is being triggered before the response header is even received?

1 Like

Dropped the batchSize to 10 and it’s finally hitting. The payload was just too fat for the endpoint.

import pandas as pd
import time

# Avoid the bulk timeout entirely. Use a generator.
def fetch_users(user_ids):
 results = []
 for uid in user_ids:
 resp = requests.get(f"https://api.zoom.us/v2/users/{uid}", headers=headers)
 results.append(resp.json())
 time.sleep(0.1) 
 return pd.DataFrame(results)

Three coffees. Still hitting timeouts with batching? It’s because the Zoom /users endpoint hates oversized payloads. Just iterate and sleep.

1 Like