Find an API

Search public APIs with auth details & Postman guides

← All APIs

Meraki Dashboard API

meraki · IoT

IoT No Auth Free & Open iot enterprise

The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification. > Date: 05 March, 2023 > > [Recent Updates](https://meraki.io/whats-new/) --- [API Documentation](https://meraki.io/api) [Community Support](https://meraki.io/community) [Meraki Homepage](https://www.meraki.com)

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET List the organizations that the user has privileges on

List the organizations that the user has privileges on

https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/organizations

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/organizations"
import requests
response = requests.get(
    "https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/organizations",
)
print(response.json())
const url = 'https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/organizations';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/organizations"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/organizations")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/organizations";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET List the clients of a device, up to a maximum of a month ago

List the clients of a device, up to a maximum of a month ago. The usage of each client is returned in kilobytes. If the device is a switch, the switchport is returned; otherwise the switchport field is null.

https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/clients?t0=example&timespan=1

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/clients?t0=example&timespan=1"
import requests
params = {
    "t0": "example",
    "timespan": "1"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/clients",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/clients');
url.searchParams.set('t0', 'example');
url.searchParams.set('timespan', '1');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/clients")
	q := baseURL.Query()
	q.Set("t0", "example")
	q.Set("timespan", "1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/clients")
uri.query = URI.encode_www_form({
  "t0" => "example",
  "timespan" => "1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/clients?" . http_build_query([
    "t0" => "example",
    "timespan" => "1"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Return the status for all the ports of a switch

Return the status for all the ports of a switch

https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/switchPortStatuses?t0=example&timespan=1

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/switchPortStatuses?t0=example&timespan=1"
import requests
params = {
    "t0": "example",
    "timespan": "1"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/switchPortStatuses",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/switchPortStatuses');
url.searchParams.set('t0', 'example');
url.searchParams.set('timespan', '1');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/switchPortStatuses")
	q := baseURL.Query()
	q.Set("t0", "example")
	q.Set("timespan", "1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/switchPortStatuses")
uri.query = URI.encode_www_form({
  "t0" => "example",
  "timespan" => "1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/meraki.com/0.0.0-streaming/devices/{serial}/switchPortStatuses?" . http_build_query([
    "t0" => "example",
    "timespan" => "1"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with Meraki Dashboard API?

Meraki Dashboard API is a IoT API. Developers commonly use iot APIs for:

  • collecting and streaming sensor and device data
  • monitoring and controlling connected devices
  • building smart-home and industrial dashboards
  • processing device telemetry at scale
  • automating device provisioning and alerting

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Meraki Dashboard API is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗