---
title: "Create a private network"
method: POST
path: "/v1/networks"
tags: ["public", "networks"]
---

# Create a private network

`POST /v1/networks`

## Request

- Base URL: `https://api.vozora.io`
- URL: `https://api.vozora.io/v1/networks`
- Auth: API key in header `Authorization`

## Headers

- `Idempotency-Key` string

## Request body

- ProvisioningPublicCreateNetworkRequest
  - `name` string

## Response `201`

Created

- ProvisioningPublicNetworkView
  - `cidr` string
  - `created_at` string
  - `failure_reason` 'terminal_error' | 'max_attempts' | 'provisioning_deadline', nullable: Why this network is in the failed state: terminal_error (the provider refused it; recreating will not help without a change), max_attempts (it was retried and never succeeded), or provisioning_deadline (it ran out of time). null on any network that has not failed.
  - `id` string
  - `member_count` integer
  - `members` ProvisioningPublicNetworkMemberView[]
    - `instance_id` string
    - `private_ip` string
    - `state` string
  - `name` string
  - `state` 'pending' | 'active' | 'deleting' | 'failed' | 'deleted': The network lifecycle state. A failed network is terminal: delete it and create a new one. See failure_reason for why it failed.
  - `updated_at` string: When this network last changed state, RFC3339 UTC.
  - `zone` string: The slug of the zone the network is in. Absent when the zone is not known. GET /v1/zones lists the zones open for new orders, so a network in a zone that has since closed to new orders names a zone that list omits.

## Other responses

- `400`: bad_request
- `401`: invalid or missing API key
- `403`: the key lacks networks:write
- `409`: idempotency_mismatch or allocation_conflict
- `422`: name_required, name_too_long, or invalid_config
- `503`: pool_exhausted

---

[API](https://skmtc.dev/vozora/apis/vozora-api.md) · [All operations](https://skmtc.dev/vozora/apis/vozora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vozora/apis/vozora-api/revisions/56f15734fc5a?raw)
