API endpoint and token are required to use the API. Prepare the information required to use the API by referring to Prepare to Use API. The Mirroring API uses a network type endpoint. For the exact endpoint, refer to serviceCatalog in the token issuance response.
| Type | Region | Endpoint |
|---|---|---|
| network | Korea (Pangyo) Region Korea (Pyeongchon) Region |
https://kr1-api-network-infrastructure.nhncloudservice.com https://kr2-api-network-infrastructure.nhncloudservice.com |
API responses may contain fields not specified in the guide. The fields are used internally by NHN Cloud and are subject to change without notice, so they are not used.
A session is a unit that mirrors traffic from a source port to a target port. If needed, you can link one or more filter groups to mirror only specific traffic.
GET /v2.0/mirroring/sessions
X-Auth-Token: {tokenId}
This API does not require a request body.
| Name | Type | Format | Required | Description |
|---|---|---|---|---|
| tokenId | Header | String | O | Token ID |
| id | Query | UUID | - | Session ID to query |
| tenant_id | Query | String | - | Tenant ID |
| name | Query | String | - | Session name |
| direction | Query | Enum | - | One of in, out, both |
| sort_dir | Query | Enum | - | Sorting direction. One of asc, desc |
| sort_key | Query | String | - | Sort criteria field |
| fields | Query | String | - | Fields to include in the response. e.g. fields=id&fields=name |
| Name | Type | Format | Description |
|---|---|---|---|
| sessions | Body | Array | List of session objects |
| sessions.id | Body | UUID | Session ID |
| sessions.name | Body | String | Session name |
| sessions.description | Body | String | Description |
| sessions.target_port_id | Body | UUID | Target port ID |
| sessions.source_port_id | Body | UUID | Source port ID |
| sessions.filter_groups | Body | Array[UUID] | List of connected filter group IDs |
| sessions.direction | Body | Enum | One of in, out, or both |
| sessions.tenant_id | Body | String | Tenant ID |
| sessions.project_id | Body | String | Project ID, same as tenant ID |
| sessions.target_network_id | Body | UUID | Network ID of target port |
| sessions.source_network_id | Body | UUID | Network ID of the source port |
| sessions.vni | Body | Number | Mirroring tunnel VNI |
| sessions.status | Body | Enum | Session status: ACTIVE, BUILD, ERROR |
| sessions.created_at | Body | String | Creation time (UTC) |
| sessions.updated_at | Body | String | Modification time (UTC) |
Example
{
"sessions": [
{
"id": "7b0b5e6f-9a75-4b5a-9d69-0fb6a6d8e111",
"name": "mirror-sess-1",
"description": "",
"target_port_id": "c0a8012b-7f6d-4c16-951d-cca31af20c01",
"source_port_id": "5d5b1ce7-9a68-4f3d-9c0d-2e6b5b9a1c02",
"filter_groups": ["2a3a9c36-0a9a-4a1e-8bb2-03e8d7fa1f10"],
"direction": "both",
"tenant_id": "76841f7d054a40b88b2a99828280998c",
"project_id": "76841f7d054a40b88b2a99828280998c",
"target_network_id": "a2a9b0f0-1d75-4b3b-b3a1-5a1d2f3e4b55",
"source_network_id": "b3b0f0a2-2e86-4c4c-a1b3-6c2d3e4f5a66",
"vni": 5001001,
"status": "ACTIVE",
"created_at": "2025-08-29 05:25:30",
"updated_at": "2025-08-29 05:25:30"
}
]
}
GET /v2.0/mirroring/sessions/{SessionId}
X-Auth-Token: {tokenId}
This API does not require a request body.
| Name | Type | Format | Required | Description |
|---|---|---|---|---|
| SessionId | URL | UUID | O | Session ID |
| tokenId | Header | String | O | Token ID |
| fields | Query | String | - | Fields to include in the response. e.g. fields=id&fields=name |
| Name | Type | Format | Description |
|---|---|---|---|
| session | Body | Object | Session object |
| session.id | Body | UUID | Session ID |
| session.name | Body | String | Session name |
| session.description | Body | String | Description |
| session.target_port_id | Body | UUID | Target port ID |
| session.source_port_id | Body | UUID | Source port ID |
| session.filter_groups | Body | Array[UUID] | List of connected filter group IDs |
| session.direction | Body | Enum | One of in, out, or both |
| session.tenant_id | Body | String | Tenant ID |
| session.project_id | Body | String | Project ID |
| session.target_network_id | Body | UUID | Target port's network ID |
| session.source_network_id | Body | UUID | Source port's network ID |
| session.vni | Body | Number | Tunnel VNI |
| session.status | Body | Enum | ACTIVE, BUILD, ERROR |
| session.created_at | Body | String | Creation time (UTC) |
| session.updated_at | Body | String | Modification time (UTC) |
Example
{
"session": {
"id": "7b0b5e6f-9a75-4b5a-9d69-0fb6a6d8e111",
"name": "mirror-sess-1",
"description": "",
"target_port_id": "c0a8012b-7f6d-4c16-951d-cca31af20c01",
"source_port_id": "5d5b1ce7-9a68-4f3d-9c0d-2e6b5b9a1c02",
"filter_groups": ["2a3a9c36-0a9a-4a1e-8bb2-03e8d7fa1f10"],
"direction": "both",
"tenant_id": "76841f7d054a40b88b2a99828280998c",
"project_id": "76841f7d054a40b88b2a99828280998c",
"target_network_id": "a2a9b0f0-1d75-4b3b-b3a1-5a1d2f3e4b55",
"source_network_id": "b3b0f0a2-2e86-4c4c-a1b3-6c2d3e4f5a66",
"vni": 5001001,
"status": "ACTIVE",
"created_at": "2025-08-29 05:25:30",
"updated_at": "2025-08-29 05:25:30"
}
}
POST /v2.0/mirroring/sessions
X-Auth-Token: {tokenId}
| Name | Type | Format | Required | Description |
|---|---|---|---|---|
| tokenId | Header | String | O | Token ID |
| session | Body | Object | O | Session creation request object |
| session.name | Body | String | - | Session name (up to 32 characters, alphanumeric characters/-/_) |
| session.description | Body | String | - | Description (up to 255 characters) |
| session.target_port_id | Body | UUID | O | Target port ID |
| session.source_port_id | Body | UUID | O | Source port ID |
| session.filter_groups | Body | Array[UUID] | - | List of filter group IDs to connect to. If none are present, all traffic will be mirrored. |
| session.direction | Body | Enum | O | One of in, out, or both |
| session.tenant_id | Body | String | O | Tenant ID |
| session.project_id | Body | String | O | Project ID |
Example
{
"session": {
"name": "mirror-sess-1",
"description": "",
"target_port_id": "c0a8012b-7f6d-4c16-951d-cca31af20c01",
"source_port_id": "5d5b1ce7-9a68-4f3d-9c0d-2e6b5b9a1c02",
"filter_groups": ["2a3a9c36-0a9a-4a1e-8bb2-03e8d7fa1f10"],
"direction": "both",
"tenant_id": "76841f7d054a40b88b2a99828280998c",
"project_id": "76841f7d054a40b88b2a99828280998c"
}
}
| Name | Type | Format | Description |
|---|---|---|---|
| session | Body | Object | Session object |
| session.id | Body | UUID | Session ID |
| session.status | Body | Enum | Initially, mainly BUILD |
| Other | Body | - | Same as the session view |
Example
{
"session": {
"id": "7b0b5e6f-9a75-4b5a-9d69-0fb6a6d8e111",
"name": "mirror-sess-1",
"description": "",
"target_port_id": "c0a8012b-7f6d-4c16-951d-cca31af20c01",
"source_port_id": "5d5b1ce7-9a68-4f3d-9c0d-2e6b5b9a1c02",
"filter_groups": ["2a3a9c36-0a9a-4a1e-8bb2-03e8d7fa1f10"],
"direction": "both",
"tenant_id": "76841f7d054a40b88b2a99828280998c",
"project_id": "76841f7d054a40b88b2a99828280998c",
"target_network_id": "a2a9b0f0-1d75-4b3b-b3a1-5a1d2f3e4b55",
"source_network_id": "b3b0f0a2-2e86-4c4c-a1b3-6c2d3e4f5a66",
"vni": 5001001,
"status": "BUILD",
"created_at": "2025-08-29 05:25:30",
"updated_at": "2025-08-29 05:25:30"
}
}
PUT /v2.0/mirroring/sessions/{SessionId}
X-Auth-Token: {tokenId}
You can modify description, name, direction, and filter group list only. Changing ports is not supported.
| Name | Type | Format | Required | Description |
| --- | --- | --- | --- |
| SessionId | URL | UUID | O | Session ID |
| tokenId | Header | String | O | Token ID |
| session | Body | Object | O | Include only the fields to be modified |
| session.name | Body | String | - | Session name |
| session.description | Body | String | - | Description |
| session.filter_groups | Body | Array[UUID] | - | List of filter group IDs |
| session.direction | Body | Enum | - | in, out, both |
Example
{
"session": {
"name": "mirror-sess-1b",
"description": "update",
"filter_groups": ["2a3a9c36-0a9a-4a1e-8bb2-03e8d7fa1f10"],
"direction": "in"
}
}
Same as the session view response.
DELETE /v2.0/mirroring/sessions/{SessionId}
X-Auth-Token: {tokenId}
This API does not request a request body.
| Name | Type | Format | Required | Description |
|---|---|---|---|---|
| SessionId | URL | UUID | O | Session ID |
| tokenId | Header | String | O | Token ID |
This API does not return a response body.
A filter group is a container that groups one or more filters. You can connect them to a session to mirror only specific traffic.
GET /v2.0/mirroring/filtergroups
X-Auth-Token: {tokenId}
This API does not require a request body.
| Name | Type | Format | Required | Description |
| --- | --- | --- | --- |
| tokenId | Header | String | O | Token ID |
| id | Query | UUID | - | Filter Group ID |
| tenant_id | Query | String | - | Tenant ID |
| name | Query | String | - | Name |
| sort_dir | Query | Enum | - | asc, desc |
| sort_key | Query | String | - | Sort Key |
| fields | Query | String | - | Fields to Include |
| Name | Type | Format | Description |
|---|---|---|---|
| filtergroups | Body | Array | List of filter groups |
| filtergroups.id | Body | UUID | ID |
| filtergroups.name | Body | String | Name |
| filtergroups.description | Body | String | Description |
| filtergroups.tenant_id | Body | String | Tenant ID |
| filtergroups.project_id | Body | String | Project ID |
| filtergroups.filters | Body | Array | List of filter objects/IDs within the group |
| filtergroups.created_at | Body | String | Creation time (UTC) |
| filtergroups.updated_at | Body | String | Modification time (UTC) |
Example
{
"filtergroups": [
{
"id": "2a3a9c36-0a9a-4a1e-8bb2-03e8d7fa1f10",
"name": "fg-1",
"description": "",
"tenant_id": "76841f7d054a40b88b2a99828280998c",
"project_id": "76841f7d054a40b88b2a99828280998c",
"filters": [],
"created_at": "2025-08-29 05:20:00",
"updated_at": "2025-08-29 05:20:00"
}
]
}
GET /v2.0/mirroring/filtergroups/{FilterGroupId}
X-Auth-Token: {tokenId}
This API does not require a request body.
| Name | Type | Format | Required | Description | | --- | --- | --- | --- | | tokenId | Header | String | Yes | Token ID | | id | URL | UUID | Yes | Filter Group ID |
| Name | Type | Format | Description |
|---|---|---|---|
| filtergroup | Body | Object | List of filter groups |
| filtergroup.id | Body | UUID | ID |
| filtergroup.name | Body | String | Name |
| filtergroup.description | Body | String | Description |
| filtergroup.tenant_id | Body | String | Tenant ID |
| filtergroup.project_id | Body | String | Project ID |
| filtergroup.filters | Body | Array | List of filter objects/IDs within the group |
| filtergroup.created_at | Body | String | Creation Time (UTC) |
| filtergroup.updated_at | Body | String | Modification Time (UTC) |
POST /v2.0/mirroring/filtergroups
X-Auth-Token: {tokenId}
| Name | Type | Format | Required | Description |
| --- | --- | --- | --- |
| tokenId | Header | String | O | Token ID |
| filtergroup | Body | Object | O | Filter group creation request object |
| filtergroup.name | Body | String | - | Name (up to 32 characters, English letters/numbers/-/_) |
| filtergroup.description | Body | String | - | Description (up to 255 characters) |
| filtergroup.tenant_id | Body | String | O | Tenant ID |
| filtergroup.project_id | Body | String | O | Project ID |
Example
{
"filtergroup": {
"name": "fg-1",
"description": "",
"tenant_id": "76841f7d054a40b88b2a99828280998c",
"project_id": "76841f7d054a40b88b2a99828280998c"
}
}
| Name | Type | Format | Description |
|---|---|---|---|
| filtergroup | Body | Object | Filter group object |
| filtergroup.id | Body | UUID | ID |
| filtergroup.name | Body | String | Name |
| filtergroup.description | Body | String | Description |
| filtergroup.tenant_id | Body | String | Tenant ID |
| filtergroup.project_id | Body | String | Project ID |
| filtergroup.filters | Body | Array | List of filter objects/IDs in the group |
| filtergroup.created_at | Body | String | Creation time (UTC) |
| filtergroup.updated_at | Body | String | Modification time (UTC) |
PUT /v2.0/mirroring/filtergroups/{FilterGroupId}
X-Auth-Token: {tokenId}
Name and description only can be modified.
| Name | Type | Format | Required | Description | | --- | --- | --- | --- | | FilterGroupId | URL | UUID | Yes | Filter Group ID | | tokenId | Header | String | Yes | Token ID | | filtergroup | Body | Object | Yes | Include only fields to modify | | filtergroup.name | Body | String | - | Name | | filtergroup.description | Body | String | - | Description |
| Name | Type | Format | Description |
|---|---|---|---|
| filtergroup | Body | Object | Filter Group Object |
| filtergroup.id | Body | UUID | ID |
| filtergroup.name | Body | String | Name |
| filtergroup.description | Body | String | Description |
| filtergroup.tenant_id | Body | String | Tenant ID |
| filtergroup.project_id | Body | String | Project ID |
| filtergroup.filters | Body | Array | List of filter objects/IDs within the group |
| filtergroup.created_at | Body | String | Creation time (UTC) |
| filtergroup.updated_at | Body | String | Modification time (UTC) |
DELETE /v2.0/mirroring/filtergroups/{FilterGroupId}
X-Auth-Token: {tokenId}
No request body. No response body.
A filter consists of matching conditions and actions, and is used to allow (accept) or exclude (drop) specific traffic. A filter must belong to a specific filter group.
GET /v2.0/mirroring/filters
X-Auth-Token: {tokenId}
This API does not require a request body.
| Name | Type | Format | Required | Description |
|---|---|---|---|---|
| tokenId | Header | String | O | Token ID |
| id | Query | UUID | - | Filter ID |
| filter_group_id | Query | UUID | - | Filter Group ID |
| tenant_id | Query | String | - | Tenant ID |
| sort_dir | Query | Enum | - | asc, desc |
| sort_key | Query | String | - | Sort Key |
| fields | Query | String | - | Fields to Include |
| Name | Type | Format | Description |
|---|---|---|---|
| filters | Body | Array | Filter List |
| filters.id | Body | UUID | Filter ID |
| filters.description | Body | String | Description |
| filters.filter_group_id | Body | UUID | Filter group ID |
| filters.src_cidr | Body | CIDR | Source CIDR. Optional |
| filters.dst_cidr | Body | CIDR | Destination CIDR. Optional |
| filters.src_port_range_min | Body | Number | Start of source port range |
| filters.src_port_range_max | Body | Number | End of source port range |
| filters.dst_port_range_min | Body | Number | Start of destination port range |
| filters.dst_port_range_max | Body | Number | End of destination port range |
| filters.protocol | Body | String | tcp, udp, icmp, or null |
| filters.action | Body | Enum | accept, drop |
| filters.priority | Body | Number | Priority (default 101) |
| filters.tenant_id | Body | String | Tenant ID |
| filters.project_id | Body | String | Project ID |
| filters.created_at | Body | String | Creation Time (UTC) |
| filters.updated_at | Body | String | Modification Time (UTC) |
Example
{
"filters": [
{
"id": "f1e2d3c4-b5a6-7890-1234-56789abcde01",
"description": "allow tcp 80 to 10.0.0.0/24",
"filter_group_id": "2a3a9c36-0a9a-4a1e-8bb2-03e8d7fa1f10",
"src_cidr": null,
"dst_cidr": "10.0.0.0/24",
"src_port_range_min": null,
"src_port_range_max": null,
"dst_port_range_min": 80,
"dst_port_range_max": 80,
"protocol": "tcp",
"action": "accept",
"priority": 101,
"tenant_id": "76841f7d054a40b88b2a99828280998c",
"project_id": "76841f7d054a40b88b2a99828280998c",
"created_at": "2025-08-29 05:22:00",
"updated_at": "2025-08-29 05:22:00"
}
]
}
GET /v2.0/mirroring/filters/{FilterId}
X-Auth-Token: {tokenId}
This API does not require a request body.
| Name | Type | Format | Required | Description | | --- | --- | --- | --- | | tokenId | Header | String | Yes | Token ID | | id | Query | URL | Yes | Filter ID |
| Name | Type | Format | Description |
|---|---|---|---|
| filter | Body | Object | Filter List |
| filter.id | Body | UUID | Filter ID |
| filter.description | Body | String | Description |
| filter.filter_group_id | Body | UUID | Filter Group ID |
| filter.src_cidr | Body | CIDR | Source CIDR. Optional |
| filter.dst_cidr | Body | CIDR | Destination CIDR. Optional |
| filter.src_port_range_min | Body | Number | Source port range start |
| filter.src_port_range_max | Body | Number | Source port range end |
| filter.dst_port_range_min | Body | Number | Destination port range start |
| filter.dst_port_range_max | Body | Number | Destination port range end |
| filter.protocol | Body | String | tcp, udp, icmp, or null |
| filter.action | Body | Enum | accept, drop |
| filter.priority | Body | Number | Priority (default 101) |
| filter.tenant_id | Body | String | Tenant ID |
| filter.project_id | Body | String | Project ID |
| filter.created_at | Body | String | Creation time (UTC) |
| filter.updated_at | Body | String | Modified Time (UTC) |
POST /v2.0/mirroring/filters
X-Auth-Token: {tokenId}
| Name | Type | Format | Required | Description |
|---|---|---|---|---|
| tokenId | Header | String | O | Token ID |
| filter | Body | Object | O | Filter Create Request Object |
| filter.description | Body | String | - | Description (max 255 characters) |
| filter.filter_group_id | Body | UUID | O | Affiliated Filter Group ID |
| filter.src_cidr | Body | CIDR | - | Source CIDR |
| filter.dst_cidr | Body | CIDR | - | Destination CIDR |
| filter.src_port_range_min | Body | Number | - | Source Port Start |
| filter.src_port_range_max | Body | Number | - | Source Port End |
| filter.dst_port_range_min | Body | Number | - | Destination port start |
| filter.dst_port_range_max | Body | Number | - | Destination port end |
| filter.protocol | Body | String | - | tcp, udp, icmp, or null |
| filter.action | Body | Enum | O | accept, drop |
| filter.priority | Body | Number | - | Priority. Default 101 |
| filter.tenant_id | Body | String | O | Tenant ID |
| filter.project_id | Body | String | O | Project ID |
Example
{
"filter": {
"description": "allow tcp 80 to 10.0.0.0/24",
"filter_group_id": "2a3a9c36-0a9a-4a1e-8bb2-03e8d7fa1f10",
"dst_cidr": "10.0.0.0/24",
"dst_port_range_min": 80,
"dst_port_range_max": 80,
"protocol": "tcp",
"action": "accept",
"priority": 101,
"tenant_id": "76841f7d054a40b88b2a99828280998c",
"project_id": "76841f7d054a40b88b2a99828280998c"
}
}
| Name | Type | Format | Description |
|---|---|---|---|
| filter | Body | Object | Filter List |
| filter.id | Body | UUID | Filter ID |
| filter.description | Body | String | Description |
| filter.filter_group_id | Body | UUID | Filter Group ID |
| filter.src_cidr | Body | CIDR | Source CIDR. Optional |
| filter.dst_cidr | Body | CIDR | Destination CIDR. Optional |
| filter.src_port_range_min | Body | Number | Source port range start |
| filter.src_port_range_max | Body | Number | Source port range end |
| filter.dst_port_range_min | Body | Number | Destination port range start |
| filter.dst_port_range_max | Body | Number | End of destination port range |
| filter.protocol | Body | String | tcp, udp, icmp, or null |
| filter.action | Body | Enum | accept, drop |
| filter.priority | Body | Number | Priority (default 101) |
| filter.tenant_id | Body | String | Tenant ID |
| filter.project_id | Body | String | Project ID |
| filter.created_at | Body | String | Creation time (UTC) |
| filter.updated_at | Body | String | Modification time (UTC) |
PUT /v2.0/mirroring/filters/{FilterId}
X-Auth-Token: {tokenId}
Only the description can be modified. Matching conditions, actions, priorities, and group affiliation cannot be modified.
| Name | Type | Format | Required | Description |
|---|---|---|---|---|
| FilterId | URL | UUID | Yes | Filter ID |
| tokenId | Header | String | Yes | Token ID |
| filter | Body | Object | Yes | Include only fields to be modified |
| filter.description | Body | String | - | Description |
| Name | Type | Format | Description |
|---|---|---|---|
| filter | Body | Object | Filter List |
| filter.id | Body | UUID | Filter ID |
| filter.description | Body | String | Description |
| filter.filter_group_id | Body | UUID | Filter Group ID |
| filter.src_cidr | Body | CIDR | Source CIDR. Optional |
| filter.dst_cidr | Body | CIDR | Destination CIDR. Can be unspecified |
| filter.src_port_range_min | Body | Number | Source port range start |
| filter.src_port_range_max | Body | Number | Source port range end |
| filter.dst_port_range_min | Body | Number | Destination port range start |
| filter.dst_port_range_max | Body | Number | Destination port range end |
| filter.protocol | Body | String | tcp, udp, icmp, or null |
| filter.action | Body | Enum | accept, drop |
| filter.priority | Body | Number | Priority (default 101) |
| filter.tenant_id | Body | String | Tenant ID |
| filter.project_id | Body | String | Project ID |
| filter.created_at | Body | String | Creation Time (UTC) |
| filter.updated_at | Body | String | Modification Time (UTC) |
DELETE /v2.0/mirroring/filters/{FilterId}
X-Auth-Token: {tokenId}
No request body. No response body.