cancel
Showing results for 
Search instead for 
Did you mean: 

API returning 404

SOLVED
Here to help

API returning 404

I am trying to leverage the API to write a script that will periodically check the last connected date for our SM devices.

 

I happen to be using Powershell, though you tell me if it matters and I still consider myself a bginner when it comes to REST, but I have worked with it.

 

My first issue is that I'm not sure what format the network id should be in. My network ID is something like 123-456-0789, so I tried that in the URL and I also tried 1234560789, but neither made any difference.

 

Below is my code, followed by the error I am seeing:

    $MerakiApiKey = "32d000fa9c0ce60d4e000cd4d00001b00000053d"
    $MerakiUrl = "https://api.meraki.com/api/v0/networks/1234560789/sm/devices?fields=ip,lastConnected&scope=all"
    $headers = @{}
    $headers.Add("X-Cisco-Meraki-API-KEY",$MerakiApiKey)
    $headers.Add("Content-Type","application/json")
Invoke-RestMethod -Method Get -Uri $MerakiUrl -Headers $headers

Error:

Invoke-RestMethod : The remote server returned an error: (404) Not Found.
At line:1 char:1
+ Invoke-RestMethod -Method Get -Uri $MerakiUrl -Headers $headers
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

1 ACCEPTED SOLUTION

Accepted Solutions
Here to help

Re: API returning 404

HI Michael

The network id is not the ID you see in the dashboard or somewhere else, you can get it by listing networks from your org with a call to:

/organizations/[organizationId]/networks

You can get a list of orgs you manage by calling:

/organizations

Also please change your API key *now* since you posted it here and everyone with that key can now access your network via API and make changes (!)

The network ID looks similar to: L_123456789123456789


Cheers!
7 REPLIES
Here to help

Re: API returning 404

HI Michael

The network id is not the ID you see in the dashboard or somewhere else, you can get it by listing networks from your org with a call to:

/organizations/[organizationId]/networks

You can get a list of orgs you manage by calling:

/organizations

Also please change your API key *now* since you posted it here and everyone with that key can now access your network via API and make changes (!)

The network ID looks similar to: L_123456789123456789


Cheers!
Here to help

Re: API returning 404

I was wondering about the OrgID and Network ID, but I didn't see where to get them. Thank you very much!

 

That API key isn't the real one, no worries!

 

Now the error I see is:

Server error
The server encountered an error and could not complete your request. A message has been sent to our engineering and support teams to notify us of the problem, and we will fix it as soon as possible.
The Cisco Meraki Dashboard is temporarily unavailable, but rest assured your Meraki equipment is still running and network operation has not been interrupted. Learn more about Meraki's out-of-band control.
 

Here to help

Re: API returning 404

Awesome, glad to hear about the API key Smiley Wink

 

So either the Meraki server where your org is hosted really has problems now or you malformed the request. In the latter case I think you should get another error, but not sure since it never failed on me with this error message Smiley Happy

 

Also you might want to consider using the shard URL like "n172.meraki.com" instead of "api.meraki.com". In my experience using the shard node directly works better than following redirects.

 

I hope that helps Smiley Happy

 

Cheers!

 

P.S. Do not worry too much about REST, the API is IMHO fundamentally not RESTful on so many levels (that's a whole different topic[1]). I think it's better to call it JSON API over HTTPS for a better understanding on how it works. Basically you throw JSON at it and it replies in JSON, pretty basic. It's not worse or better than a real REST API, just a different approach.

 

[1] https://dzone.com/articles/5-easy-to-spot-tells-that-your-rest-api-is-not-res 

Here to help

Re: API returning 404

I did try the shared url and got the same error. I will try again tomorrow I guess and see if it changes.

 

Based on the code I posted, do you see anything that should make it malformed?

 

 

Here to help

Re: API returning 404

I don‘t have a lot of experience with Powershell but I‘d say it looks good so far.
Getting noticed

Re: API returning 404

@Michael-873494

 

We utilize the API exclusively with PS in our environment and I do not see an issue with your code. You would want to try the shard URL as previously suggested as well as https://dashboard.meraki.com/api/... 

Here to help

Re: API returning 404

The final issue I had, turned out to have to do with the "scope=All". Adding the scope parameter causes the error I reported, though I am not sure why and tech support doesn't know either.