You can interact with the API using almost any programming language. Below are setup instructions for the two most popular languages used in network automation: Python and Node.js. Python Environment Setup
curl -k -u admin: https://192.168.88.1/rest/ip/address/*1
This ensures only authorized networks can reach the API.
⚠️ In JSON replies, all object values are encoded as strings, even if the underlying data is a number or a boolean. When sending numeric values in requests, you can also use octal (with a leading 0 ) or hexadecimal (with a leading 0x ) format, but numbers with exponents are not supported. mikrotik api examples
package main import ( "fmt" "log" "gopkg.in/routeros.v2" ) func main() // Connect to the MikroTik device cl, err := routeros.Dial("192.168.88.1:8728", "api_user", "SecurePassword123") if err != nil log.Fatalf("Connection error: %v", err) defer cl.Close() // Call 'monitor-traffic' which streams continuous updates res, err := cl.Run("/interface/monitor-traffic", "=interface=ether1", "=once") if err != nil log.Fatalf("Execution error: %v", err) // Parse out the real-time rates for _, re := range res.Re Rx-Bits: %s bps Use code with caution. 4. Querying and Filtering API Data
The easiest way to test the REST API is with curl :
func main() // Authenticate to router auth, err := routeros.Auth("192.168.88.1", "admin", "") if err != nil log.Fatal(err) You can interact with the API using almost
The REST API follows standard HTTP methods mapped to RouterOS operations:
PHP is heavily utilized in ISPs and WISPs for integrating MikroTik routers with custom user portals and Remote Authentication Dial-In User Service (RADIUS) billing systems. 1. Retrieving the Active DHCP Leases
registrations = api.path('interface', 'wireless', 'registration-table') for client in registrations: print(f"MAC: client['mac-address'], Signal: client['signal-strength'] dBm, TX Rate: client['tx-rate']") ⚠️ In JSON replies, all object values are
// API endpoint $api_url = "http://$device_ip/api/v1";
// Execute commands concurrently const interfaces = await client.send( command: '/interface/print' ); const addresses = await client.send( command: '/ip/address/print' );
You can interact with MikroTik REST API using Python's built-in requests library:
: Restrict access to trusted IP addresses to prevent unauthorized connections:
Pro Tip: Use /ip service set api address=192.168.88.0/24 to restrict API access to your management subnet. 2. Python API Example: Getting System Resource