Files
flvx/skills/flvx-api/references/speed-limits.md
T
2026-02-28 14:07:54 +08:00

2.7 KiB

Speed Limit Management API

Speed limits define bandwidth restrictions that can be applied to forwards or user-tunnel assignments.

POST /api/v1/speed-limit/list

List all speed limit rules.

Request: {}

Response:

{
  "code": 0,
  "data": [
    {
      "id": 1,
      "name": "10Mbps",
      "speed": 10,
      "status": 1,
      "created_at": 1706659200000
    },
    {
      "id": 2,
      "name": "100Mbps",
      "speed": 100,
      "status": 1,
      "created_at": 1706659200000
    }
  ]
}

POST /api/v1/speed-limit/create

Create a speed limit rule.

Request:

{
  "name": "50Mbps",
  "speed": 50,
  "status": 1
}

Fields:

Field Type Required Description
name string Yes Rule name
speed number Yes Speed limit in Mbps
status number No 1=active, 0=disabled (default: 1)

Response:

{"code": 0, "msg": "success", "data": {"id": 3}}

POST /api/v1/speed-limit/update

Update a speed limit rule.

Request:

{
  "id": 3,
  "name": "50Mbps-Premium",
  "speed": 50,
  "status": 1
}

POST /api/v1/speed-limit/delete

Delete a speed limit rule.

Request:

{"id": 3}

Applying Speed Limits

Speed limits can be applied at two levels:

1. Forward Level

Set speedId when creating or updating a forward:

curl -s -X POST "${FLVX_BASE_URL}/api/v1/forward/create" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "limited-forward",
    "tunnelId": 1,
    "remoteAddr": "10.0.0.1:80",
    "speedId": 1
  }'

2. User-Tunnel Assignment Level

Set speedId when assigning a tunnel to a user:

curl -s -X POST "${FLVX_BASE_URL}/api/v1/tunnel/user/assign" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "userId": 2,
    "tunnelId": 1,
    "flow": 50,
    "speedId": 2
  }'

Example: Create Tiered Speed Limits

# Create speed limit tiers
curl -s -X POST "${FLVX_BASE_URL}/api/v1/speed-limit/create" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"name":"Basic-10Mbps","speed":10}'

curl -s -X POST "${FLVX_BASE_URL}/api/v1/speed-limit/create" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"name":"Standard-50Mbps","speed":50}'

curl -s -X POST "${FLVX_BASE_URL}/api/v1/speed-limit/create" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"name":"Premium-Unlimited","speed":1000}'

# List all rules
curl -s -X POST "${FLVX_BASE_URL}/api/v1/speed-limit/list" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{}' | jq '.data'