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.

GET/hoster/v1/devices/{id}/self-rent/tunnel

The 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

NameTypeRequiredDescription
id
string
RequiredThe device's id (deviceId), a 24-character hexadecimal string.
Example Request
curl -X GET "https://api.proxied.com/hoster/v1/devices/68fb9f95c5c7c56bcf24d60f/self-rent/tunnel" \
  -H "X-API-KEY: <api-key>"

Response Body

  • success
    boolean

    Always true on a successful response.

  • data
    object

    The proxied tunnel a self-rented device serves: where to connect and the logins.

    • tunnelId
      string

      The 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.

    • host
      string

      The proxy server's hostname, which the ports listen on.

    • socks5Port
      string

      The SOCKS5 proxy port, as a decimal string; log in with any active credential.

    • httpsPort
      string

      The HTTP(S) proxy port, as a decimal string; log in with any active credential.

    • transparentSocks5Port
      string

      The proxy server's transparent SOCKS5 port on the same host, as a decimal string.

    • uptimeStatus
      "up" | "down" | null

      The 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.

    • credentials
      object[]

      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.

      • credentialId
        string

        The login's id, a 24-character hexadecimal string; the credential routes take it as credentialId.

      • username
        string

        The proxy login name.

      • password
        string

        The proxy password, in plain text.

      • label
        string | null

        The 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.

      • createdAt
        string

        When the login was created, as an ISO 8601 date-time.

      • updatedAt
        string

        When the login last changed, as an ISO 8601 date-time; every update moves it.

200 Response
{
  "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

Error shape
{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "readable message"
  }
}
StatusCodeDescription
400
VALIDATION_ERRORValidation failed.
401
MISSING_API_KEYMissing API key.
403
INVALID_API_KEYInvalid key or suspended account.
403
HOSTER_BANNEDInvalid key or suspended account.
404
SELF_RENT_TUNNEL_NOT_FOUNDNo active self-rent tunnel for this device.
500
INTERNAL_ERRORInternal error.