Docs / Getting your data in
Getting your data into nxip
Five situations cover almost everyone. Find yours below, and go straight to the real path - no need to already know nxip's vocabulary first.
Nothing yet, starting fresh
No existing infrastructure to bring in - you're just trying nxip out, or standing up something new. Getting started walks through creating your first pool and subnet directly, with curl, in a couple of minutes.
From there, pick a declarative path once you're doing this for real: Terraform or nxip-cli.
Deployed in AWS or Azure
The path most real estates need. Read-only, no nxip account required, and nothing leaves your machine until you choose to load something in. It finds what's actually deployed, including the collisions between AWS and Azure that neither cloud's own IPAM can see, then emits a manifest that registers it exactly as it is.
npx nxip-cli scan aws azureStart with Environment discovery for the full walkthrough, including how collisions are detected, which overlaps are expected (CGNAT, link-local), and how to share a report safely.
You already know your CIDRs
Maybe it's a datacenter you can't run a scan against, a cloud nxip doesn't support yet, or you just know off the top of your head that the office VPN is 10.20.30.0/24. You don't need a scan for this - you need to register the exact block you already have, not have nxip hand you a different one.
Every path into nxip that creates a subnet takes an explicit cidr as an alternative to asking for a prefixLength and getting the next free block. Use whichever surface matches how you already work - all three register the same thing, a 10.20.0.0/16 pool for a London datacenter with the office VPN's real /24 inside it.
The API, with curl
curl -X POST https://nxip.dev/v1/pools \
-H "x-api-key: $NXIP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "London DC",
"cidr": "10.20.0.0/16",
"family": "IPV4",
"environment": "production",
"region": "dc-lon1"
}'
curl -X POST https://nxip.dev/v1/subnets \
-H "x-api-key: $NXIP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "office-vpn",
"environment": "production",
"region": "dc-lon1",
"family": "IPV4",
"cidr": "10.20.30.0/24"
}'Terraform
resource "nxip_pool" "london_dc" {
name = "London DC"
cidr = "10.20.0.0/16"
family = "IPV4"
environment = "production"
region = "dc-lon1"
}
resource "nxip_subnet" "office_vpn" {
environment = nxip_pool.london_dc.environment
region = nxip_pool.london_dc.region
family = nxip_pool.london_dc.family
cidr = "10.20.30.0/24"
}See the Terraform quick start for getting the provider and an API key set up first.
nxip-cli
$ cat datacenter.yaml
pools:
- name: London DC
cidr: 10.20.0.0/16
family: IPV4
environment: production
region: dc-lon1
subnets:
- name: office-vpn
environment: production
region: dc-lon1
family: IPV4
cidr: 10.20.30.0/24
$ nxip plan -f datacenter.yaml # dry run, nothing is written
$ nxip apply -f datacenter.yamlEither way, nxip won't hand you a different block: cidr registers exactly what you give it, and fails if it's already taken or falls outside its pool - it never silently substitutes something else.
Tracked in a spreadsheet
Guided CSV import is designed, not built yet. Today, the practical path is the one above: most spreadsheets already have name, CIDR, and region columns, which map directly onto an nxip-cli manifest. Copy them across, adjust environment names to match how you actually label things, and nxip plan will tell you exactly what it's about to create before anything happens.
Missing something you need now? Tell us.
Already in nxip, want Terraform to manage it
This is the one direction that doesn't add anything new to nxip - it's the opposite one. If you've already got pools or subnets in nxip, created by hand, by a script, or by a discovery scan, and now want Terraform managing them going forward, that's importing existing resources into Terraform, not this page.
Next: once your data is in, Terraform or nxip-cli keep it that way - allocate new space through nxip from then on, rather than reconciling it later.
