> For the complete documentation index, see [llms.txt](https://docs.helodata.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.helodata.com/products/overview-2/quick-start.md).

# Quick start

## 1. Order ISP IPs

> No KYC is required to start. We may request verification later if your account triggers a risk review — see [ID verification](/account-and-billing/kyc.md).

1. Open **Dashboard → ISP → Order**.
2. Pick **country** (and **city** if the country supports it).
3. Pick **quantity** — minimum 1 IP, max 5,000 per order.
4. Pick **billing period** — monthly or annual.
5. Click **Order**. IPs are provisioned within 1–5 minutes for tier-1 countries, up to 24 hours for long-tail.

You'll receive an email when the batch is ready.

## 2. Download the list

1. Open **Dashboard → ISP → My IPs → {Batch}**.
2. Click **Download** and pick a format:
   * **`ip:port:user:pass`** (default) — one IP per line
   * **CSV** — columns `ip,port,user,pass,country,city,asn`
   * **JSON** — full metadata including ASN and city
   * **Proxifier / FoxyProxy / SwitchyOmega** — ready-to-import files

Or grab the list via API:

```bash
curl -H "Authorization: Bearer API_KEY" \
     "https://api.helodata.com/v1/isp/batches/{batch_id}/ips?format=plain"
```

Full reference: [Proxy list format](/products/overview-2/proxy-list-format.md).

## 3. Send a request

Use any single IP from your list:

### curl

```bash
curl -x http://helo_s1a2b3c4d5e:PASSWORD@198.51.100.42:8000 \
     https://ipv4.icanhazip.com
```

The response should be exactly `198.51.100.42` — it's a static IP.

### Python (requests)

```python
import requests

PROXY = "http://helo_s1a2b3c4d5e:PASSWORD@198.51.100.42:8000"

r = requests.get(
    "https://ipv4.icanhazip.com",
    proxies={"http": PROXY, "https": PROXY},
    timeout=30,
)
print(r.text.strip())
```

### Node.js (undici)

```js
import { fetch, ProxyAgent } from "undici";

const agent = new ProxyAgent(
  "http://helo_s1a2b3c4d5e:PASSWORD@198.51.100.42:8000"
);
const res = await fetch("https://ipv4.icanhazip.com", { dispatcher: agent });
console.log((await res.text()).trim());
```

### Go (net/http)

```go
package main

import (
    "fmt"
    "io"
    "net/http"
    "net/url"
)

func main() {
    proxyURL, _ := url.Parse("http://helo_s1a2b3c4d5e:PASSWORD@198.51.100.42:8000")
    client := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)}}
    resp, _ := client.Get("https://ipv4.icanhazip.com")
    defer resp.Body.Close()
    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
```

### PHP (cURL)

```php
<?php
$ch = curl_init('https://ipv4.icanhazip.com');
curl_setopt_array($ch, [
    CURLOPT_PROXY          => 'http://198.51.100.42:8000',
    CURLOPT_PROXYUSERPWD   => 'helo_s1a2b3c4d5e:PASSWORD',
    CURLOPT_RETURNTRANSFER => true,
]);
echo trim(curl_exec($ch));
curl_close($ch);
```

## 4. Use the whole batch (rotation)

Load the list and pick the next IP per request. Simple round-robin:

```python
import itertools, requests

with open("isp.txt") as f:
    proxies = [line.strip() for line in f if line.strip()]

pool = itertools.cycle(proxies)                                  # ip:port:user:pass lines

def get(url):
    line = next(pool)
    ip, port, user, password = line.split(":", 3)
    p = f"http://{user}:{password}@{ip}:{port}"
    return requests.get(url, proxies={"http": p, "https": p}, timeout=30)
```

See [Client-side rotation](/products/overview-2/rotation.md) for more robust patterns.

## What's next

* [Proxy list format](/products/overview-2/proxy-list-format.md) — every format variant
* [Authentication](/products/overview-2/authentication.md) — switch to IP whitelist
* [IP management](/products/overview-2/ip-management.md) — replace dead IPs, refresh batches


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.helodata.com/products/overview-2/quick-start.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
