Docs

NetBox Data Exchange (NDX)

Using the NDX device-type catalog on NetBox Enterprise - availability, the one connectivity requirement, how it behaves with Branching, and how to turn it off

NetBox Data Exchange (NDX) is a curated catalog of device types with lifecycle, thermal, environmental, and operational enrichment data. It runs as a built-in plugin, so browsing the catalog, importing device types, and viewing enrichment data work exactly as they do everywhere else NDX is available — see NetBox Data Exchange for the catalog itself.

This page covers only what is specific to NetBox Enterprise.

Availability

NDX comes with all paid NetBox Enterprise licenses and is available from NetBox Enterprise 2.3.0. It is enabled by your license rather than by an installation step: once your license carries NDX, a NetBox Data Exchange (NDX) section appears in the Admin Console Config screen, and on a connected install Enable NDX is already ticked, so NDX is active after the next deploy. Air-gapped installs are the exception — the setting is there but starts unticked, for the reason in Connectivity requirement.

There is nothing to install, and no API token to obtain, store, or rotate — the credential is delivered from your license into the NetBox pod automatically. If you are on a paid license and the NDX section is not present in the Config screen, contact your account team; NDX is carried by a license entitlement that can be added without any change on your side.

Connectivity requirement

NDX reads its catalog from NetBox Labs over the internet, so the NetBox pods need outbound HTTPS to it. This is the one thing an air-gapped or tightly firewalled deployment has to act on.

Allowhttps://netboxlabs.com (path /ndx), TCP 443, outbound from the NetBox pods
Allowlist by hostnameThe catalog is served from a CDN edge, so there is no stable IP address or CIDR range to allowlist
ProxyInherited from the NetBox pods' egress proxy configuration — no NDX-specific setting. See Egress Proxy
Private CAValidated through the NetBox pods' system trust store, built from your configured CA certificates — no NDX-specific setting

NDX is not available on air-gapped installs

There is no offline catalog, so NDX has nothing to read behind a seal. On an air-gapped install Enable NDX therefore defaults to unchecked, even when the license carries the entitlement. That is a default and not a restriction: an install that was delivered by air-gap bundle but can still reach netboxlabs.com through a proxy can tick it and use NDX normally. Turn it on with no route out and the catalog simply stays empty.

Keeping the catalog current

Navigate to NDX > Sync Status in NetBox to see what has changed since the last sync and to trigger a sync on demand.

Catalog updates are never applied automatically. NDX flags new and updated device types; you choose when to review them and re-import, so nothing in your NetBox changes without you asking for it.

Using NDX with Branching

Imported catalog data and enrichment are reference data, so NetBox Enterprise exempts NDX's tables from NetBox Branching. In practice:

  • An import made in a branch is visible everywhere immediately, not just in that branch.
  • NDX imports and enrichment do not appear in a branch's diff, and are not part of what a merge applies.
  • The device types NDX creates are ordinary NetBox objects, so any later edits you make to them behave like any other change and are branch-scoped.

Import catalog data on the main branch if you want the change history to read cleanly.

Turning NDX off

Untick Enable NDX in the Config screen and deploy, or on Helm set:

netboxEnterprise:
  spec:
    plugins:
      ndx:
        enabled: false

This needs no connectivity and no license change. Imported data is kept — disabling stops NetBox from loading the plugin, and leaves the device types you imported and NDX's own tables intact. Re-enabling restores access to them with no re-import.

Losing the NDX entitlement — at renewal, or on a downgrade — has the same effect and the same outcome: NDX stops loading, NetBox keeps running, and your data stays.

Troubleshooting

The catalog says "No entries found", and no error is shown

NDX is designed to fail soft — a catalog call that does not succeed returns nothing rather than raising an error — so two different faults both surface as an empty catalog. NetBox itself is unaffected either way: health checks do not depend on NDX, and the rest of NetBox keeps working normally.

Either the network is blocked, or the token is being refused. The NetBox pod log tells you which:

kubectl logs deploy/<release>-netbox | grep netbox_ndx
  • A connection timeout or refusal to netboxlabs.com:443 means egress. Confirm the allowlist covers the hostname rather than an IP, and that any egress proxy is reachable from the NetBox pods.
  • 401 Client Error: Unauthorized means the catalog was reached and the token was refused — expired, revoked, or not valid for your license. Contact your account team; nothing in the cluster can fix it.

On NetBox Enterprise 2.3.0 the interface does not distinguish these cases for you, and the NDX > Sync Status page can omit its API Connection card entirely in the 401 case rather than reporting the token as invalid. A sync run in that state may also report success while importing nothing.

One caveat when testing: successful catalog responses are cached for about five minutes, so an instance that was working keeps serving results briefly after a token stops being accepted.

The NDX section is missing from the Config screen

Your license does not carry NDX. If you are on a paid license, the entitlement that carries NDX has not been set on it yet — nothing in the cluster changes this, so contact your account team.

NetBox reports NdxReady=False

spec.plugins.ndx.enabled is true but the license carries no NDX entitlement, so NetBox Enterprise did not activate the plugin. This is deliberate: the plugin requires its API token, and enabling it without one would stop NetBox from starting. Nothing is broken — NetBox is healthy, and NDX activates on its own once the entitlement is in place.

kubectl get netboxenterprise -o jsonpath='{.items[*].status.conditions}' | jq '.[] | select(.type=="NdxReady")'

Next steps

On this page