---
title: "Create Transit Gateway"
method: POST
path: "/v2/cloud-gateways/networks/{networkId}/transit-gateways"
tags: ["Transit Gateways"]
---

# Create Transit Gateway

`POST /v2/cloud-gateways/networks/{networkId}/transit-gateways`

Creates a new transit gateway for a given network.

## Path parameters

- `networkId` string, uuid, required

## Request body

- union — Request schema for creating a transit gateway.
  - object
    - `name` string, required — Human-readable name of the transit gateway.
    - `dns_config` object[] — List of mappings from remote DNS server IP address sets to proxied internal domains, for a transit gateway attachment.
      - `remote_dns_server_ip_addresses` string[], required — Remote DNS Server IP Addresses to connect to for resolving internal DNS via a transit gateway.
      - `domain_proxy_list` string[], required — Internal domain names to proxy for DNS resolution from the listed remote DNS server IP addresses, for a transit gateway.
    - `cidr_blocks` string[], required — CIDR blocks for constructing a route table for the transit gateway, when attaching to the owning network.
    - `transit_gateway_attachment_config` AwsTransitGatewayAttachmentConfig, required
      - `kind` 'aws-transit-gateway-attachment', required
      - `transit_gateway_id` string, required — AWS Transit Gateway ID to create attachment to.
      - `ram_share_arn` string, required — Resource Share ARN to verify request to create transit gateway attachment.
  - object
    - `name` string, required — Human-readable name of the transit gateway.
    - `dns_config` object[] — List of mappings from remote DNS server IP address sets to proxied internal domains, for a transit gateway attachment.
      - `remote_dns_server_ip_addresses` string[], required — Remote DNS Server IP Addresses to connect to for resolving internal DNS via a transit gateway.
      - `domain_proxy_list` string[], required — Internal domain names to proxy for DNS resolution from the listed remote DNS server IP addresses, for a transit gateway.
    - `cidr_blocks` string[], required — CIDR blocks for constructing a route table for the transit gateway, when attaching to the owning network.
    - `transit_gateway_attachment_config` AwsVpcPeeringGatewayAttachmentConfig, required
      - `kind` 'aws-vpc-peering-attachment', required
      - `peer_account_id` string, required
      - `peer_vpc_id` string, required
      - `peer_vpc_region` string, required
  - object
    - `name` string, required — Human-readable name of the transit gateway.
    - `dns_config` object[] — List of mappings from remote DNS server IP address sets to proxied internal domains, for a transit gateway attachment.
      - `remote_dns_server_ip_addresses` string[], required — Remote DNS Server IP Addresses to connect to for resolving internal DNS via a transit gateway.
      - `domain_proxy_list` string[], required — Internal domain names to proxy for DNS resolution from the listed remote DNS server IP addresses, for a transit gateway.
    - `transit_gateway_attachment_config` AzureVNETPeeringAttachmentConfig, required
      - `kind` 'azure-vnet-peering-attachment', required
      - `tenant_id` string, required — Tenant ID for the Azure VNET Peering attachment.
      - `subscription_id` string, required — Subscription ID for the Azure VNET Peering attachment.
      - `resource_group_name` string, required — Resource Group Name for the Azure VNET Peering attachment.
      - `vnet_name` string, required — VNET Name for the Azure VNET Peering attachment.

## Response `201`

Response format for creating a transit gateway.

- union
  - AwsTransitGatewayResponse
    - `name` string, required — Human-readable name of the transit gateway.
    - `dns_config` object[], required — List of mappings from remote DNS server IP address sets to proxied internal domains, for a transit gateway attachment.
      - `remote_dns_server_ip_addresses` string[], required — Remote DNS Server IP Addresses to connect to for resolving internal DNS via a transit gateway.
      - `domain_proxy_list` string[], required — Internal domain names to proxy for DNS resolution from the listed remote DNS server IP addresses, for a transit gateway.
    - `cidr_blocks` string[], required — CIDR blocks for constructing a route table for the transit gateway, when attaching to the owning network.
    - `transit_gateway_attachment_config` AwsTransitGatewayAttachmentConfig, required
      - `kind` 'aws-transit-gateway-attachment', required
      - `transit_gateway_id` string, required — AWS Transit Gateway ID to create attachment to.
      - `ram_share_arn` string, required — Resource Share ARN to verify request to create transit gateway attachment.
    - `id` string, uuid, required
    - `state` 'created' | 'initializing' | 'ready' | 'terminating' | 'terminated', required — State of the transit gateway.
    - `entity_version` integer, required — Monotonically-increasing version count of the transit gateway, to indicate the order of updates to the transit gateway.
    - `created_at` string, date-time, required — An RFC-3339 timestamp representation of transit gateway creation date.
    - `updated_at` string, date-time, required — An RFC-3339 timestamp representation of transit gateway update date.
  - AwsVpcPeeringGatewayResponse
    - `name` string, required — Human-readable name of the transit gateway.
    - `dns_config` object[], required — List of mappings from remote DNS server IP address sets to proxied internal domains, for a transit gateway attachment.
      - `remote_dns_server_ip_addresses` string[], required — Remote DNS Server IP Addresses to connect to for resolving internal DNS via a transit gateway.
      - `domain_proxy_list` string[], required — Internal domain names to proxy for DNS resolution from the listed remote DNS server IP addresses, for a transit gateway.
    - `cidr_blocks` string[], required — CIDR blocks for constructing a route table for the transit gateway, when attaching to the owning network.
    - `transit_gateway_attachment_config` AwsVpcPeeringGatewayAttachmentConfig, required
      - `kind` 'aws-vpc-peering-attachment', required
      - `peer_account_id` string, required
      - `peer_vpc_id` string, required
      - `peer_vpc_region` string, required
    - `id` string, uuid, required
    - `state` 'created' | 'initializing' | 'ready' | 'terminating' | 'terminated', required — State of the transit gateway.
    - `entity_version` integer, required — Monotonically-increasing version count of the transit gateway, to indicate the order of updates to the transit gateway.
    - `created_at` string, date-time, required — An RFC-3339 timestamp representation of transit gateway creation date.
    - `updated_at` string, date-time, required — An RFC-3339 timestamp representation of transit gateway update date.
  - AzureTransitGatewayResponse
    - `name` string, required — Human-readable name of the transit gateway.
    - `dns_config` object[], required — List of mappings from remote DNS server IP address sets to proxied internal domains, for a transit gateway attachment.
      - `remote_dns_server_ip_addresses` string[], required — Remote DNS Server IP Addresses to connect to for resolving internal DNS via a transit gateway.
      - `domain_proxy_list` string[], required — Internal domain names to proxy for DNS resolution from the listed remote DNS server IP addresses, for a transit gateway.
    - `transit_gateway_attachment_config` AzureVNETPeeringAttachmentConfig, required
      - `kind` 'azure-vnet-peering-attachment', required
      - `tenant_id` string, required — Tenant ID for the Azure VNET Peering attachment.
      - `subscription_id` string, required — Subscription ID for the Azure VNET Peering attachment.
      - `resource_group_name` string, required — Resource Group Name for the Azure VNET Peering attachment.
      - `vnet_name` string, required — VNET Name for the Azure VNET Peering attachment.
    - `id` string, uuid, required
    - `state` 'created' | 'initializing' | 'ready' | 'terminating' | 'terminated', required — State of the transit gateway.
    - `entity_version` integer, required — Monotonically-increasing version count of the transit gateway, to indicate the order of updates to the transit gateway.
    - `created_at` string, date-time, required — An RFC-3339 timestamp representation of transit gateway creation date.
    - `updated_at` string, date-time, required — An RFC-3339 timestamp representation of transit gateway update date.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict

## Changes

- **2025-03-05** `ceb048468954` — 1 breaking, 1 info
  - added `#/components/schemas/AwsVpcPeeringGatewayResponse` to the response body `oneOf` list for the response status `201`
  - added `#/components/schemas/CreateAwsVpcPeeringGateway` to the request body `oneOf` list
- **2025-02-10** `d833d4dbb1fa` — 1 warning
  - added the new `missing_reference` enum value to the `allOf[subschema #2]/invalid_parameters/items/oneOf[#/components/schemas/InvalidParameterStandard]/rule` response property for the response status `400`
- **2024-11-11** `08ead66e9ebb` — 12 breaking, 6 warning, 2 info
  - added `#/components/schemas/AwsTransitGatewayResponse, #/components/schemas/AzureTransitGatewayResponse` to the response body `oneOf` list for the response status `201`
  - the response's body type changed from `object` to no type for status `201`
  - added `#/components/schemas/InvalidParameterMaximumLength` to the `allOf[subschema #2]/invalid_parameters/items/` response property `oneOf` list for the response status `400`
  - removed the required property `cidr_blocks` from the response with the `201` status
  - …16 more

[Change history](https://skmtc.dev/kong/apis/konnect-api/changes/v2/cloud-gateways/networks/:networkId/transit-gateways/post.md)

---

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