Introduction
The GrowTech API lets your app or script look after your proxies on its own: see accounts and quota, fetch ready-to-use proxy lists, rotate IPs, even buy GB.
First three steps
- Create an API key (one key per account, needs a code from your email): open the API key page
- Send the key with every request, in the
Authorization: Bearer gtu_…(your key) header. - Try the first command below. Replace
gtu_YOUR_KEYwith your key.
First command
curl -sS "https://www.growtechcentral.com/api/user/v1/me" \ -H "Authorization: Bearer gtu_YOUR_KEY"
API key & security
Every endpoint except the /health liveness check needs your own API key.
How to send the key
Send it in the Authorization: Bearer gtu_… (your key) header, or in the X-API-Key header.
One account, one key
One key can use every API feature. Creating and regenerating it needs a 6-digit code from your email. The full key is shown only once; if you lose it, regenerate it — the old key stops working immediately.
Restrict IP addresses (optional)
You can allow the key only from certain IP addresses or ranges (CIDR). Calls from any other address are refused.
Allow buying GB
Buying GB through the API spends your wallet balance and only works when the "Allow this key to buy GB" switch on the API key page is on. It starts off, so a leaked key can't spend your balance.
Keep the key secret
Keep the key on a server or in a secret store. Never put it in code other people can open (websites, mobile apps, public repositories). If the key leaks, turn it off or regenerate it right away.
Important rules
Things that affect what you pay and what you get.
Buying needs your key's own switch
POST /orders buys only with a key whose "Allow buying GB" switch is on (Account → API key). The switch starts off and needs no code to turn on or off; while it is off the call answers 403 purchase_not_allowed and nothing is charged. Everything else works either way. A purchase uses your wallet at the website's prices, and every purchase needs its own Idempotency-Key, so a retry never buys twice.
Targeting by state, city or ASN uses quota twice as fast
On the products whose features.targeting_cost_multiplier lists a factor, traffic sent with that kind of targeting uses quota at that factor: with state, city or ASN targeting on Residential, Datacenter or Mobile 4G, 1 GB of traffic uses 2 GB of quota. Country targeting costs nothing extra. An empty targeting_cost_multiplier (Residential Elite, Residential Plus) means no surcharge.
One key, made on the website
Make or replace your key on the website (Account → API key) with a code sent to your email. The key is shown once; keep it secret. Making a new key switches the old one off at once; switching a key off needs no code. You can also limit the key to your own IP addresses or ranges (IPv4, IPv6, CIDR; up to 20): calls from anywhere else answer 403 ip_not_allowed. Changing that list needs no code, because it only narrows what the key can do, and it stays when you make a new key. The key can use everything in this API; only buying needs its own switch, which also stays when you make a new key.
Errors you can branch on
Every failure is {"error": {"code", "message"}}; some add details (for example retry_after_seconds) or fields (which parameters were wrong). code is stable; message is for people and may change. On 429 and 503, wait Retry-After seconds before trying again.
Rate limits
Past a limit you get a 429 with a Retry-After header (how many seconds to wait).
- Every call60 per 1 minutePer customer (= per key). Every answer carries
X-RateLimit-LimitandX-RateLimit-Remaining. - Per address60 per 1 minutePer IP address, counted before the key is checked.
- Quota refresh10 per 1 minutePOST /proxy-accounts/{id}/refresh, per account.
- Password reset5 per 1 minutePer account; on top, at most 3 resets per account and 5 per customer in 24 hours.
- Whitelist changes10 per 1 minuteAdding and removing addresses, per customer.
- Blocked-sites changes12 per 1 minutePUT /proxy-accounts/{id}/blocked-hosts, per customer.
- Location lists30 per 1 minuteGET /locations/…, per customer.
- Proxy lists30 per 1 minuteGET /proxy-accounts/{id}/proxy-list, per customer.
- New IP10 per 1 minutePOST /proxy-accounts/{id}/rotate-ip, per account.
- Purchases10 per 1 minutePOST /orders, per customer (no daily cap).
Error codes
When a request is refused, the answer carries an error.code your program can read.
insufficient_balanceHTTP 402The wallet balance is not enough for the purchase; nothing was charged (details: balance, required, shortfall).feature_disabledHTTP 403GrowTech has buying through the API turned off for now; buy on the website.insufficient_scopeHTTP 403Only for a key made before 23 Oct 2026 with limited access: it lacks what this call needs (required_scopenames it). Make a new key — new keys can do everything.ip_not_allowedHTTP 403The key is limited to other IP addresses (its allow-list on the website).purchase_not_allowedHTTP 403This key may not buy: turn on "Allow buying GB" for it on the website (Account → API key). Nothing was charged.not_foundHTTP 404No such proxy account, or it is not yours.product_not_foundHTTP 404Unknown or unavailable product;details.availablelists the products on sale.product_not_on_accountHTTP 404The account holds no such product (?product=).idempotency_conflictHTTP 409The Idempotency-Key was already used for a different purchase.not_readyHTTP 409The account is still being set up. Try again in a minute.request_in_progressHTTP 409A purchase with this Idempotency-Key is still running; retry afterRetry-After.reset_in_progressHTTP 409A password reset for this account is already running.idempotency_key_invalidHTTP 422The Idempotency-Key must be 1 to 64 letters, digits or . _ - :idempotency_key_requiredHTTP 422A purchase needs an Idempotency-Key header.invalid_ipHTTP 422Only a public IPv4 address can be allowed.invalid_rangeHTTP 422The usage window is wrong: a bad date,fromafterto, or more than 92 days.not_supportedHTTP 422The product does not offer this setting or option (details.control); see the product'sfeatures.request_refusedHTTP 422The proxy network refused this request (for example an address already used elsewhere). Retrying the same call will not help.single_country_requiredHTTP 422Residential Plus lists states and cities for one country per call.subaccount_not_provisionedHTTP 422The account is not ready for this yet. Try again in a minute.validation_failedHTTP 422A parameter is missing or wrong;fieldsnames each one.whitelist_limit_reachedHTTP 422The whitelist is full (limits.whitelist_max); remove an address first.rate_limitedHTTP 429Too many calls; waitRetry-Afterseconds.reset_limit_account_reachedHTTP 429This account had 3 password resets in the last 24 hours.reset_limit_user_reachedHTTP 429You had 5 password resets in the last 24 hours.api_disabledHTTP 503The API is switched off for maintenance. Try again later.purchases_pausedHTTP 503Buying is paused on the website right now; try again later.refresh_failedHTTP 503The latest quota could not be read. Try again shortly.
Your account, wallet and quota
/meThe lightest call to test a key: the account the key belongs to, the main wallet balance in IDR, the total proxy quota over all your accounts, the key itself (its prefix, IP limit and whether it may buy GB: purchase_allowed), and your limit per minute.
Parameters
No parameters.
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/me" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"user": {
"id": 501,
"name": "Budi Santoso",
"email": "[email protected]",
"wallet_balance_idr": 250000
},
"quota": {
"purchased_mb": 10240,
"allocated_mb": 10240,
"used_mb": 3072,
"available_mb": 7168,
"purchased_gb": 10,
"allocated_gb": 10,
"used_gb": 3,
"available_gb": 7,
"accounts": 2
},
"api_key": {
"prefix": "gtu_Ab3x",
"scopes": [
"*"
],
"allowed_ips": [],
"purchase_allowed": false,
"last_used_at": "2026-10-22T02:15:00+00:00"
},
"rate_limit": {
"per_minute": 60
}
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Products and your prices
/productsEvery product on sale with your price per GB (your discount already applied), the volume price steps, the order size limits and what the product can do. Check features before calling a setting: a product without it answers not_supported.
Parameters
No parameters.
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/products" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": [
{
"slug": "residential",
"name": "Residential",
"price_per_gb_idr": 15000,
"min_gb": 1,
"max_gb": 10240,
"price_steps": [
{
"min_gb": 1,
"price_per_gb_idr": 15000
},
{
"min_gb": 10,
"price_per_gb_idr": 14000
}
],
"features": {
"targeting": {
"country": true,
"state": true,
"city": true,
"asn": true,
"zip": false
},
"targeting_cost_multiplier": {
"state": 2,
"city": 2,
"asn": 2
},
"sticky_sessions": true,
"protocols": [
"http",
"https",
"socks5"
],
"ip_whitelist": true,
"blocked_hosts": true,
"password_reset": true
},
"limits": {
"whitelist_max": 5
}
},
{
"slug": "residential-plus",
"name": "Residential Plus",
"price_per_gb_idr": 18000,
"min_gb": 1,
"max_gb": 10240,
"price_steps": [
{
"min_gb": 1,
"price_per_gb_idr": 18000
}
],
"features": {
"targeting": {
"country": true,
"state": true,
"city": true,
"asn": false,
"zip": false
},
"targeting_cost_multiplier": {},
"sticky_sessions": true,
"protocols": [
"http",
"socks5"
],
"ip_whitelist": true,
"blocked_hosts": false,
"password_reset": false
},
"limits": {
"whitelist_max": null
}
}
]
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Price for an amount of GB
/quoteThe exact price you would pay now for gb GB of a product: price per GB, discount, tax and total in IDR. Same prices as the website.
Parameters
productrequiredThe product's slug.gbrequiredHow many GB, 1 to 10240.
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/quote?product=residential&gb=10" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"product": {
"slug": "residential",
"name": "Residential"
},
"gb": 10,
"price_per_gb_idr": 14000,
"subtotal_idr": 140000,
"discount_percent": 0,
"discount_idr": 0,
"tax_percent": 0,
"tax_idr": 0,
"total_idr": 140000,
"min_gb": 1,
"max_gb": 10240
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404Unknown or unavailable product;
details.availablelists the products on sale. - 422A parameter is missing or wrong;
fieldsnames each one. - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Countries a product can target
/locations/countriesCountry codes (ISO 3166-1 alpha-2, lowercase) with the number of addresses where known. count is null when unknown; counts_available says whether counts were read and as_of when. Use the code for country targeting.
Parameters
productrequiredThe product's slug.
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/locations/countries?product=residential" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"product": {
"slug": "residential",
"name": "Residential"
},
"countries": [
{
"code": "us",
"name": "United States",
"count": 1152000
},
{
"code": "id",
"name": "Indonesia",
"count": 96000
}
],
"counts_available": true,
"as_of": "2026-10-22T01:00:00+00:00"
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404Unknown or unavailable product;
details.availablelists the products on sale. - 422A parameter is missing or wrong;
fieldsnames each one. - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
States, cities or networks in a country
/locations/{dimension}The states, cities or networks (ASN) a product can target inside the countries you name. available: false means the product cannot target that level (for example ASN on Residential Plus) and the list is empty. Residential Plus takes exactly one country per call.
Parameters
dimensionrequiredWhich list:states,citiesorasns.productrequiredThe product's slug.countryrequiredOne or more country codes, comma-separated (usorus,de).qoptionalOnly entries whose code or name contains this text.limitoptionalAt most this many entries, 1 to 500 (default 200).truncatedsays whether more exist.
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/locations/states?product=residential&country=us" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"product": {
"slug": "residential",
"name": "Residential"
},
"dimension": "states",
"countries": [
"us"
],
"available": true,
"options": [
{
"code": "california",
"name": "California",
"count": 48000
},
{
"code": "texas",
"name": "Texas",
"count": 36000
}
],
"total": 51,
"truncated": false,
"counts_available": true,
"as_of": "2026-10-22T01:00:00+00:00"
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404Unknown or unavailable product;
details.availablelists the products on sale. - 422A parameter is wrong, or Residential Plus got more than one country (
single_country_required). - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Your proxy accounts
/proxy-accountsEvery proxy account with its product, status, quota, features and limits, in the order they were made. Quota is kept fresh in the background; quota.updated_at says when it was last read.
Parameters
productoptionalOnly accounts holding this product.statusoptionalOnly accounts in this status.pageoptionalPage number, from 1.per_pageoptionalAccounts per page, 1 to 200 (default 50).
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/proxy-accounts" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": [
{
"id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"products": [
{
"slug": "residential",
"name": "Residential"
}
],
"status": "active",
"quota": {
"total_mb": 10240,
"used_mb": 3072,
"remaining_mb": 7168,
"updated_at": "2026-10-22T02:10:00+00:00"
},
"features": {
"targeting": {
"country": true,
"state": true,
"city": true,
"asn": true,
"zip": false,
"exclude_country": true
},
"targeting_cost_multiplier": {
"state": 2,
"city": 2,
"asn": 2
},
"sticky_sessions": true,
"protocols": [
"http",
"https",
"socks5"
],
"ip_whitelist": true,
"blocked_hosts": true,
"password_reset": true
},
"limits": {
"whitelist_max": 5,
"credential_resets_left_today": 3
},
"created_at": "2026-10-01T08:00:00+00:00"
}
],
"meta": {
"page": 1,
"per_page": 50,
"total": 1,
"last_page": 1
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 422A parameter is missing or wrong;
fieldsnames each one. - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
One proxy account
/proxy-accounts/{id}The same fields as one entry of the list.
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"products": [
{
"slug": "residential",
"name": "Residential"
}
],
"status": "active",
"quota": {
"total_mb": 10240,
"used_mb": 3072,
"remaining_mb": 7168,
"updated_at": "2026-10-22T02:10:00+00:00"
},
"features": {
"targeting": {
"country": true,
"state": true,
"city": true,
"asn": true,
"zip": false,
"exclude_country": true
},
"targeting_cost_multiplier": {
"state": 2,
"city": 2,
"asn": 2
},
"sticky_sessions": true,
"protocols": [
"http",
"https",
"socks5"
],
"ip_whitelist": true,
"blocked_hosts": true,
"password_reset": true
},
"limits": {
"whitelist_max": 5,
"credential_resets_left_today": 3
},
"created_at": "2026-10-01T08:00:00+00:00"
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Read the latest quota now
/proxy-accounts/{id}/refreshReads this account's quota live. 200: read now. 202 with Retry-After: the read was queued; call GET /proxy-accounts/{id} after the wait. 503 refresh_failed: try again later. At most 10 per minute per account; the list is kept fresh in the background, so this is rarely needed.
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).productoptionalFor an account holding more than one product: which one. Without it, the account's first product.
Example request
curl -sS -X POST "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024/refresh" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"account": {
"id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"products": [
{
"slug": "residential",
"name": "Residential"
}
],
"status": "active",
"quota": {
"total_mb": 10240,
"used_mb": 3072,
"remaining_mb": 7168,
"updated_at": "2026-10-22T02:10:00+00:00"
},
"features": {
"targeting": {
"country": true,
"state": true,
"city": true,
"asn": true,
"zip": false,
"exclude_country": true
},
"targeting_cost_multiplier": {
"state": 2,
"city": 2,
"asn": 2
},
"sticky_sessions": true,
"protocols": [
"http",
"https",
"socks5"
],
"ip_whitelist": true,
"blocked_hosts": true,
"password_reset": true
},
"limits": {
"whitelist_max": 5,
"credential_resets_left_today": 3
},
"created_at": "2026-10-01T08:00:00+00:00"
},
"refreshed": true,
"pending": false
}
}Other responses
- 202Queued: read the account again after
Retry-Afterseconds. - 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 429Too many calls. Wait
Retry-Afterseconds. - 503The quota could not be read (
refresh_failed), or the API is switched off.
Traffic used over time
/proxy-accounts/{id}/usageTraffic used, from our own records: one point per day or per hour (UTC) with traffic, plus totals. Windows of up to 92 days; without dates, the last 7 days. Hours without traffic are left out.
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).fromoptionalFirst day,YYYY-MM-DD(UTC).tooptionalLast day,YYYY-MM-DD(UTC).intervaloptionalday(default) orhour.productoptionalFor an account holding more than one product: which one. Without it, the account's first product.
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024/usage" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"from": "2026-10-16",
"to": "2026-10-22",
"interval": "day",
"points": [
{
"at": "2026-10-21",
"used_mb": 512.5
},
{
"at": "2026-10-22",
"used_mb": 128
}
],
"totals": {
"used_mb": 640.5,
"days": 7,
"avg_mb_per_day": 91.5,
"peak_hour": {
"at": "2026-10-21T14:00:00+00:00",
"used_mb": 96.25
}
}
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 422A bad date,
fromafterto, or a window longer than 92 days (invalid_range). - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Host, ports, username and password
/proxy-accounts/{id}/connectionWhat to put into your software, with a ready connection_string. ports.rotating: a new address for every request. ports.sticky: a range of ports that each keep one address (30 minutes by default). Residential Plus: each port in ports.sticky is its own address, held as long as the IP rotation set for the account on the website; the password carries the targeting as wifi;<country>;<region>;<city>; (empty = anywhere). The answer carries the live password: keep it, and your key, private.
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).productoptionalFor an account holding more than one product: which one. Without it, the account's first product.
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024/connection" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"account_id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"host": "proxy.growtechcentral.com",
"username": "a1b2c3d4e5",
"password": "Pw7x9k2LmQ",
"ports": {
"rotating": {
"http": 823,
"socks5": 824
},
"sticky": {
"from": 10000,
"to": 29999
}
},
"protocols": [
"http",
"https",
"socks5"
],
"connection_string": "http://a1b2c3d4e5:[email protected]:823"
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 409The account is still being set up. Try again in a minute.
- 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Ready-to-use proxy lines
/proxy-accounts/{id}/proxy-listUp to 1000 lines in the format you choose, with targeting built in. session=rotating (default): every line is the same rotating endpoint, a new address per request. session=sticky: one port per line, each port keeps its address (main products: 30 minutes by default; Residential Plus: as long as the IP rotation set for the account on the website). Targeting the product cannot do is refused with not_supported and details.control naming it; ttl (session length) is not offered yet. cost_multiplier and note say when state, city or ASN targeting makes traffic use quota faster. The lines carry the live password: keep them private.
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).productoptionalFor an account holding more than one product: which one. Without it, the account's first product.countryoptionalCountry code (ISO 3166-1 alpha-2). Needed beforestate,cityorasn.stateoptionalA state code from GET /locations/states.cityoptionalA city code from GET /locations/cities.asnoptionalA network number from GET /locations/asns.sessionoptionalrotating(default) orsticky.protocoloptionalhttp(default) orsocks5. On main products rotating SOCKS5 lines use their own port; sticky ports serve both.countoptionalHow many lines, 1 to 1000 (default 1).formatoptionalLine format (defaulthost:port:user:pass).urlgiveshttp://user:pass@host:portorsocks5://…;host:portis for addresses on the account's IP whitelist.ttloptionalSession length. Not offered yet: answersnot_supported.
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024/proxy-list" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"account_id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"session": "sticky",
"protocol": "http",
"format": "host:port:user:pass",
"targeting": {
"country": "us",
"state": "california",
"city": null,
"asn": null
},
"cost_multiplier": 2,
"note": "State, city or ASN targeting on Residential uses quota at 2 times the normal rate: 1 GB of traffic counts as 2 GB.",
"count": 2,
"lines": [
"proxy.growtechcentral.com:10000:a1b2c3d4e5__cr.us;state.california:Pw7x9k2LmQ",
"proxy.growtechcentral.com:10001:a1b2c3d4e5__cr.us;state.california:Pw7x9k2LmQ"
]
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 409The account is still being set up. Try again in a minute.
- 422A parameter is wrong (
validation_failed), or the product cannot do what was asked (not_supported;details.controliscountry,state,city,asn,sticky_sessionsorttl). - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Get a new IP
/proxy-accounts/{id}/rotate-ipOne call for a new address on every product. Main products (method: new_session): answers new connection details with a fresh session on the sticky port; use them instead of the old ones (optional country, state, city, asn in the body keep your targeting). Residential Plus (method: session_reset): the ports you name (ports, or every port when left out) get new addresses; your connection details stay the same. Rotating ports already give a new address on every request. At most 10 per minute per account.
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).productoptionalFor an account holding more than one product: which one. Without it, the account's first product.
Request body (JSON)
Main products: optional targeting. Residential Plus: optional ports (9000–18999, up to 64).
{
"country": "us"
}Example request
curl -sS -X POST "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024/rotate-ip" \
-H "Authorization: Bearer gtu_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"country":"us"}'Example response
{
"data": {
"account_id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"method": "new_session",
"session_id": "3f9a1c7b2e04",
"connection": {
"host": "proxy.growtechcentral.com",
"port": 10000,
"username": "a1b2c3d4e5__cr.us;sessid.3f9a1c7b2e04",
"password": "Pw7x9k2LmQ",
"connection_string": "http://a1b2c3d4e5__cr.us;sessid.3f9a1c7b2e04:[email protected]:10000"
},
"cost_multiplier": 1,
"note": null,
"at": "2026-10-22T12:30:00+00:00"
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 409The account is still being set up. Try again in a minute.
- 422A parameter is wrong (
validation_failed), or it does not apply to the product (not_supported:portson a main product, targeting on Residential Plus). - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
New username and password
/proxy-accounts/{id}/credentials/resetReplaces the account's username and password; the old pair stops working at once. Answers with the new connection details. At most 3 per account and 5 per customer in 24 hours (resets_left_today). Not on Residential Plus (not_supported).
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).productoptionalFor an account holding more than one product: which one. Without it, the account's first product.
Example request
curl -sS -X POST "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024/credentials/reset" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"account_id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"host": "proxy.growtechcentral.com",
"username": "f6g7h8i9j0",
"password": "Nq4r8s1TzW",
"ports": {
"rotating": {
"http": 823,
"socks5": 824
},
"sticky": {
"from": 10000,
"to": 29999
}
},
"protocols": [
"http",
"https",
"socks5"
],
"connection_string": "http://f6g7h8i9j0:[email protected]:823",
"resets_left_today": 2
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 409The account is still being set up (
not_ready), or a reset is already running (reset_in_progress). - 422The product does not offer this setting (
details.control); see the product'sfeatures. - 429Too many calls (
rate_limited), or the daily reset limit was reached (reset_limit_account_reached,reset_limit_user_reached). - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
IP addresses allowed without a password
/proxy-accounts/{id}/whitelistThe addresses that may use this account without a username and password, and how many fit (max_ips, null when the product sets none).
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).productoptionalFor an account holding more than one product: which one. Without it, the account's first product.
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024/whitelist" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"account_id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"ips": [
"203.0.113.7",
"203.0.113.9"
],
"max_ips": 5
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 409The account is still being set up. Try again in a minute.
- 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Allow an IP address
/proxy-accounts/{id}/whitelistAdds one public IPv4 address. Answers 201 with the whole list. A full list answers whitelist_limit_reached; remove an address first.
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).productoptionalFor an account holding more than one product: which one. Without it, the account's first product.
Request body (JSON)
The address to allow.
{
"ip": "203.0.113.9"
}Example request
curl -sS -X POST "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024/whitelist" \
-H "Authorization: Bearer gtu_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"ip":"203.0.113.9"}'Example response
{
"data": {
"account_id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"ips": [
"203.0.113.7",
"203.0.113.9"
],
"max_ips": 5
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 409The account is still being set up. Try again in a minute.
- 422Not a public IPv4 address (
invalid_ip), the list is full (whitelist_limit_reached), or the proxy network refused the address (request_refused, for example one already used elsewhere). - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Remove an allowed IP address
/proxy-accounts/{id}/whitelistRemoves one address, sent as {"ip": …} in the body or as ?ip=. Answers with the list that is left.
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).productoptionalFor an account holding more than one product: which one. Without it, the account's first product.ipoptionalThe address to remove (instead of the body).
Request body (JSON)
The address to remove.
{
"ip": "203.0.113.9"
}Example request
curl -sS -X DELETE "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024/whitelist" \
-H "Authorization: Bearer gtu_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"ip":"203.0.113.9"}'Example response
{
"data": {
"account_id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"ips": [
"203.0.113.7",
"203.0.113.9"
],
"max_ips": 5
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 409The account is still being set up. Try again in a minute.
- 422A parameter is missing or wrong;
fieldsnames each one. - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Sites this account cannot reach
/proxy-accounts/{id}/blocked-hostsThe domain names blocked for this account. Not on Residential Plus (not_supported).
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).productoptionalFor an account holding more than one product: which one. Without it, the account's first product.
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024/blocked-hosts" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": {
"account_id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"hosts": [
"ads.example.com",
"tracker.example.net"
]
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 409The account is still being set up. Try again in a minute.
- 422The product does not offer this setting (
details.control); see the product'sfeatures. - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Replace the blocked sites
/proxy-accounts/{id}/blocked-hostsReplaces the whole list with the one you send: up to 100 domain names; [] clears it. Not on Residential Plus (not_supported).
Parameters
idrequiredThe proxy account's id (from GET /proxy-accounts).productoptionalFor an account holding more than one product: which one. Without it, the account's first product.
Request body (JSON)
The full new list.
{
"hosts": [
"ads.example.com",
"tracker.example.net"
]
}Example request
curl -sS -X PUT "https://www.growtechcentral.com/api/user/v1/proxy-accounts/1024/blocked-hosts" \
-H "Authorization: Bearer gtu_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"hosts":["ads.example.com","tracker.example.net"]}'Example response
{
"data": {
"account_id": 1024,
"product": {
"slug": "residential",
"name": "Residential"
},
"hosts": [
"ads.example.com",
"tracker.example.net"
]
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 404No such proxy account, or it is not yours (
not_found); or the account holds no such product (product_not_on_account). - 409The account is still being set up. Try again in a minute.
- 422A host is not a domain name (
validation_failed,fieldsnames it ashosts.N), or the product cannot block sites (not_supported). - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Your GB purchases
/ordersYour proxy GB purchases, newest first. status: pending and processing (on its way), completed (the GB is on the account), failed (stopped; our team checks it), cancelled (stopped before any GB was added).
Parameters
pageoptionalPage number, from 1.per_pageoptionalOrders per page, 10 to 50 (default 20).
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/orders" \ -H "Authorization: Bearer gtu_YOUR_KEY"
Example response
{
"data": [
{
"id": 881,
"order_id": 5521,
"product": {
"slug": "residential",
"name": "Residential"
},
"gb": 10,
"price_idr": 140000,
"status": "completed",
"applied_at": "2026-10-20T03:00:12+00:00",
"failed_at": null,
"created_at": "2026-10-20T02:59:40+00:00"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 1,
"last_page": 1
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 403The key is limited to other IP addresses (
ip_not_allowed). A key made before 23 Oct 2026 with limited access can also getinsufficient_scope: make a new key for full access. - 422A parameter is missing or wrong;
fieldsnames each one. - 429Too many calls. Wait
Retry-Afterseconds. - 503The API is switched off for maintenance (
api_disabled), or the proxy network did not answer in time (temporarily_unavailable). Try again later.
Buy GB with your wallet
/ordersBuys gb GB of a product with your wallet balance, at the website's prices, exactly as the website does: the same order, the same wallet debit, the same top-up of your proxy account. Works only with a key whose "Allow buying GB" switch is on (Account → API key on the website; it starts off, and you can turn it on or off at any time): otherwise 403 purchase_not_allowed, and nothing is charged. While GrowTech has buying through the API turned off, every call answers 403 feature_disabled; buy on the website meanwhile. Without account_id the GB goes where a website purchase of that product goes; with it, to that proxy account. The Idempotency-Key header is required, one new value per purchase: a retry with the same Idempotency-Key and body never buys twice and answers the first result again (header Idempotent-Replayed: true); the same Idempotency-Key with another body answers 409 idempotency_conflict; while the first request still runs, 409 request_in_progress. Each Idempotency-Key is remembered for 30 days. A short wallet answers 402 insufficient_balance: top up on the website, then buy again with a new Idempotency-Key.
Parameters
Idempotency-KeyrequiredOne new value per purchase: 1 to 64 letters, digits or. _ - :. Reuse it only to retry the same purchase.
Request body (JSON)
What to buy.
{
"product": "residential",
"gb": 10
}Example request
curl -sS -X POST "https://www.growtechcentral.com/api/user/v1/orders" \
-H "Authorization: Bearer gtu_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"product":"residential","gb":10}'Example response
{
"data": {
"id": 882,
"order_id": 5522,
"invoice": "INV-20261022-ABCD1234",
"product": {
"slug": "residential",
"name": "Residential"
},
"gb": 10,
"account_id": null,
"status": "pending",
"paid": true,
"amount": {
"subtotal_idr": 140000,
"tax_idr": 0,
"total_idr": 140000
},
"wallet_balance_idr": 110000,
"created_at": "2026-10-22T13:05:00+00:00"
}
}Other responses
- 401The API key is missing, wrong, switched off or replaced.
- 402The wallet balance is not enough (
insufficient_balance). Nothing was charged. - 403This key's "Allow buying GB" switch is off (
purchase_not_allowed), or GrowTech has buying through the API turned off (feature_disabled). Nothing was charged. - 404Unknown product (
product_not_found), an account that is not yours (not_found), or an account that cannot take the product (product_not_on_account). - 409The key was used for another purchase (
idempotency_conflict), or a request with it is still running (request_in_progress, retry afterRetry-After). - 422No or a malformed
Idempotency-Key(idempotency_key_required,idempotency_key_invalid), or a wrong body (validation_failed). - 429Too many calls. Wait
Retry-Afterseconds. - 503Buying is paused on the website (
purchases_paused), or the API is switched off for maintenance (api_disabled).
Is the API up
/healthno keyNeeds no key. Answers {"status":"ok"} while the service runs, also while the API is switched off for maintenance; to test your key, call GET /me.
Parameters
No parameters.
Example request
curl -sS "https://www.growtechcentral.com/api/user/v1/health"
Example response
{
"status": "ok"
}Other responses
- 429Too many calls. Wait
Retry-Afterseconds.