# NetBox MCP Server — 608 tools via DADL

The NetBox DADL turns NetBox's API into an MCP server that Claude, GPT or any MCP-compatible agent can consume directly. One YAML file declares all 608 tools — virtual, circuit, device, module, vlan, contact, and more — and ToolMesh serves them at runtime. No Python boilerplate, no per-endpoint code, no separate MCP server process.

Below: the endpoint coverage matrix, a two-block ToolMesh setup, the full tool reference grouped by NetBox feature area, required credential scopes.

**Source:** [NetBox REST API](https://netboxlabs.com/docs/netbox/integrations/rest-api/)

**Updated:** 2026-05-19

**Tags:** cloud, devops, networking, crud, user-management, file-management, logging, documentation, auth:bearer

## Which NetBox endpoints are covered?

**98%** (608 of ~620 endpoints).

**Focus:** DCIM full v4: sites, site-groups, regions, locations, racks (with elevation, roles, types, reservations), manufacturers, device-types, device-roles, platforms, devices, modules, module-types, module-bays, device-bays, virtual-chassis, virtual-device-contexts, inventory-items, inventory-item-roles, interfaces, cables, cable-terminations, all port types (console, console-server, power, power-outlet, front, rear) with trace/paths actions, power-panels, power-feeds, mac-addresses, connected-device lookup, and the complete component-template family. IPAM full v4: prefixes (with available-prefixes/available-ips), ip-addresses, ip-ranges (with available-ips), vlans, vlan-groups (with available-vlans), vrfs, route-targets, aggregates, rirs, asns, asn-ranges (with available-asns), roles, services, service-templates, vlan-translation-policies, vlan-translation-rules, fhrp-groups, fhrp-group-assignments. Virtualization full v4: clusters, cluster-types, cluster-groups, virtual-machines, virtual-machine-types, vm-interfaces, virtual-disks. Tenancy full v4: tenants, tenant-groups, contacts, contact-roles, contact-groups, contact-assignments. Circuits full v4: providers, provider-accounts, provider-networks, circuit-types, circuits, circuit-terminations (with paths), circuit-groups, circuit-group-assignments, virtual-circuits, virtual-circuit-types, virtual-circuit-terminations. Wireless full v4: wireless-lan-groups, wireless-lans, wireless-links. VPN full v4: tunnel-groups, tunnels, tunnel-terminations, ike-proposals, ike-policies, ipsec-proposals, ipsec-policies, ipsec-profiles, l2vpns, l2vpn-terminations. Extras: tags, custom-fields, custom-field-choice-sets, custom-links, saved-filters, export-templates, journal-entries, object-changes, config-contexts, config-templates (+render), webhooks, event-rules, scripts (+run), bookmarks, notifications, notification-groups, subscriptions, image-attachments, dashboard. Users: users, groups, permissions, tokens (+provision). Core: data-sources (+sync), data-files, jobs, object-types, background-queues/workers/tasks.

**Missing:** Read-only listing of background-tasks with action endpoints (delete/requeue/enqueue/stop) -- rarely used outside debugging. Plugin-specific endpoints under /api/plugins/ -- those depend on installed plugins and are out of scope for a general DADL. table-configs, config-context-profiles, tagged-objects, and the authentication-check endpoint -- minor utility endpoints. Bulk update/delete on list endpoints (PUT/PATCH/DELETE on collections) -- prefer per-object operations in Code Mode.


*Last reviewed: 2026-05-19*

## How do you configure the NetBox DADL?

1. Log in to your NetBox instance as an admin user
2. Navigate to your user profile (top-right) -> API Tokens
3. Click 'Add a token' and configure permissions
4. For full access: leave 'Write enabled' checked, no IP restrictions
5. Copy the generated token -- it is shown only once (v2 tokens)
6. v2 tokens start with 'nbt_' -- enter only the token value, ToolMesh adds the auth header automatically

**Environment variable:** `CREDENTIAL_NETBOX_TOKEN`

[Authentication docs](https://netboxlabs.com/docs/netbox/integrations/rest-api/)

*The url in backends.yaml must include /api (e.g. https://netbox.example.com/api). Enter only the raw token value (e.g. nbt_xxx) -- ToolMesh handles the Authorization header. Swagger docs at /api/schema/swagger-ui/.*

## How do you install the NetBox MCP server with ToolMesh?

Add to your `backends.yaml`:

```yaml
- name: netbox
  transport: rest
  dadl: netbox.dadl
  url: "https://netbox.example.com/api"

```

Set the credential:

```
CREDENTIAL_NETBOX_TOKEN=your-token-here
```

## What 608 tools does the NetBox DADL expose?

- **GET** `list_sites` — List all sites (data centers, offices, PoPs)
- **GET** `get_site` — Get a specific site
- **POST** `create_site` — Create a new site
- **PATCH** `update_site` — Update a site
- **DELETE** `delete_site` — Delete a site
- **GET** `list_regions` — List all regions (geographic grouping of sites)
- **POST** `create_region` — Create a region
- **GET** `get_region` — Get a specific region
- **PATCH** `update_region` — Update a region
- **DELETE** `delete_region` — Delete a region
- **GET** `list_locations` — List locations within sites (rooms, floors, cages)
- **POST** `create_location` — Create a location within a site
- **GET** `get_location` — Get a specific location
- **PATCH** `update_location` — Update a location
- **DELETE** `delete_location` — Delete a location
- **GET** `list_site_groups` — List site groups (hierarchical grouping of sites, orthogonal to regions)
- **GET** `get_site_group` — Get a specific site group
- **POST** `create_site_group` — Create a site group
- **PATCH** `update_site_group` — Update a site group
- **DELETE** `delete_site_group` — Delete a site group
- **GET** `list_racks` — List all racks
- **GET** `get_rack` — Get a specific rack
- **POST** `create_rack` — Create a rack
- **PATCH** `update_rack` — Update a rack
- **DELETE** `delete_rack` — Delete a rack
- **GET** `get_rack_elevation` — Get rack elevation -- returns the rack units with installed devices. Use ?render=svg for a graphical SVG rendering, default is JSON list of units.

- **GET** `list_rack_roles` — List rack roles (functional classification of racks)
- **GET** `get_rack_role` — Get a specific rack role
- **POST** `create_rack_role` — Create a rack role
- **PATCH** `update_rack_role` — Update a rack role
- **DELETE** `delete_rack_role` — Delete a rack role
- **GET** `list_rack_types` — List rack types (reusable rack model definitions, NetBox 4.1+)
- **GET** `get_rack_type` — Get a specific rack type
- **POST** `create_rack_type` — Create a rack type
- **PATCH** `update_rack_type` — Update a rack type
- **DELETE** `delete_rack_type` — Delete a rack type
- **GET** `list_rack_reservations` — List rack reservations (claimed rack units for future use)
- **GET** `get_rack_reservation` — Get a specific rack reservation
- **POST** `create_rack_reservation` — Reserve rack units for future installation
- **PATCH** `update_rack_reservation` — Update a rack reservation
- **DELETE** `delete_rack_reservation` — Delete a rack reservation
- **GET** `list_manufacturers` — List hardware manufacturers
- **POST** `create_manufacturer` — Create a hardware manufacturer
- **GET** `get_manufacturer` — Get a specific manufacturer
- **PATCH** `update_manufacturer` — Update a manufacturer
- **DELETE** `delete_manufacturer` — Delete a manufacturer
- **GET** `list_device_types` — List device types (hardware models)
- **POST** `create_device_type` — Create a device type (hardware model)
- **GET** `get_device_type` — Get a specific device type
- **PATCH** `update_device_type` — Update a device type
- **DELETE** `delete_device_type` — Delete a device type
- **GET** `list_device_roles` — List device roles (server, switch, router, firewall, etc.)
- **POST** `create_device_role` — Create a device role
- **GET** `get_device_role` — Get a specific device role
- **PATCH** `update_device_role` — Update a device role
- **DELETE** `delete_device_role` — Delete a device role
- **GET** `list_platforms` — List platforms (OS/firmware: Cisco IOS, Junos, Linux, etc.)
- **POST** `create_platform` — Create a platform (OS/firmware type)
- **GET** `get_platform` — Get a specific platform
- **PATCH** `update_platform` — Update a platform
- **DELETE** `delete_platform` — Delete a platform
- **GET** `list_devices` — List all devices (servers, switches, routers, firewalls, etc.)
- **GET** `get_device` — Get a specific device with all details
- **POST** `create_device` — Create a new device
- **PATCH** `update_device` — Update a device
- **DELETE** `delete_device` — Delete a device
- **GET** `list_module_types` — List module types (reusable hardware module definitions, e.g. line cards)
- **GET** `get_module_type` — Get a specific module type
- **POST** `create_module_type` — Create a module type
- **PATCH** `update_module_type` — Update a module type
- **DELETE** `delete_module_type` — Delete a module type
- **GET** `list_module_type_profiles` — List module type profiles (schemas for module-type custom attributes, NetBox 4.3+)
- **GET** `get_module_type_profile` — Get a specific module type profile
- **POST** `create_module_type_profile` — Create a module type profile (JSON Schema describing module-type attributes)
- **PATCH** `update_module_type_profile` — Update a module type profile
- **DELETE** `delete_module_type_profile` — Delete a module type profile
- **GET** `list_modules` — List installed modules (instances of module-types mounted in module-bays)
- **GET** `get_module` — Get a specific module
- **POST** `create_module` — Install a module into a module bay
- **PATCH** `update_module` — Update a module
- **DELETE** `delete_module` — Delete a module
- **GET** `list_module_bays` — List module bays (slots on a device that accept modules)
- **GET** `get_module_bay` — Get a specific module bay
- **POST** `create_module_bay` — Create a module bay on a device
- **PATCH** `update_module_bay` — Update a module bay
- **DELETE** `delete_module_bay` — Delete a module bay
- **GET** `list_device_bays` — List device bays (slots that contain child devices, e.g. blade chassis)
- **GET** `get_device_bay` — Get a specific device bay
- **POST** `create_device_bay` — Create a device bay
- **PATCH** `update_device_bay` — Update a device bay
- **DELETE** `delete_device_bay` — Delete a device bay
- **GET** `list_virtual_chassis` — List virtual chassis (logical grouping of stacked devices that share a single management plane)
- **GET** `get_virtual_chassis` — Get a specific virtual chassis
- **POST** `create_virtual_chassis` — Create a virtual chassis. Assign devices via PATCH /dcim/devices/ to set virtual_chassis and vc_position fields.
- **PATCH** `update_virtual_chassis` — Update a virtual chassis
- **DELETE** `delete_virtual_chassis` — Delete a virtual chassis
- **GET** `list_virtual_device_contexts` — List virtual device contexts (VDCs -- multiple logical contexts on one physical device, e.g. Cisco Nexus VDCs)
- **GET** `get_virtual_device_context` — Get a specific VDC
- **POST** `create_virtual_device_context` — Create a virtual device context
- **PATCH** `update_virtual_device_context` — Update a virtual device context
- **DELETE** `delete_virtual_device_context` — Delete a virtual device context
- **GET** `list_inventory_items` — List inventory items (line cards, fans, PSUs not modeled as full modules)
- **GET** `get_inventory_item` — Get a specific inventory item
- **POST** `create_inventory_item` — Create an inventory item on a device
- **PATCH** `update_inventory_item` — Update an inventory item
- **DELETE** `delete_inventory_item` — Delete an inventory item
- **GET** `list_inventory_item_roles` — List inventory item roles (functional classification, e.g. CPU, PSU, Fan)
- **GET** `get_inventory_item_role` — Get a specific inventory item role
- **POST** `create_inventory_item_role` — Create an inventory item role
- **PATCH** `update_inventory_item_role` — Update an inventory item role
- **DELETE** `delete_inventory_item_role` — Delete an inventory item role
- **GET** `list_interfaces` — List device interfaces (physical and logical)
- **GET** `get_interface` — Get a specific interface
- **POST** `create_interface` — Create a device interface
- **PATCH** `update_interface` — Update a device interface. Nullable foreign keys and choice fields accept an explicit JSON null to clear -- omitting the field leaves it unchanged. Nullable params: untagged_vlan, lag, parent, bridge, vrf, primary_mac_address, mode, duplex. For M2M wireless_lans / tagged_vlans / tags pass [] to detach all.

- **DELETE** `delete_interface` — Delete a device interface
- **GET** `list_cables` — List all cables connecting device components
- **GET** `get_cable` — Get a specific cable
- **POST** `create_cable` — Create a cable connection between device components
- **PATCH** `update_cable` — Update a cable
- **DELETE** `delete_cable` — Delete a cable
- **GET** `list_console_ports` — List device console ports
- **POST** `create_console_port` — Create a console port on a device
- **GET** `list_power_ports` — List device power ports
- **POST** `create_power_port` — Create a power port on a device
- **GET** `list_mac_addresses` — List MAC addresses
- **POST** `create_mac_address` — Create a MAC address entry
- **GET** `get_mac_address` — Get a specific MAC address entry
- **PATCH** `update_mac_address` — Update a MAC address entry (reassign to different interface, change description)
- **DELETE** `delete_mac_address` — Delete a MAC address entry
- **GET** `get_console_port` — Get a specific console port
- **PATCH** `update_console_port` — Update a console port
- **DELETE** `delete_console_port` — Delete a console port
- **GET** `trace_console_port` — Trace the cable path from this console port to its far end (returns a list of cable segments)
- **GET** `list_console_server_ports` — List console server ports (the server-side of console connections)
- **GET** `get_console_server_port` — Get a specific console server port
- **POST** `create_console_server_port` — Create a console server port
- **PATCH** `update_console_server_port` — Update a console server port
- **DELETE** `delete_console_server_port` — Delete a console server port
- **GET** `get_power_port` — Get a specific power port
- **PATCH** `update_power_port` — Update a power port
- **DELETE** `delete_power_port` — Delete a power port
- **GET** `list_power_outlets` — List power outlets (sockets on a PDU or device that supply power to other devices)
- **GET** `get_power_outlet` — Get a specific power outlet
- **POST** `create_power_outlet` — Create a power outlet (typically on a PDU)
- **PATCH** `update_power_outlet` — Update a power outlet
- **DELETE** `delete_power_outlet` — Delete a power outlet
- **GET** `list_front_ports` — List front ports (patch panel front-side ports, paired with rear ports)
- **GET** `get_front_port` — Get a specific front port
- **POST** `create_front_port` — Create a front port on a patch panel (must reference a rear port)
- **PATCH** `update_front_port` — Update a front port
- **DELETE** `delete_front_port` — Delete a front port
- **GET** `paths_front_port` — List all cable paths that pass through this front port
- **GET** `list_rear_ports` — List rear ports (patch panel rear-side ports, cabled to trunk lines)
- **GET** `get_rear_port` — Get a specific rear port
- **POST** `create_rear_port` — Create a rear port on a patch panel
- **PATCH** `update_rear_port` — Update a rear port
- **DELETE** `delete_rear_port` — Delete a rear port
- **GET** `paths_rear_port` — List all cable paths that pass through this rear port
- **GET** `trace_interface` — Trace the cable path from this interface to its far end
- **GET** `trace_power_port` — Trace the cable path from this power port
- **GET** `trace_power_outlet` — Trace the cable path from this power outlet
- **GET** `trace_console_server_port` — Trace the cable path from this console server port
- **GET** `get_connected_device` — Lookup the device connected to a given peer device/interface. Returns the device at the far end of the cable, or 404 if not connected.

- **GET** `list_cable_terminations` — List cable terminations (endpoints of cables -- the join between a cable and a port)
- **GET** `get_cable_termination` — Get a specific cable termination
- **GET** `list_power_panels` — List power panels (the upstream source of power feeds at a site)
- **GET** `get_power_panel` — Get a specific power panel
- **POST** `create_power_panel` — Create a power panel
- **PATCH** `update_power_panel` — Update a power panel
- **DELETE** `delete_power_panel` — Delete a power panel
- **GET** `list_power_feeds` — List power feeds (the circuit from a power panel that supplies a rack)
- **GET** `get_power_feed` — Get a specific power feed
- **POST** `create_power_feed` — Create a power feed (circuit from a power panel to a rack)
- **PATCH** `update_power_feed` — Update a power feed
- **DELETE** `delete_power_feed` — Delete a power feed
- **GET** `trace_power_feed` — Trace the cable path from this power feed
- **GET** `list_interface_templates` — List interface templates on device-types and module-types
- **POST** `create_interface_template` — Create an interface template. Must specify device_type OR module_type.
- **GET** `get_interface_template` — Get a specific interface template
- **PATCH** `update_interface_template` — Update an interface template
- **DELETE** `delete_interface_template` — Delete an interface template
- **GET** `list_console_port_templates` — List console port templates
- **POST** `create_console_port_template` — Create a console port template
- **DELETE** `delete_console_port_template` — Delete a console port template
- **GET** `list_console_server_port_templates` — List console server port templates
- **POST** `create_console_server_port_template` — Create a console server port template
- **DELETE** `delete_console_server_port_template` — Delete a console server port template
- **GET** `list_power_port_templates` — List power port templates
- **POST** `create_power_port_template` — Create a power port template
- **DELETE** `delete_power_port_template` — Delete a power port template
- **GET** `list_power_outlet_templates` — List power outlet templates
- **POST** `create_power_outlet_template` — Create a power outlet template
- **DELETE** `delete_power_outlet_template` — Delete a power outlet template
- **GET** `list_front_port_templates` — List front port templates
- **POST** `create_front_port_template` — Create a front port template (must reference a rear-port-template)
- **DELETE** `delete_front_port_template` — Delete a front port template
- **GET** `list_rear_port_templates` — List rear port templates
- **POST** `create_rear_port_template` — Create a rear port template
- **DELETE** `delete_rear_port_template` — Delete a rear port template
- **GET** `list_module_bay_templates` — List module bay templates
- **POST** `create_module_bay_template` — Create a module bay template
- **DELETE** `delete_module_bay_template` — Delete a module bay template
- **GET** `list_device_bay_templates` — List device bay templates
- **POST** `create_device_bay_template` — Create a device bay template
- **DELETE** `delete_device_bay_template` — Delete a device bay template
- **GET** `list_inventory_item_templates` — List inventory item templates
- **POST** `create_inventory_item_template` — Create an inventory item template
- **DELETE** `delete_inventory_item_template` — Delete an inventory item template
- **GET** `list_prefixes` — List IP prefixes (subnets)
- **GET** `get_prefix` — Get a specific prefix
- **POST** `create_prefix` — Create an IP prefix
- **PATCH** `update_prefix` — Update a prefix
- **DELETE** `delete_prefix` — Delete a prefix
- **GET** `list_available_ips` — List available (unallocated) IPs within a prefix
- **GET** `list_ip_addresses` — List all IP addresses
- **GET** `get_ip_address` — Get a specific IP address
- **POST** `create_ip_address` — Create an IP address
- **PATCH** `update_ip_address` — Update an IP address
- **DELETE** `delete_ip_address` — Delete an IP address
- **GET** `list_ip_ranges` — List IP ranges (continuous address ranges, e.g. DHCP pools)
- **POST** `create_ip_range` — Create an IP range
- **GET** `list_vlans` — List all VLANs
- **GET** `get_vlan` — Get a specific VLAN
- **POST** `create_vlan` — Create a VLAN
- **PATCH** `update_vlan` — Update a VLAN
- **DELETE** `delete_vlan` — Delete a VLAN
- **GET** `list_vlan_groups` — List VLAN groups
- **POST** `create_vlan_group` — Create a VLAN group
- **GET** `get_vlan_group` — Get a specific VLAN group
- **PATCH** `update_vlan_group` — Update a VLAN group
- **DELETE** `delete_vlan_group` — Delete a VLAN group
- **GET** `list_vrfs` — List all VRFs (Virtual Routing and Forwarding instances)
- **GET** `get_vrf` — Get a specific VRF
- **POST** `create_vrf` — Create a VRF
- **PATCH** `update_vrf` — Update a VRF
- **DELETE** `delete_vrf` — Delete a VRF
- **GET** `list_rirs` — List Regional Internet Registries (RIPE, ARIN, etc.)
- **POST** `create_rir` — Create a Regional Internet Registry
- **GET** `list_aggregates` — List aggregate prefixes (top-level allocations from RIRs)
- **POST** `create_aggregate` — Create an aggregate prefix (top-level RIR allocation)
- **GET** `list_asns` — List Autonomous System Numbers
- **POST** `create_asn` — Create an Autonomous System Number
- **GET** `list_ipam_roles` — List IPAM roles for prefixes and VLANs
- **POST** `create_ipam_role` — Create an IPAM role for prefixes and VLANs
- **GET** `list_services` — List services running on devices or VMs (DNS, HTTP, SSH, etc.). NetBox 4.x uses parent_object filters.
- **POST** `create_service` — Create a service entry on a device or VM. NetBox 4.x uses GenericForeignKey: set parent_object_type and parent_object_id instead of device/virtual_machine.
- **GET** `get_service` — Get a specific service
- **PATCH** `update_service` — Update a service. Use parent_object_type + parent_object_id to reassign (NetBox 4.x GenericForeignKey).
- **DELETE** `delete_service` — Delete a service
- **GET** `list_service_templates` — List service templates (reusable service definitions, e.g. 'web-https')
- **GET** `get_service_template` — Get a specific service template
- **POST** `create_service_template` — Create a service template
- **PATCH** `update_service_template` — Update a service template
- **DELETE** `delete_service_template` — Delete a service template
- **GET** `list_route_targets` — List BGP route targets (e.g. '65000:100', used for MPLS L3VPN import/export)
- **GET** `get_route_target` — Get a specific route target
- **POST** `create_route_target` — Create a route target. Assign to VRFs via vrf.import_targets / vrf.export_targets.
- **PATCH** `update_route_target` — Update a route target
- **DELETE** `delete_route_target` — Delete a route target
- **GET** `list_asn_ranges` — List ASN ranges (bounded ASN allocation pools)
- **GET** `get_asn_range` — Get a specific ASN range
- **POST** `create_asn_range` — Create an ASN range
- **PATCH** `update_asn_range` — Update an ASN range
- **DELETE** `delete_asn_range` — Delete an ASN range
- **GET** `list_available_asns` — List the next unallocated ASNs within a range. POST to the same path to claim ASNs.
- **POST** `claim_asn` — Claim the next available ASN from a range and assign metadata
- **GET** `list_available_prefixes` — List unallocated sub-prefixes within a prefix
- **POST** `claim_prefix` — Carve a new child prefix out of a parent. NetBox picks the next free block of prefix_length.
- **GET** `list_available_ips_in_range` — List free IPs within an IP range
- **GET** `list_available_vlans` — List the next unallocated VIDs in a VLAN group
- **POST** `claim_vlan` — Claim the next available VID from a VLAN group
- **GET** `get_ip_range` — Get a specific IP range
- **PATCH** `update_ip_range` — Update an IP range
- **DELETE** `delete_ip_range` — Delete an IP range
- **GET** `get_aggregate` — Get a specific aggregate
- **PATCH** `update_aggregate` — Update an aggregate
- **DELETE** `delete_aggregate` — Delete an aggregate
- **GET** `get_asn` — Get a specific ASN
- **PATCH** `update_asn` — Update an ASN
- **DELETE** `delete_asn` — Delete an ASN
- **GET** `get_rir` — Get a specific RIR (Regional Internet Registry, e.g. RIPE, ARIN)
- **PATCH** `update_rir` — Update a RIR
- **DELETE** `delete_rir` — Delete a RIR
- **GET** `list_vlan_translation_policies` — List VLAN translation policies (named sets of 1:1 VID mappings, NetBox 4.0+)
- **GET** `get_vlan_translation_policy` — Get a specific VLAN translation policy
- **POST** `create_vlan_translation_policy` — Create a VLAN translation policy
- **PATCH** `update_vlan_translation_policy` — Update a VLAN translation policy
- **DELETE** `delete_vlan_translation_policy` — Delete a VLAN translation policy
- **GET** `list_vlan_translation_rules` — List VLAN translation rules (individual local-VID to remote-VID mappings within a policy)
- **GET** `get_vlan_translation_rule` — Get a specific VLAN translation rule
- **POST** `create_vlan_translation_rule` — Create a VLAN translation rule
- **PATCH** `update_vlan_translation_rule` — Update a VLAN translation rule
- **DELETE** `delete_vlan_translation_rule` — Delete a VLAN translation rule
- **GET** `list_fhrp_groups` — List FHRP (First Hop Redundancy Protocol) groups. FHRP groups represent virtual IP failover configurations using VRRP, HSRP, GLBP, or CARP. Each group has a protocol, numeric group_id, and optional name. IP addresses are assigned to groups separately.
- **GET** `get_fhrp_group` — Get a specific FHRP group by ID. Returns protocol, group_id, name, auth_type, auth_key, and assigned IP addresses.
- **POST** `create_fhrp_group` — Create an FHRP group. Requires protocol and group_id. Virtual IP addresses can be created alongside the group or assigned afterward via IP address objects.
- **PATCH** `update_fhrp_group` — Update an FHRP group.
- **DELETE** `delete_fhrp_group` — Delete an FHRP group. This also removes all group assignments.
- **GET** `list_fhrp_group_assignments` — List FHRP group assignments — links between FHRP groups and device/VM interfaces. Each assignment has a priority (0-255) determining master/primary election.
- **GET** `get_fhrp_group_assignment` — Get a specific FHRP group assignment by ID.
- **POST** `create_fhrp_group_assignment` — Assign an FHRP group to a device or VM interface. Priority (0-255) determines master/primary election — higher priority = more likely to be elected master.
- **PATCH** `update_fhrp_group_assignment` — Update an FHRP group assignment (e.g. change priority or reassign to a different interface).
- **DELETE** `delete_fhrp_group_assignment` — Delete an FHRP group assignment — removes the interface from the FHRP group.
- **GET** `list_cluster_types` — List cluster types (VMware, Proxmox, XCP-ng, etc.)
- **POST** `create_cluster_type` — Create a cluster type (e.g. VMware, Proxmox, Linode, XCP-ng)
- **GET** `list_cluster_groups` — List cluster groups
- **POST** `create_cluster_group` — Create a cluster group
- **GET** `get_cluster_group` — Get a specific cluster group
- **PATCH** `update_cluster_group` — Update a cluster group
- **DELETE** `delete_cluster_group` — Delete a cluster group
- **GET** `list_clusters` — List all virtualization clusters
- **GET** `get_cluster` — Get a specific cluster
- **POST** `create_cluster` — Create a virtualization cluster
- **PATCH** `update_cluster` — Update a cluster
- **DELETE** `delete_cluster` — Delete a cluster
- **GET** `list_virtual_machines` — List all virtual machines
- **GET** `get_virtual_machine` — Get a specific virtual machine
- **POST** `create_virtual_machine` — Create a virtual machine
- **PATCH** `update_virtual_machine` — Update a virtual machine
- **DELETE** `delete_virtual_machine` — Delete a virtual machine
- **GET** `list_vm_interfaces` — List virtual machine interfaces
- **POST** `create_vm_interface` — Create a VM interface
- **GET** `get_vm_interface` — Get a specific VM interface
- **PATCH** `update_vm_interface` — Update a VM interface
- **DELETE** `delete_vm_interface` — Delete a VM interface
- **GET** `list_virtual_disks` — List virtual disks
- **POST** `create_virtual_disk` — Create a virtual disk
- **GET** `get_virtual_disk` — Get a specific virtual disk
- **PATCH** `update_virtual_disk` — Update a virtual disk
- **DELETE** `delete_virtual_disk` — Delete a virtual disk
- **GET** `list_virtual_machine_types` — List virtual machine types (NetBox 4.2+, model definitions like AWS EC2 'm5.xlarge')
- **GET** `get_virtual_machine_type` — Get a specific VM type
- **POST** `create_virtual_machine_type` — Create a virtual machine type
- **PATCH** `update_virtual_machine_type` — Update a virtual machine type
- **DELETE** `delete_virtual_machine_type` — Delete a virtual machine type
- **GET** `list_tenants` — List all tenants (customers, departments, teams)
- **GET** `get_tenant` — Get a specific tenant
- **POST** `create_tenant` — Create a tenant
- **PATCH** `update_tenant` — Update a tenant
- **DELETE** `delete_tenant` — Delete a tenant
- **GET** `list_tenant_groups` — List tenant groups
- **POST** `create_tenant_group` — Create a tenant group
- **GET** `get_tenant_group` — Get a specific tenant group
- **PATCH** `update_tenant_group` — Update a tenant group
- **DELETE** `delete_tenant_group` — Delete a tenant group
- **GET** `list_contacts` — List all contacts
- **POST** `create_contact` — Create a contact
- **GET** `get_contact` — Get a specific contact
- **PATCH** `update_contact` — Update a contact
- **DELETE** `delete_contact` — Delete a contact
- **GET** `list_contact_roles` — List contact roles (admin, NOC, billing, etc.)
- **POST** `create_contact_role` — Create a contact role
- **GET** `get_contact_role` — Get a specific contact role
- **PATCH** `update_contact_role` — Update a contact role
- **DELETE** `delete_contact_role` — Delete a contact role
- **GET** `list_contact_groups` — List contact groups (hierarchical grouping of contacts)
- **GET** `get_contact_group` — Get a specific contact group
- **POST** `create_contact_group` — Create a contact group
- **PATCH** `update_contact_group` — Update a contact group
- **DELETE** `delete_contact_group` — Delete a contact group
- **GET** `list_contact_assignments` — List contact assignments (links between contacts and any NetBox object)
- **GET** `get_contact_assignment` — Get a specific contact assignment
- **POST** `create_contact_assignment` — Assign a contact to an object (device, circuit, etc.)
- **PATCH** `update_contact_assignment` — Update a contact assignment
- **DELETE** `delete_contact_assignment` — Delete a contact assignment
- **GET** `list_providers` — List circuit providers (ISPs, carriers)
- **POST** `create_provider` — Create a circuit provider
- **GET** `get_provider` — Get a specific provider
- **PATCH** `update_provider` — Update a provider
- **DELETE** `delete_provider` — Delete a provider
- **GET** `list_circuit_types` — List circuit types (Internet, MPLS, dark fiber, etc.)
- **POST** `create_circuit_type` — Create a circuit type
- **GET** `get_circuit_type` — Get a specific circuit type
- **PATCH** `update_circuit_type` — Update a circuit type
- **DELETE** `delete_circuit_type` — Delete a circuit type
- **GET** `list_circuits` — List all circuits
- **GET** `get_circuit` — Get a specific circuit
- **POST** `create_circuit` — Create a circuit
- **PATCH** `update_circuit` — Update a circuit
- **DELETE** `delete_circuit` — Delete a circuit
- **GET** `list_circuit_terminations` — List circuit terminations (A-side and Z-side endpoints)
- **POST** `create_circuit_termination` — Create a circuit termination (A or Z side)
- **GET** `get_circuit_termination` — Get a specific circuit termination
- **PATCH** `update_circuit_termination` — Update a circuit termination
- **DELETE** `delete_circuit_termination` — Delete a circuit termination
- **GET** `paths_circuit_termination` — Trace cable paths from a circuit termination
- **GET** `list_provider_accounts` — List provider accounts (a customer's account number with a provider)
- **GET** `get_provider_account` — Get a specific provider account
- **POST** `create_provider_account` — Create a provider account
- **PATCH** `update_provider_account` — Update a provider account
- **DELETE** `delete_provider_account` — Delete a provider account
- **GET** `list_provider_networks` — List provider networks (the far end of a circuit -- a provider's MPLS cloud, peering fabric, etc.)
- **GET** `get_provider_network` — Get a specific provider network
- **POST** `create_provider_network` — Create a provider network
- **PATCH** `update_provider_network` — Update a provider network
- **DELETE** `delete_provider_network` — Delete a provider network
- **GET** `list_circuit_groups` — List circuit groups (logical grouping of related circuits, e.g. SD-WAN underlays)
- **GET** `get_circuit_group` — Get a specific circuit group
- **POST** `create_circuit_group` — Create a circuit group
- **PATCH** `update_circuit_group` — Update a circuit group
- **DELETE** `delete_circuit_group` — Delete a circuit group
- **GET** `list_circuit_group_assignments` — List circuit-to-group assignments with priorities
- **GET** `get_circuit_group_assignment` — Get a specific circuit group assignment
- **POST** `create_circuit_group_assignment` — Assign a circuit (or virtual circuit) to a circuit group
- **PATCH** `update_circuit_group_assignment` — Update a circuit group assignment
- **DELETE** `delete_circuit_group_assignment` — Delete a circuit group assignment
- **GET** `list_virtual_circuit_types` — List virtual circuit types (classification of virtual circuits, NetBox 4.2+)
- **GET** `get_virtual_circuit_type` — Get a specific virtual circuit type
- **POST** `create_virtual_circuit_type` — Create a virtual circuit type
- **PATCH** `update_virtual_circuit_type` — Update a virtual circuit type
- **DELETE** `delete_virtual_circuit_type` — Delete a virtual circuit type
- **GET** `list_virtual_circuits` — List virtual circuits (logical end-to-end paths that run over a provider network, NetBox 4.2+)
- **GET** `get_virtual_circuit` — Get a specific virtual circuit
- **POST** `create_virtual_circuit` — Create a virtual circuit
- **PATCH** `update_virtual_circuit` — Update a virtual circuit
- **DELETE** `delete_virtual_circuit` — Delete a virtual circuit
- **GET** `list_virtual_circuit_terminations` — List virtual circuit terminations (endpoints of virtual circuits on interfaces)
- **GET** `get_virtual_circuit_termination` — Get a specific virtual circuit termination
- **POST** `create_virtual_circuit_termination` — Terminate a virtual circuit on a physical interface
- **PATCH** `update_virtual_circuit_termination` — Update a virtual circuit termination
- **DELETE** `delete_virtual_circuit_termination` — Delete a virtual circuit termination
- **GET** `list_wireless_lan_groups` — List wireless LAN groups (hierarchical grouping of SSIDs)
- **GET** `get_wireless_lan_group` — Get a specific wireless LAN group
- **POST** `create_wireless_lan_group` — Create a wireless LAN group
- **PATCH** `update_wireless_lan_group` — Update a wireless LAN group
- **DELETE** `delete_wireless_lan_group` — Delete a wireless LAN group
- **GET** `list_wireless_lans` — List wireless LANs (SSIDs)
- **GET** `get_wireless_lan` — Get a specific wireless LAN
- **POST** `create_wireless_lan` — Create a wireless LAN (SSID)
- **PATCH** `update_wireless_lan` — Update a wireless LAN
- **DELETE** `delete_wireless_lan` — Delete a wireless LAN
- **GET** `list_wireless_links` — List wireless point-to-point links
- **GET** `get_wireless_link` — Get a specific wireless link
- **POST** `create_wireless_link` — Create a wireless point-to-point link
- **PATCH** `update_wireless_link` — Update a wireless link
- **DELETE** `delete_wireless_link` — Delete a wireless link
- **GET** `list_tunnel_groups` — List tunnel groups (logical grouping of VPN tunnels)
- **GET** `get_tunnel_group` — Get a specific tunnel group
- **POST** `create_tunnel_group` — Create a tunnel group
- **PATCH** `update_tunnel_group` — Update a tunnel group
- **DELETE** `delete_tunnel_group` — Delete a tunnel group
- **GET** `list_tunnels` — List VPN tunnels
- **GET** `get_tunnel` — Get a specific tunnel
- **POST** `create_tunnel` — Create a VPN tunnel
- **PATCH** `update_tunnel` — Update a tunnel
- **DELETE** `delete_tunnel` — Delete a tunnel
- **GET** `list_tunnel_terminations` — List tunnel terminations (per-side endpoints of a VPN tunnel)
- **GET** `get_tunnel_termination` — Get a specific tunnel termination
- **POST** `create_tunnel_termination` — Add a termination to a VPN tunnel
- **PATCH** `update_tunnel_termination` — Update a tunnel termination
- **DELETE** `delete_tunnel_termination` — Delete a tunnel termination
- **GET** `list_ike_proposals` — List IKE proposals (encryption/authentication algorithm bundles for IKE phase 1)
- **GET** `get_ike_proposal` — Get a specific IKE proposal
- **POST** `create_ike_proposal` — Create an IKE proposal
- **PATCH** `update_ike_proposal` — Update an IKE proposal
- **DELETE** `delete_ike_proposal` — Delete an IKE proposal
- **GET** `list_ike_policies` — List IKE policies (named groups of proposals + version + mode)
- **GET** `get_ike_policy` — Get a specific IKE policy
- **POST** `create_ike_policy` — Create an IKE policy
- **PATCH** `update_ike_policy` — Update an IKE policy
- **DELETE** `delete_ike_policy` — Delete an IKE policy
- **GET** `list_ipsec_proposals` — List IPSec proposals (encryption/auth bundles for IPSec phase 2)
- **GET** `get_ipsec_proposal` — Get a specific IPSec proposal
- **POST** `create_ipsec_proposal` — Create an IPSec proposal
- **PATCH** `update_ipsec_proposal` — Update an IPSec proposal
- **DELETE** `delete_ipsec_proposal` — Delete an IPSec proposal
- **GET** `list_ipsec_policies` — List IPSec policies (named bundles of IPSec proposals + PFS group)
- **GET** `get_ipsec_policy` — Get a specific IPSec policy
- **POST** `create_ipsec_policy` — Create an IPSec policy
- **PATCH** `update_ipsec_policy` — Update an IPSec policy
- **DELETE** `delete_ipsec_policy` — Delete an IPSec policy
- **GET** `list_ipsec_profiles` — List IPSec profiles (combination of IKE policy + IPSec policy + mode -- attach to a tunnel)
- **GET** `get_ipsec_profile` — Get a specific IPSec profile
- **POST** `create_ipsec_profile` — Create an IPSec profile
- **PATCH** `update_ipsec_profile` — Update an IPSec profile
- **DELETE** `delete_ipsec_profile` — Delete an IPSec profile
- **GET** `list_l2vpns` — List L2VPN instances (VPLS, VXLAN, EVPN, etc.)
- **GET** `get_l2vpn` — Get a specific L2VPN
- **POST** `create_l2vpn` — Create an L2VPN instance
- **PATCH** `update_l2vpn` — Update an L2VPN
- **DELETE** `delete_l2vpn` — Delete an L2VPN
- **GET** `list_l2vpn_terminations` — List L2VPN terminations (attachments of VLANs/interfaces/VRFs to an L2VPN)
- **GET** `get_l2vpn_termination` — Get a specific L2VPN termination
- **POST** `create_l2vpn_termination` — Attach an interface, VLAN, or VRF to an L2VPN
- **PATCH** `update_l2vpn_termination` — Update an L2VPN termination
- **DELETE** `delete_l2vpn_termination` — Delete an L2VPN termination
- **GET** `list_tags` — List all tags
- **POST** `create_tag` — Create a tag
- **GET** `get_tag` — Get a specific tag
- **PATCH** `update_tag` — Update a tag
- **DELETE** `delete_tag` — Delete a tag
- **GET** `list_custom_fields` — List all custom field definitions
- **GET** `get_custom_field` — Get a specific custom field definition
- **POST** `create_custom_field` — Create a custom field definition. Assign to object types via object_types array.
- **PATCH** `update_custom_field` — Update a custom field definition
- **DELETE** `delete_custom_field` — Delete a custom field definition. WARNING: deletes all stored values.
- **GET** `list_custom_field_choice_sets` — List all custom field choice sets
- **GET** `get_custom_field_choice_set` — Get a specific custom field choice set
- **POST** `create_custom_field_choice_set` — Create a custom field choice set for select/multiselect custom fields
- **PATCH** `update_custom_field_choice_set` — Update a custom field choice set
- **DELETE** `delete_custom_field_choice_set` — Delete a custom field choice set. WARNING: breaks any custom fields referencing this set.
- **GET** `list_object_changes` — List the change log — every create/update/delete on any NetBox object is recorded with timestamp, user, action, and pre/post-change snapshots. Use to audit who changed what and when.
- **GET** `list_journal_entries` — List journal entries (change notes on objects)
- **POST** `create_journal_entry` — Create a journal entry on an object
- **GET** `list_config_contexts` — List configuration contexts (rendered config data for devices/VMs)
- **POST** `create_config_context` — Create a configuration context
- **GET** `get_config_context` — Get a specific config context
- **PATCH** `update_config_context` — Update a config context
- **DELETE** `delete_config_context` — Delete a config context
- **GET** `get_journal_entry` — Get a specific journal entry
- **PATCH** `update_journal_entry` — Update a journal entry
- **DELETE** `delete_journal_entry` — Delete a journal entry
- **GET** `list_config_templates` — List config templates (Jinja2 templates rendered against config-context data)
- **GET** `get_config_template` — Get a specific config template
- **POST** `create_config_template` — Create a config template
- **PATCH** `update_config_template` — Update a config template
- **DELETE** `delete_config_template` — Delete a config template
- **POST** `render_config_template` — Render a config template with the supplied context. Returns text/plain or JSON.
- **GET** `list_webhooks` — List webhooks (HTTP callbacks that fire on object events)
- **GET** `get_webhook` — Get a specific webhook
- **POST** `create_webhook` — Create a webhook. Webhooks are now decoupled from triggers -- use event-rules to bind a webhook to a model + event.
- **PATCH** `update_webhook` — Update a webhook
- **DELETE** `delete_webhook` — Delete a webhook
- **GET** `list_event_rules` — List event rules (binding: model + event type -> action target like webhook or script)
- **GET** `get_event_rule` — Get a specific event rule
- **POST** `create_event_rule` — Create an event rule
- **PATCH** `update_event_rule` — Update an event rule
- **DELETE** `delete_event_rule` — Delete an event rule
- **GET** `list_scripts` — List installed custom scripts. NetBox 4.0+ merged reports into scripts. Each script has a module + name and is identified by id (or 'module.ClassName' string).

- **GET** `get_script` — Get script details (parameters schema, module info)
- **POST** `run_script` — Execute a custom script. Returns a job ID; poll /core/jobs/{job_id}/ for status. Data must match the script's declared parameters.

- **GET** `list_export_templates` — List export templates (Jinja2 templates that render lists of objects to CSV/JSON/text)
- **GET** `get_export_template` — Get a specific export template
- **POST** `create_export_template` — Create an export template
- **PATCH** `update_export_template` — Update an export template
- **DELETE** `delete_export_template` — Delete an export template
- **GET** `list_saved_filters` — List saved filters (reusable URL query parameter sets per object type)
- **GET** `get_saved_filter` — Get a specific saved filter
- **POST** `create_saved_filter` — Create a saved filter
- **PATCH** `update_saved_filter` — Update a saved filter
- **DELETE** `delete_saved_filter` — Delete a saved filter
- **GET** `list_custom_links` — List custom links (extra UI buttons shown on object pages)
- **GET** `get_custom_link` — Get a specific custom link
- **POST** `create_custom_link` — Create a custom link
- **PATCH** `update_custom_link` — Update a custom link
- **DELETE** `delete_custom_link` — Delete a custom link
- **GET** `list_bookmarks` — List bookmarks (user-specific bookmarks of NetBox objects)
- **GET** `get_bookmark` — Get a specific bookmark
- **POST** `create_bookmark` — Create a bookmark
- **DELETE** `delete_bookmark` — Delete a bookmark
- **GET** `list_notifications` — List notifications (in-app messages for users, NetBox 4.1+)
- **GET** `get_notification` — Get a specific notification
- **POST** `create_notification` — Create a notification (typically used by automation, not humans)
- **PATCH** `update_notification` — Mark notification as read by setting 'read' to a datetime
- **DELETE** `delete_notification` — Delete a notification
- **GET** `list_notification_groups` — List notification groups (sets of users + groups that receive event-rule notifications)
- **GET** `get_notification_group` — Get a specific notification group
- **POST** `create_notification_group` — Create a notification group
- **PATCH** `update_notification_group` — Update a notification group
- **DELETE** `delete_notification_group` — Delete a notification group
- **GET** `list_subscriptions` — List subscriptions (per-user follow lists for specific objects)
- **GET** `get_subscription` — Get a specific subscription
- **POST** `create_subscription` — Subscribe a user to events on an object
- **DELETE** `delete_subscription` — Delete a subscription
- **GET** `list_image_attachments` — List image attachments (rack diagrams, photos, etc. attached to NetBox objects)
- **GET** `get_image_attachment` — Get a specific image attachment
- **POST** `create_image_attachment` — Attach an image to an object. Uses multipart/form-data with the image bytes.
- **PATCH** `update_image_attachment` — Update image attachment metadata (name)
- **DELETE** `delete_image_attachment` — Delete an image attachment
- **GET** `get_dashboard` — Get the current user's dashboard configuration (singleton -- not a list endpoint)
- **PATCH** `update_dashboard` — Update the current user's dashboard layout
- **GET** `list_users` — List NetBox users. Admin-only endpoint.
- **GET** `get_user` — Get a specific user
- **POST** `create_user` — Create a NetBox user
- **PATCH** `update_user` — Update a user. Passing 'password' resets the password.
- **DELETE** `delete_user` — Delete a user
- **GET** `list_groups` — List user groups
- **GET** `get_group` — Get a specific group
- **POST** `create_group` — Create a user group
- **PATCH** `update_group` — Update a group
- **DELETE** `delete_group` — Delete a group
- **GET** `list_permissions` — List object permissions (per-model + per-action grants assigned to users/groups)
- **GET** `get_permission` — Get a specific permission
- **POST** `create_permission` — Create an object permission
- **PATCH** `update_permission` — Update a permission
- **DELETE** `delete_permission` — Delete a permission
- **GET** `list_tokens` — List API tokens. Admin sees all; regular users see only their own.
- **GET** `get_token` — Get a specific token (key shown only on create)
- **POST** `create_token` — Issue a new API token for a user. The 'key' field in the response is shown only once.
- **PATCH** `update_token` — Update token metadata (description, expiry, allowed IPs)
- **DELETE** `delete_token` — Revoke a token
- **POST** `provision_token` — Issue a token by username+password without an existing token. Bootstrap-only endpoint. Returns the new token in the response body.

- **GET** `list_data_sources` — List core data sources (git/S3/local paths used to sync templates, scripts, contexts)
- **GET** `get_data_source` — Get a specific data source
- **POST** `create_data_source` — Create a data source
- **PATCH** `update_data_source` — Update a data source
- **DELETE** `delete_data_source` — Delete a data source
- **POST** `sync_data_source` — Enqueue a sync job for the data source. Returns job ID; poll /core/jobs/{id}/.
- **GET** `list_data_files` — List data files (read-only listing of files synced from data sources)
- **GET** `get_data_file` — Get a specific data file (metadata + content)
- **GET** `list_jobs` — List background jobs (script runs, data syncs, etc.)
- **GET** `get_job` — Get a specific job (status, started/completed times, output data)
- **GET** `list_object_types` — List Django ContentTypes (app_label.model strings used in object_type fields)
- **GET** `get_object_type` — Get a specific object type
- **GET** `list_background_queues` — List RQ background queues with statistics
- **GET** `list_background_workers` — List active background workers
- **GET** `list_background_tasks` — List background tasks (RQ jobs)

## Which DADLs are related to NetBox?

- [Xen Orchestra](https://www.dadl.ai/d/xen-orchestra/) — Xen Orchestra REST API (XO 6.4+, current through 6.5) -- complete coverage: VMs (incl. PATCH update + snapshot revert), VM controllers, hosts, pools, storage (SR/VDI/VBD), networks (VIF/PIF/PBD), VM/VDI snapshots, VM templates, hardware (PCI/PGPU/SM), tasks, backups (jobs/logs/repositories/restore), schedules, messages, alarms, events (SSE), RBAC v2 (users/groups/acl-roles/acl-privileges), proxies, servers, dashboards, auth tokens, SDN traffic rules, health check
- [BookStack](https://www.dadl.ai/d/bookstack/) — BookStack wiki and documentation platform REST API -- shelves, books, chapters, pages (HTML/Markdown content), attachments, image gallery, comments, cross-entity search, exports (HTML/Markdown/PDF/ZIP), ZIP imports, users, roles, content permissions, recycle bin, audit log and tags. Hierarchy: shelves > books > chapters > pages.
- [Mempool](https://www.dadl.ai/d/mempool/) — mempool.space — Bitcoin block explorer, mempool visualizer, fee estimator, Lightning Network explorer, and transaction accelerator
- [Mikrotik](https://www.dadl.ai/d/mikrotik/) — MikroTik RouterOS REST API -- manage interfaces, IP addresses, routing, firewall, DHCP, DNS, PPP, queues, wireless, system configuration, users, certificates, files, logs, and diagnostics on RouterOS v7.1+ devices
- [Tailscale](https://www.dadl.ai/d/tailscale/) — Tailscale API -- devices, users, auth keys, DNS, ACL/policy, webhooks, contacts, posture integrations, log streaming, and tailnet settings
- [Hetzner Cloud](https://www.dadl.ai/d/hetzner-cloud/) — Hetzner Cloud API -- servers, volumes, networks, load balancers, firewalls, floating IPs, primary IPs, images, SSH keys, placement groups, certificates, and infrastructure metadata

---

**Canonical URL:** https://www.dadl.ai/d/netbox/
**Raw DADL:** https://github.com/DunkelCloud/dadl-registry/blob/main/netbox.dadl
