Tailscale Subnet Routers

Create a Tailscale Subnet Router

Changed on

Creates a Tailscale Subnet Router on a Network and enrolls it in the user's tailnet with the auth key. The response returns the router with status provisioning. Poll GET /tailscale_subnet_routers/{id} until it is provisioned. Then approve its routes in the tailnet, unless an auto-approver covers them.

post/tailscale_subnet_routers

Request

  • Base URL: https://api.telnyx.com/v2
  • URL: https://api.telnyx.com/v2/tailscale_subnet_routers
  • Auth: HTTP bearer

Request body

namestring required

A user specified name for the router.

network_idstring uuid required

The id of the Network to attach the router to.

region_codestring required

The code of the region to create the router in. GET /network_coverage lists the regions whose available_services include tailscale_subnet_router.

advertised_routesstring[] required

IPv4 subnets of the Network that the router advertises to the tailnet. Each entry is a canonical CIDR that the Network routes. Default, loopback, link-local, multicast, and Tailscale (100.64.0.0/10) ranges are rejected. So are ranges that overlap the router's own, 172.27.254.0/24 and 198.18.0.0/20.

auth_keystring password required

A Tailscale auth key that enrolls the router in the user's tailnet: reusable, pre-approved, tagged, and not ephemeral. Telnyx stores it encrypted until enrollment succeeds, then discards it. It is never returned.

Example request

{
  "name": "tailnet-ashburn",
  "network_id": "0de011ae-ee53-4df4-ba96-754728eb5aad",
  "region_code": "ashburn-va",
  "advertised_routes": [
    "172.27.0.0/24"
  ],
  "auth_key": "tskey-auth-k1AbCdEfGh2IjKlMnOpQrStUv"
}

Response

Successful response. The router is created and provisioning has started.

Example response

{
  "data": {
    "id": "5c6f0a7e-6c7b-4d7f-9f2e-3b1e4e9a8c21",
    "record_type": "tailscale_subnet_router",
    "name": "tailnet-ashburn",
    "network_id": "0de011ae-ee53-4df4-ba96-754728eb5aad",
    "region_code": "ashburn-va",
    "advertised_routes": [
      "172.27.0.0/24"
    ],
    "status": "provisioned",
    "customer_address": "172.27.254.1",
    "device_id": "n5c6f0a7e1CNTRL",
    "tailnet_name": "acme.example",
    "tailscale_ips": [
      "100.101.2.30",
      "fd7a:115c:a1e0::2a"
    ],
    "created_at": "2026-10-13T15:04:05.123456Z",
    "updated_at": "2026-10-13T15:09:41.654321Z"
  }
}

Changes