Skip to content

Port management

All public port operations use the value of Port.port as {id}. For example, "port": "10000" maps to /ports/10000.

POST /ports/{id}/tags replaces the port tag list. The public contract allows up to 30 tags and up to 50 characters per tag.

{
"tags": ["production", "crawler-eu"]
}

POST /ports/{id}/credentials replaces credential configuration. The model contains:

  • ip: an array of allowed source IP addresses;
  • password: an array of objects with login and password.
{
"ip": ["203.0.113.10"],
"password": [
{
"login": "integration",
"password": "use-a-generated-secret"
}
]
}

Keep passwords in a secret manager and avoid returning them from your own APIs.

EndpointBodyPurpose
POST /ports/{id}/signature{ "signature": "Linux" }Apply a current signature from GET /signatures
POST /ports/{id}/autorenew{ "autoRenew": true }Enable or disable plan renewal
POST /ports/{id}/autoreset{ "autoResetInterval": 600 }Set reset interval in seconds; 0 disables it

Use 0 to disable automatic resets or an interval of at least 180 seconds. Values from 1 through 179 can be stored but are not processed by the automatic reset scheduler. Scheduling is asynchronous and does not promise an exact wall-clock reset time. See Port reset and readiness.

await client.ports.updateTags({
id: '10000',
body: { tags: ['Production1'] },
});
await client.ports.setAutoResetInterval({
id: '10000',
body: { autoResetInterval: 600 },
});

GET /ports/{id}/log returns recent events. POST /ports/{id}/log accepts from, to, page, and pageSize to filter history. Defaults are page 1 and page size 20.

FieldMeaning
actionRecorded operation, such as a reset or assignment
causeNormalized initiator: system, admin, or user
sourceMore specific source recorded by the platform
extraAdditional operation context; accept unknown fields
createdAtEvent time

With both dates, the API returns the exact fromto range. With only from, the range ends at the current time. With only to, it begins one month before to. Store timestamps in UTC and page until complete.

A reset log proves that an action was recorded, not that the new IP is already usable. Confirm the change through the port's ip value or a port.ip_changed webhook.

const log = await client.ports.filterLog({
id: '10000',
body: {
from: '2026-08-01T00:00:00Z',
to: '2026-08-31T23:59:59Z',
page: 1,
pageSize: 100,
},
});

GET /ports/{id}/vpn downloads the port VPN configuration archive. A POST compatibility route is also present. Treat the archive as a secret because it can contain connection material, and inspect the response as binary rather than JSON.

const archive = await client.downloadPortVpn('10000');
await archive.saveTo('./ltesocks-vpn.zip');

GET /tokens/{token} resolves a port reset token to its port model. This route still requires the account bearer token; the path token is not a replacement for API authentication.