diff --git a/package-lock.json b/package-lock.json
index 0dad46a..fc4ef16 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,15 +1,15 @@
 {
     "name": "@propelauth/react",
-    "version": "2.0.21",
+    "version": "2.0.22",
     "lockfileVersion": 2,
     "requires": true,
     "packages": {
         "": {
             "name": "@propelauth/react",
-            "version": "2.0.21",
+            "version": "2.0.22",
             "license": "MIT",
             "dependencies": {
-                "@propelauth/javascript": "^2.0.16",
+                "@propelauth/javascript": "^2.0.17",
                 "hoist-non-react-statics": "^3.3.2",
                 "utility-types": "^3.10.0"
             },
@@ -3247,9 +3247,9 @@
             }
         },
         "node_modules/@propelauth/javascript": {
-            "version": "2.0.16",
-            "resolved": "https://registry.npmjs.org/@propelauth/javascript/-/javascript-2.0.16.tgz",
-            "integrity": "sha512-sA1s8NKEY1kRHE4kHj3jdSCSzhlHZ0RN//7yTmwg2bDQslKGaIfidovCxvhjxSYp7VD0/9RChKFG2CRvtWEUhg=="
+            "version": "2.0.17",
+            "resolved": "https://registry.npmjs.org/@propelauth/javascript/-/javascript-2.0.17.tgz",
+            "integrity": "sha512-oXnsNSaYPP5+6bhcC+ewhaai23LDO+Wng+63+eynYEDvbCzLWJa0EzpGZr/CCyeY33Q4iStAAng/sC15Pk5QMA=="
         },
         "node_modules/@rollup/plugin-babel": {
             "version": "5.3.0",
@@ -15017,9 +15017,9 @@
             }
         },
         "@propelauth/javascript": {
-            "version": "2.0.16",
-            "resolved": "https://registry.npmjs.org/@propelauth/javascript/-/javascript-2.0.16.tgz",
-            "integrity": "sha512-sA1s8NKEY1kRHE4kHj3jdSCSzhlHZ0RN//7yTmwg2bDQslKGaIfidovCxvhjxSYp7VD0/9RChKFG2CRvtWEUhg=="
+            "version": "2.0.17",
+            "resolved": "https://registry.npmjs.org/@propelauth/javascript/-/javascript-2.0.17.tgz",
+            "integrity": "sha512-oXnsNSaYPP5+6bhcC+ewhaai23LDO+Wng+63+eynYEDvbCzLWJa0EzpGZr/CCyeY33Q4iStAAng/sC15Pk5QMA=="
         },
         "@rollup/plugin-babel": {
             "version": "5.3.0",
diff --git a/package.json b/package.json
index 1e2bd64..61d5cac 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
         "type": "git",
         "url": "https://github.com/PropelAuth/react"
     },
-    "version": "2.0.21",
+    "version": "2.0.22",
     "license": "MIT",
     "keywords": [
         "auth",
@@ -13,7 +13,7 @@
         "user"
     ],
     "dependencies": {
-        "@propelauth/javascript": "^2.0.16",
+        "@propelauth/javascript": "^2.0.17",
         "hoist-non-react-statics": "^3.3.2",
         "utility-types": "^3.10.0"
     },
diff --git a/src/AuthContext.tsx b/src/AuthContext.tsx
index b3fb90a..63efa29 100644
--- a/src/AuthContext.tsx
+++ b/src/AuthContext.tsx
@@ -1,4 +1,5 @@
 import {
+    AccessTokenForActiveOrg,
     AuthenticationInfo,
     RedirectToAccountOptions,
     RedirectToCreateOrgOptions,
@@ -11,7 +12,11 @@ import React, { useCallback, useEffect, useReducer } from "react"
 import { loadOrgSelectionFromLocalStorage } from "./hooks/useActiveOrg"
 import { useClientRef, useClientRefCallback } from "./useClientRef"
 
-interface InternalAuthState {
+export interface Tokens {
+    getAccessTokenForOrg: (orgId: string) => Promise<AccessTokenForActiveOrg>
+}
+
+export interface InternalAuthState {
     loading: boolean
     authInfo: AuthenticationInfo | null
 
@@ -31,7 +36,7 @@ interface InternalAuthState {
     getOrgPageUrl(orgId?: string, options?: RedirectToOrgPageOptions): string
     getCreateOrgPageUrl(options?: RedirectToCreateOrgOptions): string
     getSetupSAMLPageUrl(orgId: string, options?: RedirectToSetupSAMLPageOptions): string
-
+    tokens: Tokens
     refreshAuthInfo: () => Promise<void>
     defaultDisplayWhileLoading?: React.ReactElement
     defaultDisplayIfLoggedOut?: React.ReactElement
@@ -143,6 +148,8 @@ export const AuthProvider = (props: AuthProviderProps) => {
     const getCreateOrgPageUrl = useClientRefCallback(clientRef, (client) => client.getCreateOrgPageUrl)
     const getSetupSAMLPageUrl = useClientRefCallback(clientRef, (client) => client.getSetupSAMLPageUrl)
 
+    const getAccessTokenForOrg = useClientRefCallback(clientRef, (client) => client.getAccessTokenForOrg)
+
     const refreshAuthInfo = useCallback(async () => {
         if (clientRef.current === null) {
             return
@@ -177,6 +184,9 @@ export const AuthProvider = (props: AuthProviderProps) => {
         getCreateOrgPageUrl,
         getSetupSAMLPageUrl,
         refreshAuthInfo,
+        tokens: {
+            getAccessTokenForOrg,
+        },
     }
     return <AuthContext.Provider value={value}>{props.children}</AuthContext.Provider>
 }
diff --git a/src/AuthContextForTesting.tsx b/src/AuthContextForTesting.tsx
index 4a30f07..4b68d02 100644
--- a/src/AuthContextForTesting.tsx
+++ b/src/AuthContextForTesting.tsx
@@ -11,7 +11,7 @@ import {
     UserClass,
 } from "@propelauth/javascript"
 import React from "react"
-import { AuthContext } from "./AuthContext"
+import { AuthContext, InternalAuthState } from "./AuthContext"
 
 // User information that we will hard code within the AuthProvider
 export type UserInformationForTesting = {
@@ -39,7 +39,7 @@ export const AuthProviderForTesting = ({
 }: AuthProviderForTestingProps) => {
     const authInfo = getAuthInfoForTesting(userInformation)
     const activeOrgFnWithDefault = activeOrgFn ? activeOrgFn : () => null
-    const contextValue = {
+    const contextValue: InternalAuthState = {
         loading: !!loading,
         authInfo,
         logout: () => Promise.resolve(),
@@ -57,6 +57,13 @@ export const AuthProviderForTesting = ({
         getSetupSAMLPageUrl: () => "",
         activeOrgFn: activeOrgFnWithDefault,
         refreshAuthInfo: () => Promise.resolve(),
+        tokens: {
+            getAccessTokenForOrg: () =>
+                Promise.resolve({
+                    error: undefined,
+                    accessToken: "ACCESS_TOKEN",
+                }),
+        },
     }
 
     return <AuthContext.Provider value={contextValue}>{children}</AuthContext.Provider>
diff --git a/src/hooks/useAuthInfo.ts b/src/hooks/useAuthInfo.ts
index 384bb52..576f4de 100644
--- a/src/hooks/useAuthInfo.ts
+++ b/src/hooks/useAuthInfo.ts
@@ -1,6 +1,6 @@
 import { AccessHelper, OrgHelper, User, UserClass } from "@propelauth/javascript"
 import { useContext } from "react"
-import { AuthContext } from "../AuthContext"
+import { AuthContext, Tokens } from "../AuthContext"
 
 export type UseAuthInfoLoading = {
     loading: true
@@ -13,6 +13,7 @@ export type UseAuthInfoLoading = {
     isImpersonating: undefined
     impersonatorUserId: undefined
     refreshAuthInfo: () => Promise<void>
+    tokens: Tokens
     accessTokenExpiresAtSeconds: undefined
 }
 
@@ -27,6 +28,7 @@ export type UseAuthInfoLoggedInProps = {
     isImpersonating: boolean
     impersonatorUserId?: string
     refreshAuthInfo: () => Promise<void>
+    tokens: Tokens
     accessTokenExpiresAtSeconds: number
 }
 
@@ -41,6 +43,7 @@ export type UseAuthInfoNotLoggedInProps = {
     isImpersonating: false
     impersonatorUserId: undefined
     refreshAuthInfo: () => Promise<void>
+    tokens: Tokens
     accessTokenExpiresAtSeconds: undefined
 }
 
@@ -52,7 +55,7 @@ export function useAuthInfo(): UseAuthInfoProps {
         throw new Error("useAuthInfo must be used within an AuthProvider or RequiredAuthProvider")
     }
 
-    const { loading, authInfo, refreshAuthInfo } = context
+    const { loading, authInfo, refreshAuthInfo, tokens } = context
     if (loading) {
         return {
             loading: true,
@@ -65,6 +68,7 @@ export function useAuthInfo(): UseAuthInfoProps {
             isImpersonating: undefined,
             impersonatorUserId: undefined,
             refreshAuthInfo,
+            tokens,
             accessTokenExpiresAtSeconds: undefined,
         }
     } else if (authInfo && authInfo.accessToken) {
@@ -79,6 +83,7 @@ export function useAuthInfo(): UseAuthInfoProps {
             isImpersonating: !!authInfo.impersonatorUserId,
             impersonatorUserId: authInfo.impersonatorUserId,
             refreshAuthInfo,
+            tokens,
             accessTokenExpiresAtSeconds: authInfo.expiresAtSeconds,
         }
     }
@@ -93,6 +98,7 @@ export function useAuthInfo(): UseAuthInfoProps {
         isImpersonating: false,
         impersonatorUserId: undefined,
         refreshAuthInfo,
+        tokens,
         accessTokenExpiresAtSeconds: undefined,
     }
 }
diff --git a/src/withAuthInfo.tsx b/src/withAuthInfo.tsx
index 7411522..54eea31 100644
--- a/src/withAuthInfo.tsx
+++ b/src/withAuthInfo.tsx
@@ -2,7 +2,7 @@ import { AccessHelper, OrgHelper, User, UserClass } from "@propelauth/javascript
 import hoistNonReactStatics from "hoist-non-react-statics"
 import React, { useContext } from "react"
 import { Subtract } from "utility-types"
-import { AuthContext } from "./AuthContext"
+import { AuthContext, Tokens } from "./AuthContext"
 
 export type WithLoggedInAuthInfoProps = {
     isLoggedIn: true
@@ -14,6 +14,7 @@ export type WithLoggedInAuthInfoProps = {
     isImpersonating: boolean
     impersonatorUserId?: string
     refreshAuthInfo: () => Promise<void>
+    tokens: Tokens
     accessTokenExpiresAtSeconds: number
 }
 
@@ -27,6 +28,7 @@ export type WithNotLoggedInAuthInfoProps = {
     isImpersonating: false
     impersonatorUserId: null
     refreshAuthInfo: () => Promise<void>
+    tokens: Tokens
     accessTokenExpiresAtSeconds: null
 }
 
@@ -48,7 +50,7 @@ export function withAuthInfo<P extends WithAuthInfoProps>(
             throw new Error("withAuthInfo must be used within an AuthProvider or RequiredAuthProvider")
         }
 
-        const { loading, authInfo, defaultDisplayWhileLoading, refreshAuthInfo } = context
+        const { loading, authInfo, defaultDisplayWhileLoading, refreshAuthInfo, tokens } = context
 
         function displayLoading() {
             if (args?.displayWhileLoading) {
@@ -73,6 +75,7 @@ export function withAuthInfo<P extends WithAuthInfoProps>(
                 isImpersonating: !!authInfo.impersonatorUserId,
                 impersonatorUserId: authInfo.impersonatorUserId,
                 refreshAuthInfo,
+                tokens,
                 accessTokenExpiresAtSeconds: authInfo.expiresAtSeconds,
             }
             return <Component {...loggedInProps} />
@@ -88,6 +91,7 @@ export function withAuthInfo<P extends WithAuthInfoProps>(
                 isImpersonating: false,
                 impersonatorUserId: null,
                 refreshAuthInfo,
+                tokens,
                 accessTokenExpiresAtSeconds: null,
             }
             return <Component {...notLoggedInProps} />
diff --git a/src/withRequiredAuthInfo.tsx b/src/withRequiredAuthInfo.tsx
index e938fdd..239c15b 100644
--- a/src/withRequiredAuthInfo.tsx
+++ b/src/withRequiredAuthInfo.tsx
@@ -22,7 +22,8 @@ export function withRequiredAuthInfo<P extends WithLoggedInAuthInfoProps>(
             throw new Error("withRequiredAuthInfo must be used within an AuthProvider or RequiredAuthProvider")
         }
 
-        const { loading, authInfo, defaultDisplayIfLoggedOut, defaultDisplayWhileLoading, refreshAuthInfo } = context
+        const { loading, authInfo, defaultDisplayIfLoggedOut, defaultDisplayWhileLoading, refreshAuthInfo, tokens } =
+            context
 
         function displayLoading() {
             if (args?.displayWhileLoading) {
@@ -56,6 +57,7 @@ export function withRequiredAuthInfo<P extends WithLoggedInAuthInfoProps>(
                 isImpersonating: !!authInfo.impersonatorUserId,
                 impersonatorUserId: authInfo.impersonatorUserId,
                 refreshAuthInfo,
+                tokens,
                 accessTokenExpiresAtSeconds: authInfo.expiresAtSeconds,
             }
             return <Component {...loggedInProps} />
