---
title: "Create IP Block"
method: POST
path: "/v2/org/{org}/nico/ipblock"
tags: ["IP Block"]
---

# Create IP Block

`POST /v2/org/{org}/nico/ipblock`

Create an IP block for the org.

Only Infrastructure Providers can create a root IP Block. User must have authorization role with `PROVIDER_ADMIN` suffix.

Tenant IP Blocks are created via Allocation.

## Request body

- IpBlockCreateRequest — Request data for creating IP block
  - `name` string, required — Name of the IP Block
  - `description` string, nullable — Description of the IP Block
  - `siteId` string, uuid, required — ID of the site
  - `routingType` 'Public' | 'DatacenterOnly', required — Routing type of the IP Block
  - `prefix` string, required — Either IPv4 or IPv6 address
  - `prefixLength` integer, required — Min: 1, Max: 32 for IPv4, 128 for IPv6
  - `protocolVersion` 'IPv4' | 'IPv6', required — Version of the ip network ipv4 or ipv6

## Response `201`

Created

- IpBlock — IP block contains information about an IPv4 address pool owned by the Infrastructure Provider and assigned as an overlay network for a particular Site. It is equivalent to Network Resource in product terminology.
  - `id` string, uuid — Unique UUID v4 identifier for the IP Block
  - `name` string — Name of the IP Block
  - `description` string, nullable — Description of the IP Block
  - `siteId` string, uuid — ID of the Site
  - `infrastructureProviderId` string, uuid — ID of the Infrastructure Provider
  - `tenantId` string, uuid, nullable — ID of the Tenant
  - `routingType` 'Public' | 'DatacenterOnly' — RoutingType of the IP Block
  - `prefix` string — Either IPv4 or IPv6 address
  - `prefixLength` integer — Min: 1, Max: 32 for ipv4, 128 for ipv6
  - `protocolVersion` 'IPv4' | 'IPv6' — Version of the ip network IPv4 or IPv6
  - `usageStats` IpBlockUsageStats — Usage statistics for an IP Block, VPC Prefix or Subnet
    - `availableIPs` integer — Total number of IP addresses in the block (acquired and unused)
    - `acquiredIPs` integer — Number of individual IP addresses acquired from the block
    - `availablePrefixes` string[] — Example prefixes available to acquire
    - `availableSmallestPrefixes` integer — Total number of /30 prefixes that can still be acquired from this block (only reduced if prefixes are acquired, not reduced by acquired IPs)
    - `acquiredPrefixes` integer — Total number of prefixes (of any size) acquired from this block
  - `status` 'Pending' | 'Provisioning' | 'Ready' | 'Deleting' | 'Error' — Status values for IP Block objects
  - `statusHistory` StatusDetail[] — Chronological status history for the IP Block
    - `status` string — State of the associated entity at a particular time
    - `message` string, nullable — Description of the state and cause/remedy in case of error
    - `created` string, date-time — Date/time when the associated entity assumed the status
    - `updated` string, date-time — Date/time when the associated entity was last observed with this status
  - `created` string, date-time — Date/time when the Ip Block was created
  - `updated` string, date-time — Date/time when the Ip Block was last updated

## Other responses

- `400` — Error response when request data cannot be validated
- `403` — Error response when user is not authorized to call an endpoint or retrieve/modify objects

---

[API](https://skmtc.net/nvidia/apis/nvidia-infra-controller-rest-api.md) · [All operations](https://skmtc.net/nvidia/apis/nvidia-infra-controller-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/nvidia/nvidia-infra-controller-rest-api/revisions/4c29fe59bd4e/schema)
