---
title: "Set L2VPN VLANs for user terminal"
method: PUT
path: "/public/v2/user-terminals/{deviceId}/l2vpn"
tags: ["User Terminals"]
---

# Set L2VPN VLANs for user terminal

`PUT /public/v2/user-terminals/{deviceId}/l2vpn`

Required permission: Device configuration assignment, Edit.<br/>Terminal must be on subscription that allows L2VPN. Maximum 2 circuits per Starlink PoP. Use null or empty circuit list to clear all L2VPN circuits for terminal. See /user-terminals/available-circuits for all configurable circuits and associated Starlink PoP.

## Path parameters

- `deviceId` string, required

## Request body

- L2VpnSetCircuitRequest[]
  - `circuitId` string, nullable — Deprecated field: use CircuitIds instead. Mutually exclusive with CircuitIds. Starlink generated Id of L2VPN circuit.
  - `circuitIds` string[], required — Starlink generated Ids of L2VPN circuit(s) in this circuit group. If multiple circuitIds are present then they are functioning as a redundant group and must be located at the same PoP. Mutually exclusive with deprecated CircuitId field.
  - `customerVlans` integer[], required — Customer VLANs are the inner tag and identify L2VPN customer traffic to and from a user terminal.
  - `serviceVlan` integer, nullable — Outer VLAN tag used for Q-in-Q and identifies a single ethernet virtual circuit (EVC) for a user terminal. Null or 0 if no service VLAN tag should be added.
  - `customerVlanRemap` integer, nullable — Traffic tagged with the specified customer VLAN will have that VLAN tag remapped en-route to the value of customerVlanRemap if present. If remapping is occurring then CustomerVlans must contain a single value. Set value to null or 0 for no remapping.

## Response `200`

Successfully assigned circuits

- ServiceResponse
  - `errors` ValidationResult[], nullable
    - `memberNames` string[], nullable
    - `errorMessage` string, nullable
  - `warnings` ValidationResult[], nullable
    - `memberNames` string[], nullable
    - `errorMessage` string, nullable
  - `information` string[], nullable
  - `isValid` boolean

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Missing required permission for this endpoint or resource
- `422` — Failed to assign circuits

---

[API](https://skmtc.net/starlink/apis/starlink-management-api.md) · [All operations](https://skmtc.net/starlink/apis/starlink-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/starlink/starlink-management-api/revisions/a730bd0ddb42/schema)
