Search

"The difficulty does not lie in finding new ideas, but in escaping the long outdated belief in old ones."

Everywhere
This Board
This Topic
Downloads
Advanced Search

Mikrotik Api Examples Apr 2026

import librouteros api = librouteros.connect( host='192.168.88.1', username='admin', password='', port=8728, # default API port (plaintext) use_ssl=False ) resources = api(cmd='/system/resource/print') print(f"Board: {resources[0]['board-name']}") print(f"Uptime: {resources[0]['uptime']}") print(f"CPU Load: {resources[0]['cpu-load']}%")

import ssl ssl_context = ssl.create_default_context() api_ssl = librouteros.connect( host='192.168.88.1', username='admin', password='', port=8729, use_ssl=True, ssl_wrapper=ssl_context )

api(cmd='/queue/simple/add', name='client-limited', target='192.168.88.100/32', max_limit='5M/5M', comment='api-created') For production, always use SSL on port 8729. mikrotik api examples

import asyncio from librouteros import connect async def get_interfaces(): loop = asyncio.get_event_loop() api = await loop.run_in_executor(None, connect, '192.168.88.1', 'admin', '') result = await loop.run_in_executor(None, api, '/interface/print') return result

print(f"Active connections: TCP={tcp_count}, UDP={udp_count}") Limit a client’s bandwidth via script. import librouteros api = librouteros

conns = api(cmd='/ip/firewall/connection/print') tcp_count = sum(1 for c in conns if c['protocol'] == 'tcp') udp_count = sum(1 for c in conns if c['protocol'] == 'udp')

Make sure /ip service set api-ssl disabled=no is enabled on the router. RouterOS 7.14 introduced REST API, but the classic API also works fine. For large networks, try async: RouterOS 7

api(cmd='/ip/dhcp-server/lease/add', address='192.168.88.50', mac_address='AA:BB:CC:DD:EE:FF', comment='printer-api') To verify:

Let me know in the comments. Want the code as a ready-to-use Python script? Download the gist here.