Skip to content
5-minute onboarding

Getting Started with ZentisLabs Proxies

This guide takes you from account creation to your first authenticated proxy request with enterprise-ready defaults. Follow the three steps below and you will be routing traffic through 100+ MIO residential IPs in under five minutes.

195+ countries 100+ MIO IPs Rotating & sticky sessions
1

Create your account

Sign up at zentislabs.com, verify your email with a 6-digit code, and log in to the dashboard.

2

Get your API key

Go to Settings, copy your API key (it is created for you), and store it somewhere safe.

3

Generate & use proxies

Use cURL, Python, or Node.js to route traffic through a proxy pool and verify geo/IP behavior immediately.

1Create Your Account

  1. Navigate to zentislabs.com/auth/register and sign up with your email
  2. Verify your email with the 6-digit code sent to your inbox
  3. Log in to the dashboard - verified accounts get 100 MB of Residential Basic free to test (eligibility checks apply)
  4. Explore the dashboard: Generate Proxy, Billing, Settings
Pro tip: Bookmark the dashboard - you'll use it to generate proxies and manage your account.

2Get Your API Key

  1. Open Dashboard → Settings
  2. Your API key is already there: every account gets one automatically
  3. Copy it - it starts with zl_live_ followed by 48 hex characters
  4. Store it securely. If it ever leaks, click Regenerate and the old key stops working instantly
Environment variable
# Add to your .env or secrets manager
export ZENTISLABS_API_KEY="zl_live_a1b2c3d4e5f6..."

3Send Your First Proxy Request

Choose your preferred language below. Each example resolves a residential proxy in Germany and makes a test request.

cURL

bash
# Use your proxy credentials from the dashboard
# Basic plan: targeting goes in the password (_country-de = Germany)
curl -x "http://USERNAME:PASSWORD_country-de@basic.resi.zentislabs.com:12321" \
"https://httpbin.org/ip"

Python

python
import requests
# Use your proxy credentials from the dashboard (_country-de = Germany)
PROXY = "http://USERNAME:PASSWORD_country-de@basic.resi.zentislabs.com:12321"
proxies = {"http": PROXY, "https": PROXY}
response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=30)
print(f"Your proxy IP: {response.json()['origin']}")

Node.js

typescript
import axios from 'axios';
import { HttpsProxyAgent } from 'https-proxy-agent';
// Use your proxy credentials from the dashboard (_country-de = Germany)
const PROXY_URL = 'http://USERNAME:PASSWORD_country-de@basic.resi.zentislabs.com:12321';
const agent = new HttpsProxyAgent(PROXY_URL);
const { data } = await axios.get('https://httpbin.org/ip', {
httpsAgent: agent
});
console.log(`Your proxy IP: ${data.origin}`);

Validate the Response

Each example prints your proxy's exit IP. To generate lines from code instead of copying them from the dashboard, call POST https://api.zentislabs.com/api/v1/proxies/generate with your API key and a body such as {"provider": "basic", "country": "DE", "count": 2}. A successful call returns ready-to-use lines; split each one on its first three colons into host, port, username and password:

json - POST /api/v1/proxies/generate
{
"success": true,
"proxies": [
"basic-eu.resi.zentislabs.com:12321:USERNAME:PASSWORD_country-de",
"basic-eu.resi.zentislabs.com:12321:USERNAME:PASSWORD_country-de"
]
}

host

Your plan's gateway, picked by region (here basic-eu.resi.zentislabs.com). Sticky lines use a single gateway IP so the session keeps its exit IP.

port

31112 for Light, 12321 for Basic, 61236 for Advanced. Mobile and datacenter lines carry their own port.

username

Your proxy username. On Advanced, targeting goes here: USERNAME-country-de.

password

Your proxy password. On Light and Basic, targeting goes here: _country-de, plus _session-… and _lifetime-… for sticky lines.

Common Issues & Troubleshooting

401

Unauthorized

Cause: Missing or invalid API key

Fix: Copy your current key from Dashboard → Settings, or regenerate it there.

403

Forbidden

Cause: No bandwidth on the plan you asked to generate

Fix: Top up that plan in the dashboard, then generate again.

429

Rate Limited

Cause: More than 3,000 API requests in a minute from one API key

Fix: Wait the number of seconds in the Retry-After header, then retry with exponential backoff.

503

Pool Exhausted

Cause: No available proxies in the requested geo

Fix: Expand geo-targeting (e.g., country-level instead of city), or try another proxy type.

Production Best Practices

Secure Credentials

Store API keys in environment variables or a secrets manager. Never hardcode keys in source code or expose them in frontend bundles.

Implement Retries

Use exponential backoff with jitter for 429/5xx errors. Retry with a new session ID to get a fresh IP when a target blocks you.

Monitor Usage

Track bandwidth in the dashboard or via GET /api/v1/usage to stay within budget, and log success and error rates in your own client to detect issues early.

Use Sessions Wisely

Use sticky sessions for multi-step workflows (login → checkout). Use rotating sessions for high-volume scraping to maximize IP diversity.