- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Code Response Comes Up in Browser, not so with Python Code
I am not a coder-Jedi, help is appreciated.
I run this code, I get this error (also tried with BASE_URL = 'https://api.meraki.com/api/v1/'):
Http Error: 404 Client Error: Not Found for url: https://api.meraki.com/api/v1/networks/N_1111111111111111/wireless/clients/healthScores
Why? - The data comes up in a web browser just fine.
& Thank you.
#Code here#
import requests
BASE_URL = 'https://n1234.meraki.com/api/v1/'
def get_api_key():
return input("Enter your Meraki API key: ")
def get_organizations(api_key):
headers = {
'X-Cisco-Meraki-API-Key': api_key,
}
try:
response = requests.get(BASE_URL + 'organizations', headers=headers)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"Error occurred during API call: {e}")
return []
def display_organizations(organizations):
print("Organizations:")
for idx, org in enumerate(organizations, 1):
print(f"{idx}. {org['name']} (ID: {org['id']})")
print()
def get_networks(api_key, org_id):
headers = {
'X-Cisco-Meraki-API-Key': api_key,
}
try:
response = requests.get(BASE_URL + f'organizations/{org_id}/networks', headers=headers)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"Error occurred during API call: {e}")
return []
def display_networks(networks):
print("Networks:")
for idx, network in enumerate(networks, 1):
print(f"{idx}. {network['name']} (ID: {network['id']})")
def get_health_info(api_key, network_id):
headers = {
'X-Cisco-Meraki-API-Key': api_key,
'Content-Type': 'application/json', # Add Content-Type header
}
url = BASE_URL + f'networks/{network_id}/wireless/clients/healthScores'
response = requests.get(url, headers=headers)
response.raise_for_status()
return response.json()
def main():
api_key = get_api_key()
organizations = get_organizations(api_key)
if organizations:
if len(organizations) == 1:
print(f"Only one organization available: {organizations[0]['name']} (ID: {organizations[0]['id']})")
selected_org_id = organizations[0]['id']
else:
display_organizations(organizations)
org_choice = int(input("Please enter the number of your organization: "))
selected_org_id = organizations[org_choice - 1]['id']
networks = get_networks(api_key, selected_org_id)
if networks:
display_networks(networks)
network_choice = int(input("Please enter the number of the network you want to check clients for: "))
selected_network_id = networks[network_choice - 1]['id']
health_info = get_health_info(api_key, selected_network_id)
print("Network Health Information:")
print(health_info)
if __name__ == "__main__":
main()
Solved! Go to solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry, I meant Early Access. Everything I find on documentation for that section is under the early access API https://developer.cisco.com/meraki/api-latest/get-network-wireless-devices-health-scores/
If you follow the menu on the left up it shows under Early Access. I can try to test with your code tomorrow and see if i get the same response without being signed up for Early Access
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm not great with Python but when i attempt, i'm getting 404 on browser and postman, but I'm also not enrolled in EA. Are all of your networks enrolled in that? It could be something as simple as that.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for the response.
EA, "Enterprise Agreement?" I think so, as we are licensed? I am able to do things like pull Networks, and the APs within networks in a nice little list. Just not getting anywhere with this pull. Or, when I do, the shell of the data is there- with MAC, but none of the score info. Thank you again for your thoughts.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry, I meant Early Access. Everything I find on documentation for that section is under the early access API https://developer.cisco.com/meraki/api-latest/get-network-wireless-devices-health-scores/
If you follow the menu on the left up it shows under Early Access. I can try to test with your code tomorrow and see if i get the same response without being signed up for Early Access
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you! I have the code here, below, too- as all the formatting was dropped. I was able to pull stats on connections, and I am comparing the code now. If anything I think I am missing parameters, something with a Rest call. My hunch... but maybe I don't have EA...
jadexing/Merakicode: Code for Meraki Wi-Fi (github.com)
Here's the code I was able to get working (with some others posted)
Merakicode/LatencyStats at main · jadexing/Merakicode (github.com)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thinking again, I was trying to crack this API before I saw anything posted on v3.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Well arguing with myself. I can still pull this data up through a browser, just not into a terminal with code.
Still this... Doesn't make sense...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @Jamieinbox , it sounds like there's a chance the API endpoint is part of the early access program. For more info we have a post in the sidebar at https://community.meraki.com/t5/Developers-APIs/bd-p/api with full details on the Early API Access program and what it means.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ah... I thought because I was in API v 1 I was safe, further drilling in per pic below, I see it- and now know the significance. Thanks for assistance, was super confused as it was coming up in the browser.
