The API rejects the token
Section titled “The API rejects the token”- Confirm the header starts with
Bearerand contains no quotes. - Check that the secret belongs to the intended LTESocks account.
- If the token was reset in the dashboard, replace every deployed copy.
- Test with the read-only
GET /useroperation.
The equivalent diagnostic request with an official SDK is:
import { LTESocksClient } from '@ltesocks/sdk';
const client = LTESocksClient.withBearerToken( process.env.LTESOCKS_API_TOKEN, { language: 'en' },);const user = await client.user.get();
console.log(user.login);import os
from ltesocks_sdk import Client
with Client.with_bearer_token( os.environ["LTESOCKS_API_TOKEN"], language="en",) as client: user = client.user.get() print(user.login)<?php
use LTESocks\Client;
require __DIR__ . '/vendor/autoload.php';
$client = Client::builder() ->withBearerToken((string) getenv('LTESOCKS_API_TOKEN')) ->withLanguage('en') ->build();$user = $client->user()->get();
echo $user->getLogin();A request fails before reaching the operation
Section titled “A request fails before reaching the operation”Remove Accept-Language or set it to a supported locale such as en. Verify Content-Type: application/json and validate the JSON syntax.
A port cannot be found
Section titled “A port cannot be found”Port identifiers are scoped to the authenticated account. List ports for that account and pass the exact Port.port value as {id}. Do not pass an internal object ID, service ID, reset token, or plan identifier. A resetToken belongs only in GET /tokens/{token}.
A reset is rejected or appears stuck
Section titled “A reset is rejected or appears stuck”- Leave at least 60 seconds between user-triggered resets; the port pool can require a longer cooldown.
- When present, respect
Retry-AfterandRetry-Atinstead of retrying immediately. - Treat HTTP
200as acknowledgement of the reset request, not proof that IP rotation finished. - Compare the port's
ipor consume theport.ip_changedwebhook; a log entry only confirms that the action was recorded.
See Port reset and readiness for the complete sequence.
Requests receive 429
Section titled “Requests receive 429”Reduce concurrency, use larger pages, and retry after exponential backoff with jitter. Defaults are lower for mutating methods than for GET requests.
VPN response cannot be parsed
Section titled “VPN response cannot be parsed”VPN operations return a binary archive. Do not call response.json(). Stream the body to a protected file, check status and Content-Type, then validate the archive before use.
A mutating request timed out
Section titled “A mutating request timed out”For operations that accept Idempotency-Key, repeat the exact request with the same key. Otherwise, do not immediately repeat it: read the affected port or payment history to determine whether the first request succeeded. Never use a new key merely because the first response was lost.
See Idempotency and safe retries for supported operations.
When contacting support, include the UTC time, method, path template, HTTP status, and a sanitized response. Never include the bearer token, full credentials, or VPN archive.