Genesys Cloud Python SDK: Why is client_credentials_token() ignoring my refresh logic?

I’m trying to automate token refresh in a long-running Python service using the official genesyscloud SDK. The docs state: “The client credentials flow does not support refresh tokens; you must obtain a new access token when the current one expires.”

That’s clear enough. But I expected the SDK to handle the expiry check internally, or at least fail gracefully when I try to reuse an old token. Instead, my background thread calls client_credentials_token() every hour, but the first API call after expiry still throws a 401.

Here’s the setup:

from genesyscloud.auth import client_authentication
from genesyscloud.conversations_api import ConversationsApi
from genesyscloud.configuration import Configuration

config = Configuration()
config.host = "https://api.mypurecloud.com"

# Initial token fetch
client_authentication.client_credentials_token(
 client_id=CLIENT_ID,
 client_secret=CLIENT_SECRET,
 config=config
)

# ... 45 minutes later, token expires ...

# Attempt to refresh
client_authentication.client_credentials_token(
 client_id=CLIENT_ID,
 client_secret=CLIENT_SECRET,
 config=config
)

api_instance = ConversationsApi()
try:
 conversations = api_instance.get_conversations()
except Exception as e:
 print(f"Failed: {e}")

The error I get is:
genesyscloud.rest.ApiException: (401) Reason: Unauthorized

If the SDK is supposed to cache the token, why isn’t it picking up the new one I just generated? I have to manually delete the session or restart the process to make it work. Is there a specific method to clear the cached credentials in the Python SDK, or am I missing a step in the refresh cycle? The Java SDK has a reset() method, but I don’t see an equivalent in the Python docs.

The SDK doesn’t auto-refresh client credentials because the spec forbids it. You just need to call get_client_credentials_token() again when you hit a 401.