Automatically refresh expired access tokens
try { const response = await client.someApiCall(); } catch (err) { if (err.status === 401) { // Access token expired — refresh it const { accessToken, refreshToken } = await client.refreshToken({ refreshToken: storedRefreshToken, }); // Retry the original request (SDK auto-updates stored tokens) const response = await client.someApiCall(); } }
async function withAutoRefresh<T>(fn: () => Promise<T>): Promise<T> { try { return await fn(); } catch (err: any) { if (err.status === 401 && client.isAuthenticated) { try { await client.refreshToken({ refreshToken: client.getRefreshToken() }); return await fn(); // retry with new token } catch { // Refresh token also expired — force re-auth client.signOut(); throw new Error("Session expired. Please sign in again."); } } throw err; } } // Usage const balance = await withAutoRefresh(() => client.getTradingBalance({ venue: "kalshi" }));
client.onAuthStateChange((state) => { if (!state.isAuthenticated) { // Redirect to sign-in page router.push("/sign-in"); } });