Batch job fails mid-run when access token expires

Running a bulk update script for queue configs, but the access token expires halfway through the 500-item loop. The script crashes on the 120th item with a 401 Unauthorized instead of auto-refreshing. Here’s the retry logic we’re using:

if response.status_code == 401:
 token = get_new_token()
 headers['Authorization'] = f'Bearer {token}'
 return requests.put(url, headers=headers, json=data)

The 401 doesn’t trigger the retry block. It just dies. Why isn’t the 401 being caught?

Cause: The 401 triggers after the request sends. Docs state: “The client credentials flow requires token refresh before expiry.” Your retry logic is too late.

Solution: Pre-check expiry or use a wrapper. Here’s a quick Python fix using requests session hooks to auto-refresh:

def refresh_token(session):
 # Logic to fetch new token
 pass

session.hooks['response'].append(refresh_token)

Check the token’s exp claim before the loop starts.

Pre-checking expiry works but it’s messy. Just use the platformClient SDK wrapper, it handles token refresh automatically in the background. Saves the headache of managing headers manually.

Don’t patch requests. Use the SDK.

import PureCloudPlatformClientV2 as PureCloud

api_instance = PureCloud.QueueApi(PureCloud.ApiClient(configuration))

Token refresh is automatic here.

result = api_instance.post_queue(body=payload)


The suggestion above is right. Writing manual refresh hooks is error-prone. The `PureCloudPlatformClientV2` client handles token rotation internally. Just use the SDK for batch jobs. It saves you from reinventing the wheel.