Get the device's self-rent tunnel
This endpoint requires authentication. Include your API key in the X-API-KEY header with every request.
Protocol availability
You can create a self-rent tunnel through the API, but its protocol configs are managed in the Hoster dashboard only. The default credential is static and covers Shadowsocks, which must be set up from the dashboard. WireGuard and OpenVPN are not available through the API; download their configs from the dashboard to use them. For now, each device supports a single protocol config: Shadowsocks, WireGuard, or OpenVPN.
/hoster/v1/devices/{id}/self-rent/tunnelThe device's self-rent tunnel: connection details and its credentials (every login on the tunnel, including disabled ones). 404 when the hoster has no live rental for the device.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | The device's id (deviceId), a 24-character hexadecimal string. |
curl -X GET "https://api.proxied.com/hoster/v1/devices/68fb9f95c5c7c56bcf24d60f/self-rent/tunnel" \
-H "X-API-KEY: <api-key>"Response Body
successbooleanAlways true on a successful response.
dataobjectThe proxied tunnel a self-rented device serves: where to connect and the logins.
tunnelIdstringThe tunnel's id, a 24-character hexadecimal string; every enable creates a new tunnel.
status"enabled" | "disabled" | "archived"The tunnel's state; always enabled here, since these endpoints serve live tunnels.
hoststringThe proxy server's hostname, which the ports listen on.
socks5PortstringThe SOCKS5 proxy port, as a decimal string; log in with any active credential.
httpsPortstringThe HTTP(S) proxy port, as a decimal string; log in with any active credential.
transparentSocks5PortstringThe proxy server's transparent SOCKS5 port on the same host, as a decimal string.
uptimeStatus"up" | "down" | nullThe last recorded health check through host and socks5Port: up or down. The monitor checks about every 5 minutes and records down on a failure and up when the tunnel recovers, so null means no result is recorded yet, which is normal for a healthy tunnel that has never failed or been tested.
credentialsobject[]The tunnel's logins: every one, disabled ones included and in no set order, when reading the tunnel; only the seeded default when enabling self-rent. One proxy login on the device's self-rent tunnel, usable on its host and ports.
credentialIdstringThe login's id, a 24-character hexadecimal string; the credential routes take it as credentialId.
usernamestringThe proxy login name.
passwordstringThe proxy password, in plain text.
labelstring | nullThe hoster's name for the login; null when it was added without one.
status"active" | "disabled" | "archived"active: the proxy accepts the login; disabled: the login is kept but switched off at the proxy. archived marks the logins of a torn-down tunnel and never appears here.
createdAtstringWhen the login was created, as an ISO 8601 date-time.
updatedAtstringWhen the login last changed, as an ISO 8601 date-time; every update moves it.
{
"success": true,
"data": {
"tunnelId": "6716a3f5c9e77b0012ab34d1",
"status": "enabled",
"host": "de1.example.net",
"socks5Port": "31002",
"httpsPort": "31001",
"transparentSocks5Port": "31003",
"uptimeStatus": "up",
"credentials": [
{
"credentialId": "65f9a1b2c3d4e5f6a7b8c9d0",
"username": "team-a",
"password": "Xk7pQ2mW9vLt",
"label": "default",
"status": "active",
"createdAt": "2026-10-21T09:15:42.123Z",
"updatedAt": "2026-10-21T09:15:42.123Z"
}
]
}
}Error Responses
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "readable message"
}
}| Status | Code | Description |
|---|---|---|
400 | VALIDATION_ERROR | Validation failed. |
401 | MISSING_API_KEY | Missing API key. |
403 | INVALID_API_KEY | Invalid key or suspended account. |
403 | HOSTER_BANNED | Invalid key or suspended account. |
404 | SELF_RENT_TUNNEL_NOT_FOUND | No active self-rent tunnel for this device. |
500 | INTERNAL_ERROR | Internal error. |