---
title: "Create a Network Route"
method: POST
path: "/network_routes"
tags: ["Network Routes"]
---

# Create a Network Route

`POST /network_routes`

## Request

- Base URL: `https://api.telnyx.com/v2`
- URL: `https://api.telnyx.com/v2/network_routes`
- Auth: HTTP bearer

Adds a route to a Network. Traffic on the Network to an address in `cidr` goes via `next_hop`. With a tunnel as the next hop, functions on the Network reach the CIDR through the tunnel without a redeploy. A Network holds each CIDR once.

## Request body

- NetworkRouteCreate
  - `network_id` string, uuid, required: The id of the Network to add the route to.
  - `cidr` string, required: The IPv4 subnet to route, such as a subnet behind the tunnel. It must be a canonical CIDR. Default, loopback, link-local, multicast, and shared address space (`100.64.0.0/10`) ranges are rejected. So are ranges that overlap the Tailscale Subnet Router ranges, `172.27.254.0/24` and `198.18.0.0/20`, or a subnet already on the Network.
  - `next_hop` object, required: Where the Network sends traffic for `cidr`.
    - `type` 'tunnel', required: The type of the next hop.
    - `id` string, uuid, required: The id of the tunnel.

## Response `201`

Created.

- object
  - `data` NetworkRoute
    - `id` string, uuid: Identifies the resource.
    - `record_type` string: Identifies the type of the resource.
    - `network_id` string, uuid: The id of the Network the route belongs to.
    - `cidr` string: The IPv4 CIDR the route covers.
    - `next_hop` NetworkRouteNextHop: Where the Network sends traffic for the route's CIDR.
      - `type` 'tunnel' | 'wireguard_peer' | 'wireguard_interface' | 'private_wireless_gateway' | 'virtual_cross_connect' | 'ipsec_tunnel' | 'public_internet_gateway', required: The type of the next hop. Routes added with `POST /network_routes` use `tunnel`. Routes that attachments install carry the attachment's type.
      - `id` string, uuid, required: The id of the tunnel or attachment.
    - `origin` 'static' | 'attachment': `static` for a route added with `POST /network_routes`, `attachment` for a route that another resource installed and removes.
    - `status` 'pending' | 'active' | 'inactive' | 'failed': `pending` until Telnyx installs the route on the Network, then `active`. `inactive` while a tunnel next hop has no connected process. `failed` (Preview, not reported yet) when Telnyx could not install the route.
    - `created_at` string, date-time: ISO 8601 formatted date-time indicating when the resource was created.

## Other responses

- `404`: Not found: no tunnel with the `next_hop.id` exists on the account.
- `409`: Conflict: the Network already has a route for this CIDR.
- `422`: Unprocessable entity: the body failed validation. `source.pointer` names the field.
- `default`: Unexpected error

## Changes

- **2026-10-26** `0f17b8167873`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/team-telnyx/apis/telnyx-api/changes/network_routes/post.md)

---

[API](https://skmtc.dev/team-telnyx/apis/telnyx-api.md) - [All operations](https://skmtc.dev/team-telnyx/apis/telnyx-api/llms.txt) - [OpenAPI document](https://skmtc.dev/team-telnyx/apis/telnyx-api/revisions/0f17b8167873?raw)
