---
title: "Attach a network to a jail"
method: POST
path: "/jail/{ctid}/networks"
tags: ["Jail"]
---

# Attach a network to a jail

`POST /jail/{ctid}/networks`

## Request

- Base URL: `https://sylve.lan:8181/api`
- URL: `https://sylve.lan:8181/api/jail/{ctid}/networks`
- Auth: API key in header `Authorization`

Create a network attachment for an inactive jail. The jail must not inherit host networking, and a filtered switch requires an explicit access or trunk VLAN policy.

## Path parameters

- `ctid` integer, required

## Request body

- GithubComAlchemillahqSylveInternalInterfacesServicesJailAddJailNetworkRequest
  - `defaultGateway` boolean
  - `dhcp` boolean
  - `ip4` integer
  - `ip4Raw` string
  - `ip4gw` integer
  - `ip4gwRaw` string
  - `ip6` integer
  - `ip6Raw` string
  - `ip6gw` integer
  - `ip6gwRaw` string
  - `macId` integer
  - `macRaw` string
  - `name` string, required
  - `slaac` boolean
  - `switchName` string, required
  - `vlanPolicy` GithubComAlchemillahqSylvePkgNetworkBridgevlanPortPolicy
    - `mode` string
    - `taggedVlans` integer[]
    - `untaggedVlan` integer

## Response `201`

Created

- GithubComAlchemillahqSylveInternalAPIResponseGithubComAlchemillahqSylveInternalDbModelsJailNetwork
  - `data` GithubComAlchemillahqSylveInternalDbModelsJailNetwork
    - `attachment` GithubComAlchemillahqSylveInternalNetworkAttachmentContract
      - `defaultAccessVlan` integer
      - `kind` 'vm' | 'jail'
      - `switchName` string
      - `switchType` string
      - `version` integer
      - `vlanFiltering` boolean
      - `vlanPolicy` GithubComAlchemillahqSylvePkgNetworkBridgevlanPortPolicy
        - `mode` string
        - `taggedVlans` integer[]
        - `untaggedVlan` integer
    - `defaultGateway` boolean
    - `dhcp` boolean
    - `id` integer
    - `ipv4GwId` integer
    - `ipv4GwObj` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
      - `autoUpdate` boolean
      - `createdAt` string
      - `description` string
      - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
        - `createdAt` string
        - `id` integer
        - `objectId` integer
        - `updatedAt` string
        - `value` string: IP, CIDR, port, country code, FQDN, etc.
      - `id` integer
      - `isUsed` boolean
      - `isUsedBy` string
      - `lastRefreshAt` string
      - `lastRefreshError` string
      - `name` string
      - `refreshIntervalSeconds` integer
      - `resolutionChecksum` string
      - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
        - `createdAt` string
        - `id` integer
        - `objectId` integer
        - `resolvedIp` string: deprecated mirror for resolved IP entries
        - `resolvedValue` string
        - `updatedAt` string
      - `sourceChecksum` string
      - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
      - `updatedAt` string
      - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
        - `id` integer
        - `name` string
        - `type` string
    - `ipv4Id` integer
    - `ipv4Obj` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
      - `autoUpdate` boolean
      - `createdAt` string
      - `description` string
      - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
        - `createdAt` string
        - `id` integer
        - `objectId` integer
        - `updatedAt` string
        - `value` string: IP, CIDR, port, country code, FQDN, etc.
      - `id` integer
      - `isUsed` boolean
      - `isUsedBy` string
      - `lastRefreshAt` string
      - `lastRefreshError` string
      - `name` string
      - `refreshIntervalSeconds` integer
      - `resolutionChecksum` string
      - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
        - `createdAt` string
        - `id` integer
        - `objectId` integer
        - `resolvedIp` string: deprecated mirror for resolved IP entries
        - `resolvedValue` string
        - `updatedAt` string
      - `sourceChecksum` string
      - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
      - `updatedAt` string
      - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
        - `id` integer
        - `name` string
        - `type` string
    - `ipv6GwId` integer
    - `ipv6GwObj` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
      - `autoUpdate` boolean
      - `createdAt` string
      - `description` string
      - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
        - `createdAt` string
        - `id` integer
        - `objectId` integer
        - `updatedAt` string
        - `value` string: IP, CIDR, port, country code, FQDN, etc.
      - `id` integer
      - `isUsed` boolean
      - `isUsedBy` string
      - `lastRefreshAt` string
      - `lastRefreshError` string
      - `name` string
      - `refreshIntervalSeconds` integer
      - `resolutionChecksum` string
      - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
        - `createdAt` string
        - `id` integer
        - `objectId` integer
        - `resolvedIp` string: deprecated mirror for resolved IP entries
        - `resolvedValue` string
        - `updatedAt` string
      - `sourceChecksum` string
      - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
      - `updatedAt` string
      - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
        - `id` integer
        - `name` string
        - `type` string
    - `ipv6Id` integer
    - `ipv6Obj` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
      - `autoUpdate` boolean
      - `createdAt` string
      - `description` string
      - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
        - `createdAt` string
        - `id` integer
        - `objectId` integer
        - `updatedAt` string
        - `value` string: IP, CIDR, port, country code, FQDN, etc.
      - `id` integer
      - `isUsed` boolean
      - `isUsedBy` string
      - `lastRefreshAt` string
      - `lastRefreshError` string
      - `name` string
      - `refreshIntervalSeconds` integer
      - `resolutionChecksum` string
      - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
        - `createdAt` string
        - `id` integer
        - `objectId` integer
        - `resolvedIp` string: deprecated mirror for resolved IP entries
        - `resolvedValue` string
        - `updatedAt` string
      - `sourceChecksum` string
      - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
      - `updatedAt` string
      - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
        - `id` integer
        - `name` string
        - `type` string
    - `jid` integer
    - `macId` integer
    - `macObj` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
      - `autoUpdate` boolean
      - `createdAt` string
      - `description` string
      - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
        - `createdAt` string
        - `id` integer
        - `objectId` integer
        - `updatedAt` string
        - `value` string: IP, CIDR, port, country code, FQDN, etc.
      - `id` integer
      - `isUsed` boolean
      - `isUsedBy` string
      - `lastRefreshAt` string
      - `lastRefreshError` string
      - `name` string
      - `refreshIntervalSeconds` integer
      - `resolutionChecksum` string
      - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
        - `createdAt` string
        - `id` integer
        - `objectId` integer
        - `resolvedIp` string: deprecated mirror for resolved IP entries
        - `resolvedValue` string
        - `updatedAt` string
      - `sourceChecksum` string
      - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
      - `updatedAt` string
      - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
        - `id` integer
        - `name` string
        - `type` string
    - `manualSwitch` GithubComAlchemillahqSylveInternalDbModelsNetworkManualSwitch
      - `bridge` string
      - `createdAt` string
      - `defaultAccessVlan` integer
      - `id` integer
      - `name` string
      - `updatedAt` string
      - `vlanFiltering` boolean
      - `vlanStateAvailable` boolean
      - `vlanStateError` string
    - `name` string
    - `slaac` boolean
    - `standardSwitch` GithubComAlchemillahqSylveInternalDbModelsNetworkStandardSwitch
      - `address` string
      - `address6` string
      - `address6Id` integer
      - `address6Obj` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
        - `autoUpdate` boolean
        - `createdAt` string
        - `description` string
        - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `updatedAt` string
          - `value` string: IP, CIDR, port, country code, FQDN, etc.
        - `id` integer
        - `isUsed` boolean
        - `isUsedBy` string
        - `lastRefreshAt` string
        - `lastRefreshError` string
        - `name` string
        - `refreshIntervalSeconds` integer
        - `resolutionChecksum` string
        - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `resolvedIp` string: deprecated mirror for resolved IP entries
          - `resolvedValue` string
          - `updatedAt` string
        - `sourceChecksum` string
        - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
        - `updatedAt` string
        - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
          - `id` integer
          - `name` string
          - `type` string
      - `addressId` integer
      - `addressObj` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
        - `autoUpdate` boolean
        - `createdAt` string
        - `description` string
        - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `updatedAt` string
          - `value` string: IP, CIDR, port, country code, FQDN, etc.
        - `id` integer
        - `isUsed` boolean
        - `isUsedBy` string
        - `lastRefreshAt` string
        - `lastRefreshError` string
        - `name` string
        - `refreshIntervalSeconds` integer
        - `resolutionChecksum` string
        - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `resolvedIp` string: deprecated mirror for resolved IP entries
          - `resolvedValue` string
          - `updatedAt` string
        - `sourceChecksum` string
        - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
        - `updatedAt` string
        - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
          - `id` integer
          - `name` string
          - `type` string
      - `addresses` GithubComAlchemillahqSylveInternalDbModelsNetworkStandardSwitchAddress[]
        - `cidr` string
        - `family` integer
        - `id` integer
        - `object` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
          - `autoUpdate` boolean
          - `createdAt` string
          - `description` string
          - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
            - `createdAt` string
            - `id` integer
            - `objectId` integer
            - `updatedAt` string
            - `value` string: IP, CIDR, port, country code, FQDN, etc.
          - `id` integer
          - `isUsed` boolean
          - `isUsedBy` string
          - `lastRefreshAt` string
          - `lastRefreshError` string
          - `name` string
          - `refreshIntervalSeconds` integer
          - `resolutionChecksum` string
          - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
            - `createdAt` string
            - `id` integer
            - `objectId` integer
            - `resolvedIp` string: deprecated mirror for resolved IP entries
            - `resolvedValue` string
            - `updatedAt` string
          - `sourceChecksum` string
          - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
          - `updatedAt` string
          - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
            - `id` integer
            - `name` string
            - `type` string
        - `objectId` integer
        - `ordering` integer
        - `switchId` integer
      - `bridgeMacMode` string
      - `bridgeMacObject` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
        - `autoUpdate` boolean
        - `createdAt` string
        - `description` string
        - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `updatedAt` string
          - `value` string: IP, CIDR, port, country code, FQDN, etc.
        - `id` integer
        - `isUsed` boolean
        - `isUsedBy` string
        - `lastRefreshAt` string
        - `lastRefreshError` string
        - `name` string
        - `refreshIntervalSeconds` integer
        - `resolutionChecksum` string
        - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `resolvedIp` string: deprecated mirror for resolved IP entries
          - `resolvedValue` string
          - `updatedAt` string
        - `sourceChecksum` string
        - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
        - `updatedAt` string
        - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
          - `id` integer
          - `name` string
          - `type` string
      - `bridgeMacObjectId` integer
      - `bridgeMacSourcePort` string
      - `bridgeName` string
      - `createdAt` string
      - `defaultAccessVlan` integer
      - `defaultRoute` boolean: DefaultRoute owns the IPv4 default route for static or DHCP addressing.
      - `defaultRoute6` boolean: DefaultRoute6 owns the IPv6 default route for static or SLAAC addressing.
      - `dhcp` boolean
      - `disableBridgeOffloads` boolean: DisableBridgeOffloads keeps FreeBSD from changing bridge-member capabilities as transient tap and epair interfaces come and go. Sorts flapping issues (Please tell @hayzam if you faced flapping before/after enabling this option).
      - `disableIPv6` boolean
      - `gateway6AddressId` integer
      - `gateway6AddressObj` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
        - `autoUpdate` boolean
        - `createdAt` string
        - `description` string
        - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `updatedAt` string
          - `value` string: IP, CIDR, port, country code, FQDN, etc.
        - `id` integer
        - `isUsed` boolean
        - `isUsedBy` string
        - `lastRefreshAt` string
        - `lastRefreshError` string
        - `name` string
        - `refreshIntervalSeconds` integer
        - `resolutionChecksum` string
        - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `resolvedIp` string: deprecated mirror for resolved IP entries
          - `resolvedValue` string
          - `updatedAt` string
        - `sourceChecksum` string
        - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
        - `updatedAt` string
        - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
          - `id` integer
          - `name` string
          - `type` string
      - `gateway6Manual` string
      - `gatewayAddressId` integer
      - `gatewayAddressObj` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
        - `autoUpdate` boolean
        - `createdAt` string
        - `description` string
        - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `updatedAt` string
          - `value` string: IP, CIDR, port, country code, FQDN, etc.
        - `id` integer
        - `isUsed` boolean
        - `isUsedBy` string
        - `lastRefreshAt` string
        - `lastRefreshError` string
        - `name` string
        - `refreshIntervalSeconds` integer
        - `resolutionChecksum` string
        - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `resolvedIp` string: deprecated mirror for resolved IP entries
          - `resolvedValue` string
          - `updatedAt` string
        - `sourceChecksum` string
        - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
        - `updatedAt` string
        - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
          - `id` integer
          - `name` string
          - `type` string
      - `gatewayManual` string
      - `hostVlan` integer
      - `id` integer
      - `mtu` integer
      - `name` string
      - `network6Id` integer
      - `network6Manual` string
      - `network6Obj` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
        - `autoUpdate` boolean
        - `createdAt` string
        - `description` string
        - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `updatedAt` string
          - `value` string: IP, CIDR, port, country code, FQDN, etc.
        - `id` integer
        - `isUsed` boolean
        - `isUsedBy` string
        - `lastRefreshAt` string
        - `lastRefreshError` string
        - `name` string
        - `refreshIntervalSeconds` integer
        - `resolutionChecksum` string
        - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `resolvedIp` string: deprecated mirror for resolved IP entries
          - `resolvedValue` string
          - `updatedAt` string
        - `sourceChecksum` string
        - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
        - `updatedAt` string
        - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
          - `id` integer
          - `name` string
          - `type` string
      - `networkId` integer
      - `networkManual` string
      - `networkObj` GithubComAlchemillahqSylveInternalDbModelsNetworkObject
        - `autoUpdate` boolean
        - `createdAt` string
        - `description` string
        - `entries` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectEntry[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `updatedAt` string
          - `value` string: IP, CIDR, port, country code, FQDN, etc.
        - `id` integer
        - `isUsed` boolean
        - `isUsedBy` string
        - `lastRefreshAt` string
        - `lastRefreshError` string
        - `name` string
        - `refreshIntervalSeconds` integer
        - `resolutionChecksum` string
        - `resolutions` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectResolution[]
          - `createdAt` string
          - `id` integer
          - `objectId` integer
          - `resolvedIp` string: deprecated mirror for resolved IP entries
          - `resolvedValue` string
          - `updatedAt` string
        - `sourceChecksum` string
        - `type` string: "Host", "Mac", "Network", "Port", "Country", "List", "FQDN", "DUID"
        - `updatedAt` string
        - `usedBy` GithubComAlchemillahqSylveInternalDbModelsNetworkObjectUsage[]
          - `id` integer
          - `name` string
          - `type` string
      - `ports` GithubComAlchemillahqSylveInternalDbModelsNetworkNetworkPort[]
        - `id` integer
        - `name` string
        - `switch` GithubComAlchemillahqSylveInternalDbModelsNetworkStandardSwitch (recursive)
        - `switchId` integer
        - `vlanPolicy` GithubComAlchemillahqSylvePkgNetworkBridgevlanPortPolicy
          - `mode` string
          - `taggedVlans` integer[]
          - `untaggedVlan` integer
      - `private` boolean
      - `slaac` boolean
      - `updatedAt` string
      - `vlan` integer
      - `vlanFiltering` boolean
    - `switchId` integer
    - `switchType` string
    - `vlanPolicy` GithubComAlchemillahqSylvePkgNetworkBridgevlanPortPolicy
      - `mode` string
      - `taggedVlans` integer[]
      - `untaggedVlan` integer
  - `error` string
  - `message` string
  - `status` string

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `413`: Request Entity Too Large
- `500`: Internal Server Error
- `503`: Service Unavailable

## Changes

- **2026-08-12** `9a5026bf9057`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/alchemillahq/apis/sylve-api/changes/jail/:ctid/networks/post.md)

---

[API](https://skmtc.dev/alchemillahq/apis/sylve-api.md) - [All operations](https://skmtc.dev/alchemillahq/apis/sylve-api/llms.txt) - [OpenAPI document](https://skmtc.dev/alchemillahq/apis/sylve-api/revisions/9565cdd0abf5?raw)
