loader

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:

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

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

Try the examples above, then modify them to fit your network. Next week, I’ll cover for live graphing.

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:

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')

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.

leases = api(cmd='/ip/dhcp-server/lease/print') for lease in leases: if lease['comment'] == 'printer-api': print(f"Lease: {lease['address']} -> {lease['mac-address']}") Toggle a rule by comment (safer than index).

Mikrotik Api Examples 💯

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:

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

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

Try the examples above, then modify them to fit your network. Next week, I’ll cover for live graphing.

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: Make sure /ip service set api-ssl disabled=no is

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')

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 ) Let me know in the comments

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.

leases = api(cmd='/ip/dhcp-server/lease/print') for lease in leases: if lease['comment'] == 'printer-api': print(f"Lease: {lease['address']} -> {lease['mac-address']}") Toggle a rule by comment (safer than index).