# Error fetching user info: 401, {"code":124,"message":"Invalid access token."}

**URL:** <https://devforum.zoom.us/t/error-fetching-user-info-401-code-124-message-invalid-access-token/119060>\
**Category:** API and Webhooks\
**Created:** [October 13, 2024, 3:41pm UTC](https://devforum.zoom.us/t/error-fetching-user-info-401-code-124-message-invalid-access-token/119060 "2024-10-13T15:41:09Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![porat216](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/porat216/32/64104_2.png) [@porat216](https://devforum.zoom.us/u/porat216)\
**Post date:** [October 13, 2024, 3:41pm UTC](https://devforum.zoom.us/t/error-fetching-user-info-401-code-124-message-invalid-access-token/119060/1 "2024-10-13T15:41:09Z")

</div>

i use this code  
import requests  
import base64

# Your Zoom app credentials

ACOUNT\_ID =  
CLIENT\_ID =  
CLIENT\_SECRET =

def get\_access\_token():  
3 url = oauth/token  
headers = {  
“Authorization”: f"Basic {base64.b64encode(f’{CLIENT\_ID}:{CLIENT\_SECRET}'.encode()).decode()}"  
}  
params = {  
“grant\_type”: “client\_credentials”  
}  
response = requests.post(url, headers=headers, params=params)  
if response.status\_code == 200:  
return response.json()[“access\_token”]  
else:  
print(“Error obtaining access token:”, response.json())  
return None

# Step 3: Use Access Token to Get Meeting Information

access\_token = get\_access\_token()  
print(f" acess token = {access\_token}")

# Example to fetch user information (as an admin)

#user\_url = “v2/users/me”

if access\_token:  
headers = {  
‘Authorization’: f’Bearer {access\_token}',  
‘Content-Type’: ‘application/json’,  
}

```
response = requests.get(user_url, headers=headers)

if response.status_code == 200:
    user_info = response.json()
    print("User Information:", user_info)
else:
    print(f"Error fetching user info: {response.status_code}, {response.text}")

```

i get a looking good acess token but in the second request i get  
Error fetching user info: 401, {“code”:124,“message”:“Invalid access token.”}

i have all this scope  
user:read:list\_users:admin user:write:user:admin user:read:user:admin user:update:user:admin user:delete:user:admin user:update:status:admin user:update:password:admin user:read:list\_assistants:admin user:write:assistant:admin user:delete:assistant:admin user:write:profile\_picture:admin user:read:token:admin user:read:zak:admin user:delete:token:admin user:read:list\_permissions:admin user:read:list\_schedulers:admin user:delete:scheduler:admin user:update:email:admin user:read:email:admin user:read:pm\_room:admin user:update:presence\_status:admin user:read:settings:admin user:update:settings:admin user:write:virtual\_background\_files:admin user:delete:virtual\_background\_files:admin user:read:summary:admin user:write:feature:admin user:read:list\_collaboration\_devices:admin user:read:collaboration\_device:admin user:update:user\_account:admin user:read:presence\_status:admin user:read:personal\_note:admin user:delete:profile\_picture:admin user:read:clocked\_out\_user:admin user:read:clocked\_in\_user:admin user:read:meeting\_template\_detail:admin user:read:list\_users:master user:write:user:master user:read:user:master user:update:user:master user:delete:user:master user:update:status:master user:update:password:master user:read:list\_assistants:master user:write:assistant:master user:delete:assistant:master user:write:profile\_picture:master user:read:token:master user:delete:token:master user:read:list\_permissions:master user:read:list\_schedulers:master user:delete:scheduler:master user:update:email:master user:update:presence\_status:master user:read:settings:master user:update:settings:master user:write:virtual\_background\_files:master user:delete:virtual\_background\_files:master user:read:summary:master user:write:feature:master user:update:user\_account:master user:read:presence\_status:master user:read:personal\_note:master user:delete:profile\_picture:master user:read:clocked\_out\_user:master user:read:clocked\_in\_user:master meeting:read:list\_meetings:admin meeting:read:alert:admin meeting:read:chat\_message:admin billing:read:user\_entitlement:admin

the url is without the base url becuse i url and this website blocking url

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [October 25, 2024, 2:07pm UTC](https://devforum.zoom.us/t/error-fetching-user-info-401-code-124-message-invalid-access-token/119060/2 "2024-10-25T14:07:27Z")

</div>

@porat216 ,

heres a sample code in python to get access token

```auto
import requests
import base64
import os
from dotenv import load_dotenv

# Load environment variables from .env file, this will try to load these values from your .env file
load_dotenv()

# Access the environment variables
s2s_oauth_client_secret = os.getenv("S2S_OAUTH_CLIENT_SECRET")
s2s_oauth_client_id = os.getenv("S2S_OAUTH_CLIENT_ID")
s2s_oauth_account_id = os.getenv("S2S_OAUTH_ACCOUNT_ID")
oauth_url = 'https://zoom.us/oauth/token?grant_type=account_credentials&account_id='+s2s_oauth_account_id # Replace with your OAuth endpoint URL

def get_access_token():
    try:
        # Create the Basic Authentication header
        auth_header = f'Basic {base64.b64encode(f"{s2s_oauth_client_id}:{s2s_oauth_client_secret}".encode()).decode()}'

        # Define the headers for the OAuth request
        headers = {
            'Authorization': auth_header,
        }

        # Make the OAuth request
        response = requests.post(oauth_url, headers=headers)

        # Check if the request was successful (status code 200)
        if response.status_code == 200:
            # Parse the JSON response to get the access token
            oauth_response = response.json()
            access_token = oauth_response.get('access_token')
            return access_token
        else:
            print(f'OAuth Request Failed with Status Code: {response.status_code}')
            print(response.text)
            return None
    except Exception as e:
        print(f'An error occurred: {str(e)}')
        return None

    

```

Heres the follow code to call the REST API

```auto
  from flask import Flask, request
      import requests
      import json
      
      app = Flask( __name__ )
      
      def handle_callapi():
          # Fetch access_token from query string
          access_token = request.args.get('access_token')
      
          # Meeting data
          meeting_data = {
              "topic": 'hello world',
              "type": 2,
              "start_time": "2023-10-01T10:00:00Z",
              "duration": 120,
              "password": "12345678",
              "agenda": "40 mins limit demonstration",
              "pre_schedule": False,
              "timezone": "Asia/Singapore",
              "default_password": False
          }
      
          # Zoom API endpoint
          api_url = 'https://api.zoom.us/v2/users/me/meetings'
      
          # Headers for the request
          headers = {
              "Authorization": f"Bearer {access_token}",
              "Content-Type": "application/json",
              "Accept": "application/json"
          }
      
          # Send POST request to create meeting
          response = requests.post(api_url, headers=headers, data=json.dumps(meeting_data))
      
          # Return response
          return "Meeting Details: " + response.text
      

```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/6/1/614bdd549b610bbaa46ff934617683a02bdaa03c.png) [@system](https://devforum.zoom.us/u/system)\
**Post date:** [October 29, 2025, 5:43am UTC](https://devforum.zoom.us/t/error-fetching-user-info-401-code-124-message-invalid-access-token/119060/3 "2025-10-29T05:43:52Z")

</div>

Closed on October 29, 2025, 5:43am UTC

This topic was automatically closed 368 days after the last reply. New replies are no longer allowed.
