# Proxy endpoints (Client API: game servers)

> 4 FeatherPanel Client API: game servers endpoints from user/server/proxy.php: methods, paths, auth, permissions, rate limits, parameters and responses.

Source: https://featherpanel.com/docs/api/reference/user/server/proxy/

Defined in [`backend/app/routes/user/server/proxy.php`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/user/server/proxy.php). Authentication used here: **Server access**. Read [Authentication](https://featherpanel.com/docs/api/authentication/) for how to send credentials and [Rate limits and errors](https://featherpanel.com/docs/api/rate-limits-and-errors/) for the response envelope.

Paths, methods, permissions and rate limits come from the route file. Summaries, parameters and response codes come from the OpenAPI annotations on the controllers; endpoints without annotations show only what the route file declares.

## Endpoints

### GET `/api/user/servers/{uuidShort}/proxy`

- Auth: Server access
- Default rate limit: 30 / minute (`user-server-proxy`)
- Route name: `user-server-proxy-list`
- Controller: [`ServerProxyController::listProxies`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/User/Server/ServerProxyController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/user/server/proxy.php#L28)

**List reverse proxies** Get a list of all reverse proxy configurations for a server.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `uuidShort` | path | string | yes | Server short UUID |

```bash
curl -X GET "$PANEL_URL/api/user/servers/$UUID_SHORT/proxy" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` List of proxy configurations · `401` Unauthorized · `403` Forbidden · `404` Server not found

### POST `/api/user/servers/{uuidShort}/proxy/create`

- Auth: Server access
- Default rate limit: 10 / minute (`user-server-proxy`)
- Route name: `user-server-proxy-create`
- Controller: [`ServerProxyController::createProxy`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/User/Server/ServerProxyController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/user/server/proxy.php#L52)

**Create reverse proxy** Create a new reverse proxy configuration for a server.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `uuidShort` | path | string | yes | Server short UUID |

Request body: [`ProxyCreateRequest`](https://featherpanel.com/docs/api/schemas/#schema-proxycreaterequest) (application/json)

| Body field | Type | Required | Description |
| --- | --- | --- | --- |
| `domain` | string | yes | The domain name for the proxy |
| `ip` | string | yes | The target IP address to proxy to |
| `port` | string | yes | The target port to proxy to |
| `ssl` | boolean | yes | Whether to enable SSL/TLS |
| `use_lets_encrypt` | boolean | no | Whether to use Let's Encrypt for SSL |
| `client_email` | string | no | Email for Let's Encrypt registration |
| `ssl_cert` | string | no | SSL certificate content |
| `ssl_key` | string | no | SSL private key content |

```bash
curl -X POST "$PANEL_URL/api/user/servers/$UUID_SHORT/proxy/create" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"domain":"","ip":"","port":"","ssl":false,"use_lets_encrypt":false,"client_email":"","ssl_cert":"","ssl_key":""}'
```

Plugin events: [`featherpanel:server:proxy:create`](https://featherpanel.com/docs/plugins/events/server-proxy/#server-proxy-created)

Responses: `202` Proxy configuration created successfully · `400` Bad request · `401` Unauthorized · `403` Forbidden · `404` Server not found · `500` Internal server error · `503` Service unavailable

### POST `/api/user/servers/{uuidShort}/proxy/delete`

- Auth: Server access
- Default rate limit: 10 / minute (`user-server-proxy`)
- Route name: `user-server-proxy-delete`
- Controller: [`ServerProxyController::deleteProxy`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/User/Server/ServerProxyController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/user/server/proxy.php#L76)

**Delete reverse proxy** Delete an existing reverse proxy configuration for a server.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `uuidShort` | path | string | yes | Server short UUID |

Request body: [`ProxyDeleteRequest`](https://featherpanel.com/docs/api/schemas/#schema-proxydeleterequest) (application/json)

| Body field | Type | Required | Description |
| --- | --- | --- | --- |
| `domain` | string | yes | The domain name of the proxy to delete |
| `port` | string | yes | The port associated with the proxy configuration |

```bash
curl -X POST "$PANEL_URL/api/user/servers/$UUID_SHORT/proxy/delete" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"domain":"","port":""}'
```

Plugin events: [`featherpanel:server:proxy:delete`](https://featherpanel.com/docs/plugins/events/server-proxy/#server-proxy-deleted)

Responses: `202` Proxy configuration deleted successfully · `400` Bad request · `401` Unauthorized · `403` Forbidden · `404` Server not found · `500` Internal server error · `503` Service unavailable

### POST `/api/user/servers/{uuidShort}/proxy/verify-dns`

- Auth: Server access
- Default rate limit: 20 / minute (`user-server-proxy`)
- Route name: `user-server-proxy-verify-dns`
- Controller: [`ServerProxyController::verifyDns`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/User/Server/ServerProxyController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/user/server/proxy.php#L100)

**Verify DNS records** Verify that DNS A record exists and points to the correct IP address.

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `uuidShort` | path | string | yes | Server short UUID |

| Body field | Type | Required | Description |
| --- | --- | --- | --- |
| `domain` | string | yes | Domain name to verify |
| `port` | string | yes | Port number to determine target IP |

```bash
curl -X POST "$PANEL_URL/api/user/servers/$UUID_SHORT/proxy/verify-dns" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"domain":"","port":""}'
```

Responses: `200` DNS verification result · `400` Bad request · `401` Unauthorized · `403` Forbidden · `404` Server not found
