Changelog
What’s new in ProxyRequest.
Versioned routing, accounting, API, dashboard, and infrastructure changes in one release record.
An authenticated request to http://ip-api.com/json exceeds the user's concurrent connection limit. With a custom mapping enabled, the proxy returns:
HTTP/1.1 429 Too Many Requests
Connection: close
X-Proxy-Error-Code: CONNECTION_LIMIT
X-Proxy-Error-Message: Too many active connections.
Here, internal error 114 is mapped to CONNECTION_LIMIT. The client can recognize the cause and reduce concurrency before retrying a safe request. This is an illustrative proxy-generated response, not an error from ip-api.com; the response body remains empty.
X-Proxy-Error-Code and X-Proxy-Error-Message, then map 114 · Connection limit exceeded to the code and text shown.An HTTP-only scraper can use a SOCKS5-only provider without a separate converter. Ordinary HTTP requests are forwarded through the SOCKS5 connection; HTTPS uses a tunnel.
A SOCKS5-configured browser or script can use an HTTP-only provider. The provider must support CONNECT and permit the requested destination port. The client's TCP traffic then passes through that tunnel.
These commands request the same HTTPS page. Replace the example gateway and credentials with yours, using an account that allows the chosen client protocol.
HTTP client, SOCKS5-only provider:
curl --proxy http://proxy.your-domain.example:8000 \
--proxy-user 'USERNAME:PASSWORD' \
https://example.com/
SOCKS5 client, HTTP-only provider:
curl --proxy socks5h://proxy.your-domain.example:8000 \
--proxy-user 'USERNAME:PASSWORD' \
https://example.com/
socks5h passes the destination hostname to the proxy instead of resolving it in curl. Provider selection is handled by the gateway, not by these commands. HTTPS remains encrypted between the client and the destination; conversion does not decrypt it.
Proxy-Authorization and hop-by-hop headers. Proxy credentials are not sent to the destination; site-level Authorization is preserved.- Ukraine
- WayForPay, monobank, LiqPay
- Turkey
- iyzico, PayTR
- Poland
- PayU, Tpay, Przelewy24
- Czechia
- GoPay, Comgate
- Spain
- MONEI, Redsys
- France
- PayPlug
- Germany
- Unzer, PAYONE
- Italy
- Nexi XPay
- Kazakhstan
- Halyk ePay
- Finland
- Paytrail
- International
- Stripe, Checkout.com, Braintree
- European Economic Area
- Mollie
- Northern Europe
- Vipps MobilePay
p95 is the time within which 95 out of every 100 requests finish, and p99 covers 99 out of every 100. Lower tail latency means the handful of requests at the slow end now spend less time inside the proxy, instead of being hidden by a fast average.Idempotency-Key. Repeating the same request with the same key replays its successful response for 24 hours and sets Idempotency-Replayed. Reusing a key for a different request, or while the first request is still running, returns 409 Conflict; in-progress responses include retry guidance.ETag. Supported updates and deletes accept that value through If-Match, preventing a stale client from overwriting a newer representation. A mismatch returns 412 Precondition Failed together with the current ETag.@proxyrequest/sdk package supports modern browsers and Node.js 22+, ships ESM and CommonJS entry points, and includes complete TypeScript declarations.npm install @proxyrequest/sdk
pnpm add @proxyrequest/sdk
yarn add @proxyrequest/sdk
composer require proxyrequest/php-sdk
python -m pip install proxyrequest-sdk
uv add proxyrequest-sdk
poetry add proxyrequest-sdk
pdm add proxyrequest-sdk
order object now includes data_allocated, data_available, and data_available_percentage. Clients can apply their own thresholds and notify customers before their traffic allowance is exhausted.latest_data_top_up and latest_data_top_up_date identify the exact most recent allocation. Legacy orders without reliable history return null instead of an estimate.
Accept-Language, and returns the effective locale in Content-Language.en), Russian (ru), Ukrainian (uk), German (de), Italian (it), French (fr), Spanish (es), Simplified Chinese (zh-hans), and Japanese (ja). Field names and machine-readable values keep their existing shape.Accept-Language request header, for example Accept-Language: uk, en;q=0.8. Regional language tags and quality weights are supported. The API chooses the first supported locale with a positive quality value; when the header is omitted or no requested locale is supported, it uses English. Public API language cookies are ignored.Content-Language and include Vary: Accept-Language so shared caches keep language variants separate. The OpenAPI reference now documents Accept-Language on every operation and Content-Language on error responses.translation key was removed from public error payloadstranslation or use it as a client-side localization key. Read the existing human-readable error fields, such as detail, non_field_errors, and field-specific message arrays, and select their language with Accept-Language. The server now owns error-message localization and removes legacy translation metadata at every nesting level.include_sub_users query parameter. Set it to true to combine the selected user's own activity with all of their sub-users in traffic totals and top-domain reporting.GET /analytics/overall?user_id=…&include_sub_users=true returns transferred bytes and request counts for the selected user and their complete sub-user scope, while preserving the existing date, timezone, and package filters.GET /analytics/domains?user_id=…&include_sub_users=true aggregates request count and transferred bytes by destination hostname across the same user hierarchy. Hostname, ledger, package, ordering, and reporting-window filters remain available.include_sub_users is a boolean and defaults to false, so existing integrations keep their current account scope. Unsupported boolean values are rejected with a validation error instead of being interpreted implicitly.
@ipv6
to the product string, or leave it unset for automatic selection.
POST
/v2/sub-users/batch endpoint is idempotent and returns partial success
payloads.
country=US&asn=AS15169
in the proxy auth string.
/api/mix to /api/v1/products/:id/mix
ATYP=0x03
(domain name) in UDP associate requests received a malformed BND response. Fixed
response framing to correctly echo the request address type.
quic.proxyrequest.com:443.
/api/v1/*
endpoints remain active through end of 2025. The v2 API is a superset — migration is
straightforward for most integrations. Sunset emails went out in July.